2

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

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

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

设置 log_slow_queries = ON;

给我错误

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

4

3 回答 3

3
SET GLOBAL slow_query_log=1;

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

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

它可以设置为 GLOBAL 变量,inmy.cnfmy.inifile。或者它可以由连接设置,尽管这是不寻常的。该值可以设置在 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 手册页慢查询日志

注意:以上关于开启/关闭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
于 2016-08-11T12:13:49.960 回答
3

转到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%';
于 2018-09-08T08:56:07.947 回答
0

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

于 2021-06-29T01:21:18.010 回答