MySQL:如何启用慢查询日志?

Con*_*ion 5 mysql

你能给我一个关于如何启用 MySQL 的慢查询日志的例子吗?

根据文档

从 MySQL 5.1.29 开始,使用--slow_query_log[={0|1}]启用或禁用慢查询日志,并可选地使用--slow_query_log_file=file_name指定日志文件名。在--log慢的查询选项已过时。

那么我该如何使用该选项呢?我可以放进去my.cnf吗?一个例子将不胜感激。

小智 5

正确的。

最好将它放在 my.cnf 文件的常规/全局(顶部)部分。

您需要做两件事:(1) 启用它,以及 (2) 定义日志文件目标。

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


Rol*_*DBA 5

这里有一些有趣的事情。

MySQL 5.1/5.5 允许您将慢查询日志转换为 MyISAM。

这是我为我的客户做的:

步骤 1) 将这些行添加到 /etc/my.cnf

log_output=TABLE
slow_query_log
slow_query_log_file=slow-queries.log
Run Code Online (Sandbox Code Playgroud)

步骤2)重启mysql(service mysql restart)

此时,表 mysql.slow_log 存在,但作为存储引擎 CSV。

步骤 3) 将 mysql.slow_log 转换为 MyISAM 并索引 start_time 字段

SET @old_log_state = @@global.slow_query_log;
SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log ENGINE = MyISAM;
ALTER TABLE mysql.slow_log ADD INDEX (start_time);
SET GLOBAL slow_query_log = @old_log_state;
Run Code Online (Sandbox Code Playgroud)

现在您可以针对它运行 SELECT 查询。

试一试。