解决方案 »

  1.   

    set global slow_query_log=on;
      

  2.   

    mysql> show variables like '%long_query_time%';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 0.500000 |
    +-----------------+----------+
    1 row in set (0.00 sec)mysql> 看下你当前的参数值是多少?
      

  3.   

    可能楼主的my.cnf不是真正要用的配置 文件,
    建议先查一下:
    mysql> show variables like '%long_query_time%';如果不符,可以重新找找真正用的配置 文件是哪个.
      

  4.   

    show variables like '%query%';
    贴出以供分析。
      

  5.   

    无效。设置后重新连接MySQL也无效。
      

  6.   

    坚挺的2秒:
    mysql> show variables like '%query%';
    +------------------------------+----------------------------+
    | Variable_name                | Value                      |
    +------------------------------+----------------------------+
    | ft_query_expansion_limit     | 20                         |
    | have_query_cache             | YES                        |
    | long_query_time              | 2.000000                   |
    | query_alloc_block_size       | 8192                       |
    | query_cache_limit            | 2097152                    |
    | query_cache_min_res_unit     | 4096                       |
    | query_cache_size             | 67108864                   |
    | query_cache_type             | ON                         |
    | query_cache_wlock_invalidate | OFF                        |
    | query_prealloc_size          | 8192                       |
    | slow_query_log               | ON                         |
    | slow_query_log_file          | /var/lib/mysql/sql_row.log |
    +------------------------------+----------------------------+
    12 rows in set (0.00 sec)
      

  7.   

    坚挺的2秒:
    mysql> show variables like '%query%';
    +------------------------------+----------------------------+
    | Variable_name                | Value                      |
    +------------------------------+----------------------------+
    | ft_query_expansion_limit     | 20                         |
    | have_query_cache             | YES                        |
    | long_query_time              | 2.000000                   |
    | query_alloc_block_size       | 8192                       |
    | query_cache_limit            | 2097152                    |
    | query_cache_min_res_unit     | 4096                       |
    | query_cache_size             | 67108864                   |
    | query_cache_type             | ON                         |
    | query_cache_wlock_invalidate | OFF                        |
    | query_prealloc_size          | 8192                       |
    | slow_query_log               | ON                         |
    | slow_query_log_file          | /var/lib/mysql/sql_row.log |
    +------------------------------+----------------------------+
    12 rows in set (0.00 sec)是啊,你看你当前的 long_query_time                是2.0000,就是2秒嘛。所以只记录超过2秒的慢查询sql,你如果在my.cnf里面设置了,就需要重新启动mysql,才能生效。或者你在线设置 set global long_query_time  =0.1;
      

  8.   

    应该不是配置文件的问题,因为我在这个文件下改了log-slow-queries、innodb_file_per_table、max_connections、log-bin、binlog_format几个参数,都生效了,唯独这次的long_query_time=5没起作用,而且我的整个系统上只有/etc/my.cnf一个文件,再无其他my.cnf
      

  9.   

    坚挺的2秒:
    mysql> show variables like '%query%';
    +------------------------------+----------------------------+
    | Variable_name                | Value                      |
    +------------------------------+----------------------------+
    | ft_query_expansion_limit     | 20                         |
    | have_query_cache             | YES                        |
    | long_query_time              | 2.000000                   |
    | query_alloc_block_size       | 8192                       |
    | query_cache_limit            | 2097152                    |
    | query_cache_min_res_unit     | 4096                       |
    | query_cache_size             | 67108864                   |
    | query_cache_type             | ON                         |
    | query_cache_wlock_invalidate | OFF                        |
    | query_prealloc_size          | 8192                       |
    | slow_query_log               | ON                         |
    | slow_query_log_file          | /var/lib/mysql/sql_row.log |
    +------------------------------+----------------------------+
    12 rows in set (0.00 sec)是啊,你看你当前的 long_query_time                是2.0000,就是2秒嘛。所以只记录超过2秒的慢查询sql,你如果在my.cnf里面设置了,就需要重新启动mysql,才能生效。或者你在线设置 set global long_query_time  =0.1;
    重启过MySQL,连CentOS都重启了。用service mysql restart重启的,重启CentOS用的reboot命令,但是对long_query_time都不起作用。
    在线设置 set global long_query_time  =0.1起作用,但是这个每次重启MySQL都要重新设置
      

  10.   

    参考一下slow_log生效的办法:http://blog.csdn.net/mchdba/article/details/19161097
      

  11.   

    感谢各位的帮助,检查来检查去其实是我自己粗心造成的,浪费大家时间了。结贴。
    错误原因是这样的:我用的my.cnf是官方自带的,我只在上面修改。慢日志查询配置了log-slow-queries和long_query_time两个参数,我配置的时候在my.cnf中搜索了log-slow-queries,发现没有,于是就想当然的认为long_query_time也没有,然后就自己写了一个long_query_time。其实官方这个配置文件是有long_query_time这个变量的,他出现的位置在我的后面,所以我配置的时间就被覆盖,这就是无论我怎么修改也不起作用的原因。
    删除一个多余的long_query_time,重启MySQL,修改生效。