如何启用MySQL慢查询日志?

时间:2014-03-24 12:21:53

标签: mysql sql

我的MySQL版本详情

  1. 服务器:通过UNIX套接字的Localhost
  2. 软件:MySQL
  3. 软件版本:5.0.96-community-log - MySQL Community Edition(GPL)
  4. 协议版本:10
  5. 如何启用MySQL慢查询日志?

2 个答案:

答案 0 :(得分:67)

版本5.1.6及更高版本:

<强> 1。输入MySQL shell并运行以下命令:

set global slow_query_log = 'ON';

<强> 2。启用任何其他所需选项。以下是一些常见示例:

记录希望检索所有行而不是使用索引的查询的详细信息:

   set global log_queries_not_using_indexes = 'ON'

设置慢查询日志的路径:

  set global slow_query_log_file ='/var/log/mysql/slow-query.log';

设置在记录之前查询需要运行的时间:

   set global long_query_time = 20;
     (default is 10 seconds)

第3。通过输入MySQL shell并运行以下命令确认更改已激活:

show variables like '%slow%';

5.1.6以下的版本:

  1. 使用您喜欢的文本编辑器编辑/etc/my.cnf文件 vi /etc/my.cnf

  2. 在“[mysqld]”部分下添加以下行。您可以随意将日志文件的路径更新为您想要的内容:

    log-slow-queries=/var/log/mysql/slow-query.log

  3. 第3。根据需要启用其他选项。以下是与上述相同的常用示例:

    设置在记录之前查询需要运行的时间:

      `long_query_time=20
      (default is 10 seconds)`
    

    记录希望检索所有行而不是使用索引的查询的详细信息:

     `log-queries-not-using-indexes`
    

    <强> 4。重启MySQL服务:

    service mysqld restart
    

    <强> 5。通过输入MySQL shell并运行以下命令确认更改已激活:

    show variables like '%slow%';
    

    <强>更新:1

    根据MySQL文档,当您使用错误的SQLSTATE代码时,会出现错误#1193。

    Message: Unknown system variable %s
    

    而且,正如您在同一页面上看到的那样,SQLSTATE 99003未定义。

    参考此链接:

    http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html

    http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

答案 1 :(得分:3)

如果您的服务器高于5.1.6,您可以在运行时本身设置慢查询日志。您必须执行此查询。

set global log_slow_queries = 1;
set global slow_query_log_file = <some file name>;

或者您可以在my.cnf/my.ini选项文件

中设置此选项
log_slow_queries = 1; 
slow_query_log_file = <some file name>;

参考:http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_slow_query_log_file