MySQL慢查询日志slowlog的具体使用

2024-08-08 15:58:43 2131

蓝队云小课堂:

MySQL 的慢查询日志 (slow_query_log) 是一个非常有用的工具,它可以帮助你识别出执行时间过长的 SQL 语句。这些慢查询可能会导致性能瓶颈,并且通过分析这些日志,你可以找出优化的方向。

 

以下是开启慢查询日志和使用它的基本步骤:

 

开启慢查询日志

方法一:通过配置文件

1.打开 MySQL 的配置文件 my.cnf 或 my.ini。通常这些文件位于 /etc/mysql/my.cnf (Linux) 或 C:\\ProgramData\\MySQL\\MySQL Server 8.0\\my.ini (Windows)。

 

2. [mysqld] 部分添加以下行:

slow_query_log = ON

slow_query_log_file = /path/to/slow-query.log

long_query_time = 2

slow_query_log: 设置为 ON 表示启用慢查询日志。

slow_query_log_file: 指定慢查询日志文件的路径。

long_query_time: 设置 SQL 语句的最小执行时间(秒),超过这个时间的查询会被记录到日志中。

 

3.保存文件并重启 MySQL 服务使配置生效:

sudo systemctl restart mysql

 

方法二:动态设置

1.登录 MySQL:

mysql -u root -p

 

2.动态设置慢查询日志:

SET GLOBAL slow_query_log = ON;

SET GLOBAL slow_query_log_file = '/path/to/slow-query.log';

SET GLOBAL long_query_time = 2;

 

分析慢查询日志

使用 mysqldumpslow

mysqldumpslow 是一个命令行工具,可以用来解析慢查询日志文件并统计查询的出现次数和总执行时间。

 

1.安装 mysqldumpslow (如果还没有安装的话):

sudo apt-get install mysql-tools

或者对于其他包管理器,查找相应的命令。

 

2.使用 mysqldumpslow 分析慢查询日志:

mysqldumpslow --count=10 /path/to/slow-query.log

这个命令会显示出现频率最高的 10 个慢查询。

使用 MySQL 内置函数

MySQL 5.6 开始,慢查询日志可以被记录到表中,这使得分析慢查询更加方便。

 

1.启用慢查询日志到表:

SET GLOBAL slow_query_log = ON;

SET GLOBAL slow_query_log_file = '';

SET GLOBAL log_output = 'TABLE';

 

2.查看慢查询记录:

SELECT * FROM mysql.slow_log;

 

关闭慢查询日志

当你不再需要慢查询日志时,可以关闭它:

SET GLOBAL slow_query_log = OFF;

注意事项

记录慢查询日志可能会对性能产生一定影响,因此建议在生产环境中谨慎使用。

调整 long_query_time 参数以适应不同的需求。

请确保有足够的磁盘空间来存储慢查询日志文件。

如果你使用的是 MySQL 8.0 或更高版本,可以参考官方文档获取更详细的信息:https://www.landui.com/doc/refman/8.0/en/slow-query-log.html

更多小知识,可联系蓝队云一起探讨。

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: