MySQL5.7.x开启慢查询日志
一般SQL写的很烂的话,系统一有访问量、数据一大,容易卡死,需打开慢查询分析,方法如下:
1、在/etc/my.cnf中的[mysqld]中加入如下代码:
slow-query-log = On #开启慢查询
slow_query_log_file = /data/mysql/mysql_slow_query.log #定义慢查询日志的路径
log_output = FILE #设置日志输出到文件,默认为输出到table
long_query_time = 5 #定义查过多少秒的查询算是慢查询
log_queries_not_using_indexes = ON #记录下没有使用索引的query
重启Mysql服务即可打开慢查询日志.
2、直接在线打开不用重启服务
登录MySQL控制台执行如下设置:
set global long_query_time=5; //设置成5秒,
set slow_query_log='ON'; //加上global
set global slow_query_log='ON'; //启用慢查询
set global log_output = 'file'; //日志输出到文件
set global slow_query_log_file='/data/mysql/mysql_slow_query.log'; //日志输出路径
show variables like "%slow%"; //查看是当前会话的变量值,没生效需要断开重新连接
show global variables like 'long_query_time'; //直接查看
设置以后查看已经打开了慢查询
mysql> show variables like "%slow%";
+---------------------------+----------------------------------+
| Variable_name | Value |
+---------------------------+----------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/mysql_slow_query.log |
+---------------------------+----------------------------------+
5 rows in set (0.00 sec)
mysql> show global variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 5.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
其中:
slow_query_log 的值为ON 为开启慢查询日志,off表示关闭慢查询日志
slow_query_log_file 的值是记录的慢查询日志到文件中(默认为主机名.log)
slow_launch_time 是thread create的一个阈值,thread create的时间超过了这个值,这变量slow_launch_time的值加1.
long_query_time 指定了慢查询的阈值,即执行语句的时间若超过这个值则为慢查询语句
log_queries_not_using_indexes 如果该值是ON,则会记录所有没有利用索引来进行查询的语句,前提是slow_query_log 的值也是ON,否则,不会奏效
查询当前慢查询的语句个数:
show global status like '%slow%';
可以通过查询语句查看慢查询的语句:前提是日志输出到table
select * from mysql.slow_log; #查询所有慢查询
select * from mysql.slow_log order by start_time desc limit 10; #查询最新的10条慢查询
Tag标签:「慢查询 阈值」更新时间:「2021-11-03 13:25:18」阅读次数:「793」