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设定的阈值
慢查日志中记录的内容
用户信息和用户线程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?