如何在MySQL 5.0.45中记录慢查询

3

我正在尝试在MySQL v5.0.45(编译操作系统:redhat-linus-gnu)上启用慢查询日志记录,但似乎无法使其正常工作。我尝试添加...

long_query_time = 1

我将最后一个选项添加到[mysqld]部分下的/etc/my.cnf文件中,然后使用命令重新启动…

sudo /sbin/service mysqld restart --log-slow-queries=/var/log/slowqueries.log

我运行了一些程序,其中SELECT查询大约需要6-8秒钟,但是我无法在任何地方找到日志。有什么想法吗?

2个回答

4

对于 MySQL 5.0,您想在 my.cnf 中使用的变量是:

log-slow-queries = /var/log/mylogname.log

您需要手动创建此文件,并将所有权和组设置为mysql。您可以在命令行上执行以下操作:
touch /var/log/mylogname.log
chown mysql /var/log/mylogname.log
chgrp mysql /var/log/mylogname.log

你可以使用以下方法设置你认为的“长时间”的长度:
long_query_time = 2

您可以使用以下方式添加不使用索引执行的查询:
log-queries-not-using-indexes

但是,这可能会使你的日志填满得很快。
我发现一些变量使用下划线,一些使用连字符,这可能取决于你如何设置变量,通过my.cnf或通过命令行。以下是你可以在MySQL 5.0中设置的所有系统变量列表:http://dev.mysql.com/doc/refman/5.0/en/server-options.html 另一个奇怪的问题是:这份文档说log-slow-queries是一个布尔值,但当我检查全局变量(在mysql中,输入'show global variables;'),它显示此值为'ON',而不是我设定的文件路径。无论如何,这对我有效,并写入了该文件。

1
这个答案应该被接受。它不仅完美地涵盖了如何设置和配置mysql 5.0.XX中的慢查询,而且还指出了我多年来注意到的所有奇怪的问题,但从未如此简洁地列出过。 - degenerate

0
在你的 /etc/my.cnf 文件中添加 log_slow_queries = /var/log/mysql/slowqueries.log,然后像平常一样重启 mysql,例如: sudo service mysqld restart,然后尝试一下。

哎呀...还是没有成功。我仍然无法记录查询。 - Scruffy Paws
sudo服务mysqld重启 service:此命令仍然有效,但已被弃用,请改用launchctl(8)。 service:无法识别的命令“restart”。 - Valeriy Van

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接