MySQL 慢日志
慢日志分析工具
官方自带工具:mysqldumpslow
percona工具:pt-query-digest
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
相关参数
系统变量 默认值 说明
slow_query_log OFF 是否开启慢查询日志
slow_query_log_file 机器名-slow.log 慢日志问文件路径
long_query_time 10 制定慢查询阈值, 单位是秒,且当版>=5.5.X,支持毫秒。例如0.5即为500ms大于该值,不包括值本身。例如该值为2,则执行时间正好等于2的SQL语句不会记录
log_queries_not_using_indexes OFF 将没有使用索引的SQL记录到慢查询日志 ,如果一开始因为数据少,查表快,耗时的SQL语句没被记录,当数据量大时,该SQL可能会执行很长时间,需要测试阶段就要发现问题,减小上线后出现问题的概率
log_throttle_queries_not_using_indexes 0 限制每分钟内,在慢查询日志中,去记录没有使用索引的SQL语句的次数;版本需要>=5.6.X ,因为没有使用索引的SQL可能会短时间重复执行,为了避免日志快速增大,限制每分钟的记录次数
min_examined_row_limit 默认0 扫描记录少于改值的SQL不记录到慢查询日志 (结合去记录没有使用索引的SQL语句的例子,有可能存在某一个表,数据量维持在百行左右,且没有建立索引。这种表即使不建立索引,查询也很快,扫描记录很小,如果确定有这种表,则可以通过此参数设置,将这个SQL不记录到慢查询日志)
log_slow_admin_statements OFF 记录超时的管理操作SQL到慢查询日志,比如ALTER/ANALYZE /CHECK /OPTIMIZE/REPAIR TABLE
log_output FILE 慢查询日志的格式,[FILE 、 TABLE 、 NONE],默认是FILE;版本>=5.5如果设置为TABLE,则记录的到mysql.slow_log
log_slow_slave_statements FALSE 在从服务器上开启慢查询日志
log_timestamps 写入时区信息。可根据需求记录UTC时间或者服务器本地系统时间
注意情况1
--log-short-format=true
如果mysqld启动时指定了–log-short-format参数,以精简的格式输出慢日志内容
注意情况2
log-queries-not-using-indexes=on
log_throttle_queries_not_using_indexes = 10 :
如果启用了以上两个参数,每分钟超过log_throttle_queries_not_using_indexes 配置的未使用索引的慢日志将会被抑制,被抑制的信息会被汇总,每分钟输出一次,格式如下:
throttle: 14 'index not used' warning(s) suppressed.;
1
建议1 :如果出现大量的index not used,建议关闭log-queries-not-using-indexes 参数 ,因为不使用索引索引的SQL,可能有些是真的是慢SQL,但是因为不使用索引的SQL量比较大,这部分的SQL 信息就没有输出,导致没有抓取到慢SQL
建议2:min_examined_row_limit 与 log-queries-not-using-indexes 配合使用。 min_examined_row_limit 扫描记录少于改值的SQL不记录到慢查询日志 ,结合去记录没有使用索引的SQL语句的例子,有可能存在某一个表,数据量维持在百行左右,且没有建立索引。这种表即使不建立索引,查询也很快,扫描记录很小,如果确定有这种表,则可以通过此参数设置,将这个SQL不记录到慢查询日志
慢日志分析工具
官方自带工具:mysqldumpslow
mysqldumpslow slow.log
1
注:如果慢日志过大,可以将文件切割成多个小文件,再统计
percona工具:pt-query-digest
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




