Mysql开启慢查询日志
Mysql慢查询,通常用于定位线上数据库的sql执行情况,抓出那些响应时间长的sql出来,然后进行sql优化, 达到系统优化响应速度的目的,此文简单记录mysql中如何进行慢查询的操作,详细如下:
0.查看慢查询开启情况
show variables like 'slow_query%';
mysql> show variables like 'slow_query%';
+---------------------+------------------------------------------------------------------+
| Variable_name | Value |
+---------------------+------------------------------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /home/testuser/mysql-5.7.35/data/icnoclxserver-slow.log |
+---------------------+------------------------------------------------------------------+
2 rows in set (0.01 sec)
可看到当前状态slow_query_log=OFF,即为未开启
slow_query_log_file:如果开启了慢查询,则相应的慢sql会打印到这个文件中.
1.慢查询开启
set global slow_query_log='ON';
默认的慢查询日志文件位置通过步骤0中的show variables like 'slow_query%';查看,如果想修改slow_query_log_file的位置,通过以下命令修改,如:
set global slow_query_log_file=your_logfile_path;
2.查看默认的慢查询时间配置
通过show variables like ‘long_query_time’;查看默认设置的多少时间为慢查询时间,单位s,默认为10秒
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
3.修改慢查询时间配置
如:以下将慢查询时间设置成5秒
set global long_query_time=5;
4.恢复成慢查询关闭状态
调试成慢查询后,如果希望关闭慢查询状态,执行: set global slow_query_log=‘OFF’;
set global slow_query_log='OFF';
5.log_queries_not_using_indexes
log_queries_not_using_indexes这个参数如果设置成ON,则未走索引的sql语句都认为是慢查询sql
,容易混消,看情况开启,一般设置成OFF
6.show full processlist
可以通过show full processlist看慢sql,也可以用以下的sql语句来更灵活的查询。
select * from information_schema.processlist where COMMAND !='Sleep' order by time desc limit 10 \G