捕捉MySQL慢查询

性能剖析工具针对所有的查询做捕捉,慢查询日志只是捕获“慢”查询。在MySQL5.0及之前的版本中,慢查询日志的响应时间是秒,粒度太粗,MySQL5.1以后,功能逐渐被加强,可以通过设置long_query_time为0来捕捉所有的查询,响应的查询时间可以做到微秒级。

在MySQL当前版本中,慢查询日志是开销最低、精度最高的测量查询时间的工具,慢查询日志带来的开销几乎可以忽略不计,但是带来的是消耗大量的磁盘空间。长期开启注意部署日志轮转工具。

Percona Server的慢查询日志比MySQL官方版本记录了更多细节且有价值的信息。如查询执行计划、锁、I/O活动等。随业务场景进行加入分析。可以全局修改准对每个连接的long_query_time的阀值。

Percona Toolkit 的pt-query-digest可以避免权限不足,无法在服务器上记录查询的问题。通过-- processlist选项不断查看SHOW FULL PROCESSLIST的输出,记录查询第一次出现的时间和消失的时,快查询可能无法捕捉到。通过抓取TCP网络包,然后根据MySQL的客户端/服务端通信协议进行解析。可以先通过将网络包数据保存到磁盘,然后使用pt-query-digest的--type=tcpdump选项来解析并分析查询。此方法的精度比较高,并且可以捕获所有査询。还可以解析更高级的协议特性,比如可以解析二进制协议,从而创建并执行服务端预解析语句及压缩协议。另外还有一种方法,就是通过MySQLProxy代理层的脚本来记录所有査询,用的比较少。


你可能感兴趣的:(捕捉MySQL慢查询)