MySQL笔记-慢日志

默认关闭,除非需要查看慢sql日志,平时不要打开

以下设置都是临时有效,重启数据库后会失效,想要永久生效需要修改配置文件进行配置

查看慢查询日志状态及存储路径:

SHOW VARIABLES LIKE 'slow_query_log%'

slow_query_log ON
slow_query_log_file /var/lib/mysql/88eec0ff40aa-slow.log

打开慢查询日志:

SET GLOBAL slow_query_log=1

查看慢查询超时时间:

SHOW VARIABLES LIKE 'long_query_time%'

设置慢查询日志超时时间:

SET GLOBAL long_query_time=3    # 设置为3秒,需要重新连接或打开一个新的会话,才能查看新设置的超时时间

模拟一个慢查询sql,方便测试:

SELECT sleep(4);

查看有几条慢sql:

SHOW GLOBAL STATUS LIKE '%slow_queries%'

慢sql日志分析工具mysqldumpslow:

mysqldumpslow -t 10 /var/lib/mysql/VM_0_5_centos-slow.log        --查前十行

可以查询如下信息:

  • s:表示何种方式排序
  • c:访问次数
  • l:锁定时间
  • r:返回记录数
  • t:查询时间
  • al:平均锁定时间
  • ar:平均返回记录数
  • at:平均查询时间
  • t:返回前面多少条数据
  • g:后面搭配一个正则匹配模式,大小写不敏感

案例:

返回记录集最多的10个sql:

访问次数最多的10个sql:

按时间排序的前10个里面包含左连接的sql:

慢日志查询分析工具:pt-query-digest
安装:wget https://www.percona.com/downloads/percona-toolkit/2.2.16/RPM/percona-toolkit-2.2.16-1.noarch.rpm && yum localinstall -y percona-toolkit-2.2.16-1.noarch.rpm
命令:
查看服务器信息
pt-summary

查看磁盘开销使用信息
pt-diskstats

查看mysql数据库信息
pt-mysql-summary --user=root -password=123456

分析慢查询日志
pt-query-digest /data/mysql/data/db-3-12-slow.log

查询mysql从库和同步状态
pt-slave-find --host=localhost --user=root --password=123456

查看mysql死锁信息
pt-deadlock-logger --user=root --password=123456 localhost

从慢查询日志中分析索引使用情况
pt-index-usage slow_20131009.log

查找数据库表中重复的索引
pt-duplicate-key-checker --host=localhost --user=root --password=123456

查看mysql表和文件的当前IO开销:
pt-ioprofile

查找数据库里大于2G的表:
pt-find --user=root --password=123456 --tablesize +2G

查看表和索引大小并排序:
pt-find --user=root --password=123456 --printf "%T %D.%N " | sort -rn

显示查询时间大于60秒的查询:
pt-kill --user=root --password=123456 --busy-time 60 --print

kill掉大于60秒的查询
pt-kill --user=root --password=123456 --busy-time 60 --kill

原文地址:https://www.cnblogs.com/fanfan-90/p/13194077.html