MySQL-慢查询日志开启

  • Post author:
  • Post category:mysql


为什么开启慢日志:

通过开启Mysql慢日志,可以查询超过指定时间的语句,分析造成性能瓶颈的原因,才能更好的优化数据库

mysql> show variables like ‘%query%’;

±—————————–±————–+

| Variable_name | Value |

±—————————–±————–+

| binlog_rows_query_log_events | OFF |

| ft_query_expansion_limit | 20 |

| have_query_cache | YES |

| long_query_time | 1.000000 |

| query_alloc_block_size | 8192 |

| query_cache_limit | 1048576 |

| query_cache_min_res_unit | 4096 |

| query_cache_size | 1048576 |

| query_cache_type | OFF |

| query_cache_wlock_invalidate | OFF |

| query_prealloc_size | 8192 |

| slow_query_log | ON |

| slow_query_log_file | /tmp/slow.log |

±—————————–±————–+

其中需要关注的配置项为:

1.slow_query_log

该配置项是决定是否开启慢日志查询功能,配置的值有ON或者OFF.

2.slow_query_log_file

该配置项是慢日志查询的记录文件,需要手动创建.

3.long_query_time

该配置项是设置慢日志查询的时间阈值,当超过这个阈值时,慢日志才会被记录.配置的值有0(任何的sql语句都记录下来),或者>0(具体的阈值).该配置项是以秒为单位的,并且可以设置为小数.

4.log-queries-not-using-indexes

该配置项是为了记录未使用到索引的sql语句.

配置慢日志方法

方法一:全局变量设置(该方式数据库重启全部失效,得重新配置)

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log=‘ON’;

设置慢查询日志位置

mysql> set global slow_query_log_file=’/tmp/slow.log’; //linux

mysql> set global slow_query_log_file=‘D:\mysq\logs\slow.log’; //windows

设置查询超过1秒就记录(如果有时候用命令不起作用,那么可以关闭再打开)

mysql> set global long_query_time=1;

方法二:配置文件设置(服务器重启不影响)

修改配置文件my.cnf,在[mysqld]下的下方加入

[mysqld]

slow_query_log = ON

slow_query_log_file = /usr/local/mysql/data/slow.log //linux

long_query_time = 1

重启MySQL服务

systemctl restart mysqld

测试:

1.执行一条慢查询SQL语句

mysql> select sleep(3);

查看是否生成慢查询日志

在这里插入图片描述



版权声明:本文为weixin_43976607原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。