【问题标题】:Enabling mysql slow query log using XAMPP 5.6.21使用 XAMPP 5.6.21 启用 mysql 慢查询日志
【发布时间】:2016-08-11 12:11:18
【问题描述】:

我已经查看了许多与此类似的问题,但我似乎无法找到答案。我想为我的 MySQL 数据库设置slow query log。我看到很多答案说我应该访问 MySQL 命令行工具。我不确定如何找到此工具,但我尝试通过以下方式访问它:

c:/xampp/mysql/bin/mysql -u root -p -h localhost

但是在这里我得到了 MariaDB,它似乎与我以前见过的任何其他答案/教程都不同。输入:

设置 log_slow_queries = ON;

给我错误

错误 1193 (HY000):未知系统变量“log_slow_queries”

【问题讨论】:

    标签: mysql xampp error-log mysql-slow-query-log


    【解决方案1】:
    SET GLOBAL slow_query_log=1;
    

    慢查询日志包含查询的日志事件,最多需要 long_query_time 秒才能完成。例如,最多 10 秒即可完成。要查看当前设置的时间阈值,请发出以下命令:

    SELECT @@long_query_time;
    +-------------------+
    | @@long_query_time |
    +-------------------+
    |         10.000000 |
    +-------------------+
    

    可以在my.cnfmy.ini 文件中设置为全局变量。或者它可以由连接设置,尽管这是不寻常的。该值可以设置在 0 到 10(秒)之间。使用什么值?

    • 10高到几乎没用;
    • 2 是一种妥协;
    • 0.5 和其他分数是可能的;
    • 0 捕获所有内容;这可能会以危险的速度快速填满磁盘,但非常有用。

    慢查询的捕获可以打开也可以关闭。并且还指定了登录到的文件。下面捕捉了这些概念:

    SELECT @@slow_query_log; -- Is capture currently active? (1=On, 0=Off)
    SELECT @@slow_query_log_file; -- filename for capture. Resides in datadir
    SELECT @@datadir; -- to see current value of the location for capture file
    
    SET GLOBAL slow_query_log=0; -- Turn Off
    -- make a backup of the Slow Query Log capture file. Then delete it.
    SET GLOBAL slow_query_log=1; -- Turn it back On (new empty file is created)
    

    有关详细信息,请参阅 MySQL 手册页The Slow Query Log

    注意:以上关于开启/关闭slowlog的信息在5.6(?)中有所改变;旧版本有另一种机制。

    查看导致系统变慢的“最佳”方法:

    long_query_time=...
    turn on the slowlog
    run for a few hours
    turn off the slowlog (or raise the cutoff)
    run pt-query-digest to find the 'worst' couple of queries.  Or mysqldumpslow -s t
    

    【讨论】:

    • 谢谢,但我仍然不知道如何打开它。如果我尝试 SELECT @@slow_query_log;我得到的值为 0,所以我知道它是关闭的。
    • 我刚刚向您展示了如何打开它,并提供了对包含指向手册页链接的文档页面的参考。它可以通过 1 动态打开,“ON”,或者在服务器重新启动时通过 inicnf 文件。
    【解决方案2】:

    转到xampp控制面板点击mysql的配置按钮并选择my.ini然后将这些行添加到my.ini文件中

     slow_query_log = 1
     slow-query-log-file=/path/of/the/log/file.log
    

    我把上面两行放在log_error = "mysql_error.log" 下。 my.ini 文件的修改部分应如下所示

        # The MySQL server
        [mysqld]
        port= 3306
        socket = "C:/xampp/mysql/mysql.sock"
        basedir = "C:/xampp/mysql" 
        tmpdir = "C:/xampp/tmp" 
        datadir = "C:/xampp/mysql/data"
        pid_file = "mysql.pid"
        # enable-named-pipe
        key_buffer = 16M
        max_allowed_packet = 1M
        sort_buffer_size = 512K
        net_buffer_length = 8K
        read_buffer_size = 256K
        read_rnd_buffer_size = 512K
        myisam_sort_buffer_size = 8M
        log_error = "mysql_error.log"
        slow_query_log = 1
        slow-query-log-file=/var/log/mysql-slow.log
    

    然后在xampp控制面板中重启MySQL服务器。现在应该启用slow_query_log,您可以通过在 MySQL shell 中运行以下命令来确认它

    show variables like '%slow%';
    

    【讨论】:

      【解决方案3】:

      这可能很明显,但我花了一些时间才意识到自己的错误:在 my.ini 文件中,您应该将 slow_query_log 设置放在 [mysqld] 组中,而不仅仅是放在 my.ini 文件的末尾。 ..

      【讨论】:

        猜你喜欢
        • 2014-05-01
        • 2015-12-25
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 2012-06-01
        • 1970-01-01
        • 2012-06-09
        • 1970-01-01
        相关资源
        最近更新 更多