Mysql 慢SQL配置

初衷

抽空整理一下Mysql 慢SQL的配置和分析。

资料

  • 官网SQL查询log文档(mysql v5.7)

使用

(直译)慢查询日志由SQL语句组成,这些SQL语句执行时间超过long_query_time秒,并且至少需要检查min_examined_row_limit行。long_query_time的最小值和默认值分别为0和10。该值可以指定为微秒的分辨率。对于记录到文件,写入包括微秒部分的时间。对于记录到表,只写入整数倍;

配置方式

一、通过修改/etc/my.cnf,添加配置
优点:全局生效
缺点:需要重启Mysql

二、通过SQL命令set global slow_query_log=1直接修改环境变量
优点:立即生效
缺点:只对当前数据库生效,重启Mysql后失效

配置参数

slow_query_log是否启用日志。如果参数为0则禁用日志,为1则启用日志。

slow-query-log-file 日志文件指定。(可输出到文件或者数据库详见官网文档)

long_query_time 执行时间超过几秒的SQL语句,最小值和默认值分别为0和10。

范例 my.cnf 配置

#my.cnf文件

#是否开启慢查询日志,1表示开启,0表示关闭。
slow-query-log = 1
 
#MySQL数据库慢查询日志存储路径
slow-query-log-file = /var/lib/mysql/mysql-slow.log
 
#慢查询阈值,当查询时间多于设定的阈值时,记录日志。单位:秒
long_query_time = 10

范例 show variables 配置

mysql> show variables  like '%slow_query_log%';
+---------------------+---------------------------------------------------------+
| Variable_name       | Value                                                   |
+---------------------+---------------------------------------------------------+
| slow_query_log      | OFF                                                     |
| slow_query_log_file | /usr/local/mysql/data/xxx-xxx-slow.log |
+---------------------+---------------------------------------------------------+

mysql> set global slow_query_log=1;

你可能感兴趣的:(Mysql 慢SQL配置)