数据库运维
记录DBA学习成长历程

MySQL的slowlog慢日志

记录运行较慢的SQL语句的日志,定位低效SQL语句的工具日志

开启慢日志(默认没开启)

开关:
slow_query_log=1 
文件位置及名字 
slow_query_log_file=/data/mysql/slow.log
设定慢查询时间:
long_query_time=0.1
没走索引的语句也记录:
log_queries_not_using_indexes
vim /etc/my.cnf
slow_query_log=1   是否开启
slow_query_log_file=/data/mysql/slow.log  文件存放位置
long_query_time=0.1  满语句认定时间阈值
log_queries_not_using_indexes=1  不走索引的语句记录
systemctl restart mysqld

mysqldumpslow 分析慢日志

1.模拟满语句(t_100w表)
select * from t_100w limit 500000,10;
select * from t_100w limit 600000,10;
select * from t_100w limit 600000,10;
select * from t_100w limit 600000,10;
select * from t_100w limit 600000,10;
2.分析
mysqldumpslow -s c -t 10 /data/mysql/slow.log
-s排序条件
c次数
t表示top
3.第三方工具
mysqldumpslow
pt-query-digest
Anemometer基于pt-query-digest将MySQL慢查询可视化
https://www.percona.com/downloads/percona-toolkit/LATEST/
yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Digest-MD5
toolkit工具包中的命令:
./pt-query-diagest /data/mysql/slow.log

抓到慢日志处理思路

DQL语句-select语句:
分析执行计划,索引和语句
应急性对的show full processlist;
间歇性slow_log
DDL:
应急性show full processlist;看MDL,kill id

说明kill操作无法快速kill,怎么办?
使用pt-kill工具
processid-->SQL id-->OS id-->os kill
赞(2)
MySQL学习笔记 » MySQL的slowlog慢日志