另外也可以看到慢查询日志中详细记录的条目包含了SHOW PROFILE 和SHOW STATUS 所有的输出并且还有更多的信息所以通过ptquerydigest 发现坏查询后在慢查询日志中可以获得足够有用的信息查看ptquerydigest 的报告时其标题部分一般会有如下输出
可以通过这里的字节偏移值()直接跳转到日志的对应部分例如用下面这样的命令即可
这样就可以直接跳转到细节部分了另外ptquerydigest 能够处理Percona Server 在慢查询日志中增加的所有键值对并且会自动在报告中打印更多的细节信息
使用Performance Schema
在本书写作之际在MySQL 中新增的Performance Schema 表还不支持查询级别的剖析信息Performance Schema 还是非常新的特性并且还在快速开发中未来的版本中将会包含更多的功能尽管如此MySQL 的初始版本已经包含了很多有趣的信息例如下面的查询显示了系统中等待的主要原因
mysql> SELECT event_name count_star sum_timer_wait
> FROM events_waits_summary_global_by_event_name
> ORDER BY sum_timer_wait DESC LIMIT ;
++++
| event_name | count_star | sum_timer_wait |
++++
| innodb_log_file | | |
| Query_cache::COND_cache_status_changed | | |
| Query_cache::structure_guard_mutex | | |
| innodb_data_file | | |
| dict_table_stats | | |
++++
目前还有一些限制使得Performance Schema 还无法被当作一个通用的剖析工具首先它还无法提供查询执行阶段的细节信息和计时信息而前面提供的很多现有的工具都已经能做到这些了其次还没有经过长时间大规模使用的验证并且自身的开销也还比较大多数比较保守的用户还对此持有疑问(不过有理由相信这些问题很快都会被修复的)
最后对大多数用户来说直接通过Performance Schema 的裸数据获得有用的结果相对来说过于复杂和底层到目前为止实现的这个特性主要是为了测量当为提升服务器性能而修改MySQL 源代码时使用包括等待和互斥锁MySQL 中的特性对于高级用户也很有价值而不仅仅为开发者使用但还是需要开发一些前端工具以方便用户使用和分析结果目前就只能通过写一些复杂的语句去查询大量的元数据表的各种列这在使用过程中需要花很多时间去熟悉和理解
在MySQL 或者以后的版本中Performance Schema 将会包含更多的功能再加上一些方便使用的工具这样就更爽了而且Oracle 将其实现成表的形式可以通过SQL 访问这样用户可以方便地访问有用的数据但其目前还无法立即取代慢查询日志等其他工具用于服务器和查询的性能优化
返回目录高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
Oracle索引技术
[] []