日常的项目中经常会遇到各种各样的慢SQL查询,对于如何查找到慢SQL,MySQL提供了一些配置选项,可以帮助我们即使的查找到项目中的慢SQL。
查找慢SQL的配置参数
slow_query_log: 该参数表示是否开启慢SQL查询日志。在mysql中,我们可以通过以下命令来查看和修改该变量的状态:
show variables like '%slow_query_log%' #查询该变量在MySQL中当前的状态。
set slow_query_log = ON/OFF #开启慢查询监控ON,关闭慢查询监控OFF
long_query_time:设置该参数,可以规定执行多长时间的SQL为慢SQL。
show variables like '%long_query_time%' #查询该变量在MySQL中的状态
set long_query_time = 6 #设置SQL执行时间超过6S,就当作慢SQL输出
slow_query_log_file:设置该参数,可以将慢SQL输出到指定的规定的日志文件。
show variables like '%slow_query_log_file%' #查询该变量在MySQL中的状态
set slow_query_log_file = /home/admin/mysql/log/slow_sql.log #指定慢SQL输出的日志文件
log_queries_not_using_indexes:该参数设置为ON,可以输出所有未使用索引的SQL语句。
show variables like 'log_queries_not_using_indexes' #查询该变量在MySQL中的状态
set log_queries_not_using_indexes = ON/OFF #设置该变量值打开或关闭
log_output:可以通过该参数,指定慢SQL输出到表或文件中。如果输出到表中在mysql.slow_log表中可以查看。
show variables like 'log_output' #查询该变量在MySQL中的状态
set log_output = table/FILE #设置慢SQL输出到table或file
set log_output = 'table,FILE' #设置慢SQL同时输出到table和file
慢SQL分析命令
mysqldumpslow:该命令可以很好的帮助我们分析慢SQL输出日志文件中的SQL语句。下面列出经常使用的命令参数:
al,平均锁定时间
ar,平均返回记录时间
at,平均查询时间
c,计数
l,锁定时间
r,返回记录
t,查询时间
以上为显示参数
-s,order的顺序
-t,是top n的意思,即为返回前多少条的数据
-g,后面可以写一个正则匹配模式,大小写不敏感
下面我们来看一个简单的事例
# 执行mysqldumpslow命令时,需要在mysql的bin目录下执行。
mysqldumpslow t r l -t 10 -g "join" /home/admin/mysql/log/slow_log.log
网友评论