你能给我一个关于如何启用 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)
希望这可以帮助。
这里有一些有趣的事情。
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 查询。
试一试。