# ms ###
# ms ################
# ms ################################################################
# s #
# s+
# Tables
# SHOW TABLE STATUS FROM `production ` LIKEInvitesNew\G
# SHOW CREATE TABLE `production ``InvitesNew\G
# EXPLAIN /*! PARTITIONS*/
SELECT InviteId InviterIdentifier FROM InvitesNew WHERE (InviteSetId = )
AND (InviteeIdentifier = ) LIMIT \G
查询报告的顶部包含了一些元数据包括查询执行的频率平均并发度以及该查询性能最差的一次执行在日志文件中的字节偏移值接下来还有一个表格格式的元数据包括诸如标准差一类的统计信息
接下来的部分是响应时间的直方图有趣的是可以看到上面这个查询在Query_timedistribution 部分的直方图上有两个明显的高峰大部分情况下执行都需要几百毫秒但在快三个数量级的部分也有一个明显的尖峰几百微秒就能执行完成如果这是Percona Server 的记录那么在查询日志中还会有更多丰富的属性可以对查询进行切片分析到底发生了什么比如可能是因为查询条件传递了不同的值而这些值的分布很不均衡导致服务器选择了不同的索引或者是由于查询缓存命中等在实际系统中这种有两个尖峰的直方图的情况很少见尤其是对于简单的查询查询越简单执行计划也越稳定
在细节报告的最后部分是方便复制粘贴到终端去检查表的模式和状态的语句以及完整的可用于EXPLAIN 分析执行计划的语句EXPLAIN 分析的语句要求所有的条件是文本值而不是指纹替代符所以是真正可直接执行的语句在本例中是执行时间最长的
一条实际的查询
确定需要优化的查询后可以利用这个报告迅速地检查查询的执行情况这个工具我们经常使用并且会根据使用的情况不断进行修正以帮助提升工具的可用性和效率强烈建议大家都能熟练使用它MySQL 本身在未来或许也会有更多复杂的测量点和剖析工具但在本书写作时通过慢查询日志记录查询或者使用ptquerydigest 分析tcpdump的结果是可以找到的最好的两种方式
返回目录高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
Oracle索引技术
[] []