7.2慢查询日志介绍

磁盘IO和存储日志所需的磁盘空间

存储慢查询日志需要大量的磁盘空间,

若要存储全部的慢查询日志,日志大小可以达到几百G~几T的数据

故我们需要对记录到慢查询日志的sql进行控制,控制的参数分别如下:

  • slow_query_log启动停止记录慢查日志on/off 该参数是一个动态参数,变更即生效

set global by

通过脚本来定时的开关

  • slow_query_log_file :指定慢查日志的存储路径及文件。若不指定,模板将日志保存在Mysql的数据目录中。强烈建议指定该参数,将日志存储和数据存储分开存储

  • long_query_time:指定记录慢查日志SQL执行时间的阈值,只有SQL执行时间超过阈值的SQL才会被记录到日志中,单位为s,默认值为10S,通常改为0.001秒可能比较合适

和二进制日志不同,慢查日志会记录所有的符合条件的SQL包括查询语句、数据修改语句、已经回滚的SQL

  • log_queries_not_using_indexes 是否记录未使用索引的SQL,若开启,只要是未使用索引的SQL都会被记录,即使SQL执行时间小于long_query_time设定的阈值

set global slow_query_log=on;

慢查日志中记录的内容

用户信息和用户线程ID号

SQL执行使用时间

执行SQL所使用锁的时间

SQL所返回数据的行数

和扫描的数据行数

执行SQL的时间

SQL语句

常用的慢查日志分析工具

mysqldumpslow

汇总除查询条件外其他完全相同的SQL

并将分析结果按照参数中所指定的顺序输出

mysqldumpslow -s r -t 10 slow-mysql.log

指定按哪种排序方式输出结果:-s order (c,t,l,r,at,al,ar)

c:总次数

t:总时间

l:锁的时间

r:总数据行

at,al,ar:t,l,r平均数 例如at =总时间/总次数

-t top 指定取前几条作为结束输出

pt-query-digest

pt-query-digest \

--explain h=127.0.0.1,u=root,p=p@ssW0rd \

slow-mysql.log

pt-query-digest --explain h=127.0.0.1,u=root,p=p@ssW0rd slow-mysql.log > slow.rep

Last updated

Was this helpful?