1、查询参数
#慢日志开关, 0:关闭 1:开启 默认:关闭mysql> select @@slow_query_log;#慢日志文件, 默认位置: 数据目录/centos7-slow.logmysql> select @@slow_query_log_file;#慢查询时间,默认: 10秒#生产中可以先设置2秒, 先解决2秒的慢SQL语句, 在设置1秒, 循序渐进mysql> select @@long_query_time;#记录没有使用索引查询语句, 0:关闭 1:开启 默认:关闭mysql> select @@log_queries_not_using_indexes;
2、配置方式
2.1、在线修改
# 开启慢查询日志记录
mysql> set global slow_query_log=1;
# 记录0.1秒的慢sql语句
mysql> set global long_query_time=0.1;
# 记录没有使用索引查询语句
mysql> set global log_queries_not_using_indexes=1;
2.2、配置文件
vim /etc/my.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=/data/3307/slow/slow.log
long_query_time=0.1
log_queries_not_using_indexes
3、慢日志查看
慢日志属于文本格式, vim cat less 等直接可以查看
vim /data/3307/slow/slow.log
# Time: 2021-01-07T13:27:08.651556Z
# User@Host: root[root] @ localhost [] Id: 3
# Query_time: 2.304674 Lock_time: 0.024001 Rows_sent: 1000000 Rows_examined: 1000000
SET timestamp=1610026028;
select * from test.t100w;
# Time 和 SET timestamp 表示 慢SQL发生的日期时间
# Query_time: 2.304674 表示执行秒数
# 慢SQL日志痛点:
1.根据执行时间依次记录
2.会重复记录
4、慢日志分析
mysqldumpslow -s c -t 5 slow.log
-s的常用子参数有:
c: 相同查询以查询条数和从大到小排序。
t: 以查询总时间的方式从大到小排序。
l: 以查询锁的总时间的方式从大到小排序。
at: 以查询平均时间的方式从大到小排序。
al: 以查询锁平均时间的方式从大到小排序
# 优化顺序,有100条慢SQL,80条重复的,执行时间2s,2条未重复的,5s
# 先优化80条重复的,执行时间2s的慢SQL语句
5、扩展
分析工具: pt-query-digest
优点: 比 mysqldumpslow 显示更加详细
