当前位置:首页 > IT技术 > 数据库 > 正文

mysql17-sql优化-慢查询日志
2021-10-11 15:07:33

1.什么是慢查询日志
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,会被记录到慢查询日志中,long_query_time的默认值为10,意思是运行10秒以上的语句。默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置相关参数slow_query_log。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件

 

2.开启慢查询日志

2.1查看参数

SHOW VARIABLES LIKE '%slow_query_log%'

 如果是off,需要手动开启

 

2.2开启

SET  GLOBAL slow_query_log = 1

 

2.3查看时长阀值

SHOW VARIABLES LIKE '%long_query_time%'

 默认是10秒,但是我们不会允许sql这么长的时间,一般需要调小

 

2.4设置时长阀值

SET  GLOBAL long_query_time = 2

这里设置好了,打开新的连接窗口查看,值才会更新

 

3.查询当前系统中有多少条慢查询记录

show global status like '%Slow_queries%';

 

4.慢查询日志路径

SHOW VARIABLES LIKE '%slow_query_log_file%'

 

5.日志分析工具mysqldumpslow

在生产环境中,如果要手工分析慢查询日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。

 

5.1语法格式

mysqldumpslow [ OPTS... ] [ LOGS... ]  -- 后跟参数以及log文件的绝对地址;

 

5.2参数

1)s: 是表示按照何种方式排序;

2)c: 访问次数

3)l: 锁定时间

4)r: 返回记录

5)t: 查询行数

6)al:平均锁定时间

7)ar:平均返回记录数

8)at:平均查询时间

9)t:即为返回前面多少条的数据;

10)g:后边搭配一个正则匹配模式,大小写不敏感的;

 

5.3示例

1)得到返回记录集最多的10个SQL

mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log


2)得到访问次数最多的10个SQL

mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log


3)得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log


4)另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现爆屏情况

mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more

 

 



 

本文摘自 :https://www.cnblogs.com/