使用性能剖析
当获得服务器或者查询的剖析报告后怎么使用?好的剖析报告能够将潜在的问题显示出来但最终的解决方案还需要用户来决定(尽管报告可能会给出建议)优化查询时用户需要对服务器如何执行查询有较深的了解剖析报告能够尽可能多地收集需要的信息给出诊断问题的正确方向以及为其他诸如EXPLAIN 等工具提供基础信息这里只是先引出话题后续章节将继续讨论
尽管一个拥有完整测量信息的剖析报告可以让事情变得简单但现有系统通常都没有完美的测量支持从前面的例子来说我们虽然推断出是临时表和没有索引的读导致查询的响应时间过长但却没有明确的证据因为无法测量所有需要的信息或者测量的范围不正确有些问题就很难解决例如可能没有集中在需要优化的地方测量而是测量了服务器层面的活动或者测量的是查询开始之前的计数器而不是查询开始后的数据
也有其他的可能性设想一下正在分析慢查询日志发现了一个很简单的查询正常情况下都非常快却有几次非常不合理地执行了很长时间手工重新执行一遍发现也非常快然后使用EXPLAIN 查询其执行计划也正确地使用了索引然后尝试修改WHERE条件中使用不同的值以排除缓存命中的可能也没有发现有什么问题这可能是什么原因呢?
如果使用官方版本的MySQL慢查询日志中没有执行计划或者详细的时间信息对于偶尔记录到的这几次查询异常慢的问题很难知道其原因在哪里因为信息有限可能是系统中有其他东西消耗了资源比如正在备份也可能是某种类型的锁或者争用阻塞了查询的进度这种间歇性的问题将在下一节详细讨论
返回目录高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
Oracle索引技术