一次 group by + order by 性能优化分析 最近通过一个日志表做排行的时候发现特别卡,最后问题得到了解决,梳理一些索引和MySQL执行过程的经验,但是最后还是有5个谜题没解开,希望大家帮忙解答下. 主要包含如下知识点 用数据说话证明慢日志的扫描行数到底是如何统计出来的 从 group by 执行原理找出优化方案 排序的实现细节 gdb 源码调试 背景 需要分别统计本月.本周被访问的文章的 TOP10.日志表如下 CREATE TABLE `article_rank` ( `id`…
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER 查询性能优化——分析事务与锁(四) (四)未检测到的分布式死锁 某应用程序持有数据库资源,开启事务之后又与用户交互,而在与用户的交互过程中出现了错误,导致数据库资源迟迟不能释放.SQL SERVER 2005/2008 动态管理视图sys.dm_exec_requests提供相关信息,该SESSIO…
前面 2 篇 golang 性能优化分析系列文章: golang 性能优化分析工具 pprof (上) golang 性能优化分析工具 pprof (下) 一.基准测试 benchmark 简介 在 golang 中,可以通过 benchmark 基准测试来测试代码性能.基准测试主要是通过测试 cpu 和内存的效率问题,来评估被测试代码的性能. 基准测试的指标: 程序所花费的时间 内存使用的情况 cpu 使用情况 基准测试文件名和函数规定: go 基准测试文件都是以 _test.go 结尾,和单…
本文通过分析ubifs的mount.read.write和commit流程,挖掘ubifs背后的设计决策和性能优化手段,并结合自身产品的特点,给出一些读写性能改进方案.   1.     ubifs mount流程     mount过程就是初始化对象的过程.这其中包括上层(vfs层.页缓存层.通用块层)的回调接口的注册,从设备中获取相关信息(super block, master node,log,orphan, index node),初始化ubifs_info.TNC.LPT等内部对象,并…
1.order by优化 2.group by优化 3.Dinstinct 优化 1.order by优化 实现方式: 1. 根据索引字段排序,利用索引取出的数据已经是排好序的,直接返回给客户端: 2. 没有用到索引,将取出的数据进行一次排序操作后返回给客户端. EXPLAIN SELECT m.id,m.subject,c.content FROM group_message m,group_message_content c WHERE m.group_id = 1 AND m.id = c…
问题SQL: select p.person_id as personId, p.person_name as personName, p.native_place as nativePlace, ci.company_name as companyName, pp.seal_number as sealNumber, GROUP_CONCAT(pp.major) as major, pp.register_name as registerName from qyt_person p left…
概要回顾 之前看过<高性能mysql>对mysql数据库有了系统化的理解,虽然没能达到精通,但有了概念,遇到问题时会有逻辑条理的分析; 这回继上次sql分析结果的一个继续延伸分析,我拿了; 备注:分析(除sql基本优化过程外)这个过程并定位到具体问题,给出针对性的解决方案,是一个非常漫长的过程,需要一个个的去排除和论证的过程:当对来说十分枯燥和窘境,但成功了就是一非常大的收获和经验: -- ③ 优化前 select p.record_data,p.cooperation_name,p.coop…
概要 之前看过<高性能mysql>对mysql数据库有了系统化的理解,虽然没能达到精通,但有了概念,遇到问题时会有逻辑条理的分析; 问题 问题:公司xxx页面调用某个接口时,loading数秒,之后返回结果集不完整: 分析思路 查看服务A端日志,日志并没有发现error;但发现该API接口还调用了另外一个服务B的API接口,并且返回内容和预期返回结果不匹配(返回结果不完整),将问题定位到服务B端; 查看服务B端日志发现,偶发性的报如下error,但不报error时返回结果集依然存在不完整; o…
一.SQL性能下降的原因 查询语句问题,各种连接.子查询 索引失效(单值索引.复合索引) 服务器调优及各个参数设置(缓冲.线程池等) 二.索引 排好序的快速查找数据结构 1. 索引分类 单值索引 一个索引只包含单个列,一个表可以有多个 复合索引 一个索引包含多个列 唯一索引 索引的值必须唯一,但是允许空值 默认使用B+树索引,除B+树索引外,还有哈希索引(hash index)等 2. 索引结构 B-Tree 索引 Hash 索引 Full-Text 索引 R-Tree 索引 B-Tree 示意…
本文由 伯乐在线 - 鸭梨山大 翻译,sunbiaobiao 校稿.未经许可,禁止转载!英文出处:gokulkrishh.github.io.欢迎加入翻译小组. 如果你的网站在1000ms内加载完成,那么会有平均一个用户停留下来.2014年,平均网页的大小是1.9MB.看下图了解更多统计信息. 网站的核心内容需要在1000ms内呈现出来.如果失败了,用户将永远不会再访问你的网站.通过降低页面加载的时间,很多著名公司的收入和下载量有显著的提升.比如 Walmart 每降低100ms的加载时间, 他…