慢查询日志

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

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

它可以在 my.cnfmy.ini 文件中设置为 GLOBAL 变量。或者它可以通过连接设置,尽管这很不寻常。该值可以设置在 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