MySQL系列 -- 查找慢SQL

    日常的项目中经常会遇到各种各样的慢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

你可能感兴趣的:(MySQL系列 -- 查找慢SQL)