- MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long _query time值 的SQL,则会被记录到慢查询日志中。
- 具体指运行时间超过long query _time值的SQL,则会被记录到慢查询日志中。**long query_time的默认值为10**, 意思是运行10秒以上的语句。
- 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条sq|执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒的sql,结合explain进行全面分析。
开启慢查询日志
SHOW VARIABLES LIKE '%slow_query_log%'
# 重启后会失效 不建议永久开启,会消耗性能。
set global slow_query_log = 1
查看当前多少秒算慢,设置新的阙值
```sql SHOW VARIABLES LIKE ‘long_query_time%’;
set global long_query_time=3;
需要重新连接或者新开一个回话才能看到修改值。
SHOW VARIABLES LIKE ‘long_query_time%’;
show global status like ‘%Slow_ queries%’; ```
查看慢查询日志
关于慢查询的参数slow_query_log_file ,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件host name slow.log ( 如果没有指定参数slow_query_log_file的话 )
日志分析工具mysqldumpshow
得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10 /ar/lib/mysql/xxx-slow.log
得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/xxx-slow.log
得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g “left join” /var/lib/mysql/xxx-slow.log
建议在使用这些命令时结合|和more使用,否则有可能出现爆屏情况
mysqldumpslow -s r -t 10 /var/ib/mysql/xxx-slow.log| more
从慢查询日志里面摘选一条慢查询日志,数据组成如下
- “Time: 2021-04-05T07:50:53.243703Z”:查询执行时间
- “User@Host: root[root] @ localhost [] Id: 3”:用户名 、用户的 IP 信 息、线程 ID 号
- “Query_time: 0.000495”:执行花费的时长【单位:毫秒】
- “Lock_time: 0.000170”:执行获得锁的时长
- “Rows_sent”:获得的结果行数“Rows_examined”:扫描的数据行数
- “SET timestamp”:这 SQL 执行的具体时间
- 最后一行:执行的 SQL 语句