mysql開啟慢查詢日志


應用背景

MySQL慢查詢日志功能默認是關閉的,通過開啟慢查詢日志,可以讓MySQL記錄下查詢超過指定時間的語句,再通過分析定位問題瓶頸,優化查詢提高數據庫系統的性能。

 

測試環境

centos7.4 / mysql5.6.40

 

參數說明

slow_query_log:  ON | OFF,開啟或關閉慢查詢功能;

slow_query_log_file:  /PATH/TO/LOG_FILE,某指定路徑下的文件;

long_query_time:  TIME(單位:秒,默認10秒),查詢語句執行后超過多少秒后就記錄到慢查詢日志中;

 

具體操作

先查看一下相關參數

mysql> show variables like 'slow_query%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log      | OFF                               |
| slow_query_log_file | /var/lib/mysql/server-10-slow.log |  //名字格式:一般為“主機名-slow.log”
+---------------------+-----------------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'long_query%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

修改方法1:在mysql交互命令行設置

開啟慢查詢功能

mysql> set global  slow_query_log = ON;

修改慢查詢日志存放路徑

mysql> set global slow_query_log_file = '/var/lib/mysql/test-slow.log';  //引號別忘

修改慢查詢時間

mysql> set global long_query_time = 2;

最后檢查確認(退出,重新登錄查看)

mysql> show variables like 'slow_query%';
+---------------------+------------------------------+
| Variable_name       | Value                        |
+---------------------+------------------------------+
| slow_query_log      | ON                           |
| slow_query_log_file | /var/lib/mysql/test-slow.log |
+---------------------+------------------------------+
2 rows in set (0.01 sec)

mysql> show variables like 'long_query%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
1 row in set (0.01 sec)

修改方法2:在配置文件my.cnf文件中添加相關參數(需要重啟mysql)

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/test-slow.log
long_query_time = 2

 

簡單測試

mysql> select sleep(5);  //查詢,睡5秒,模擬耗時(大於設定值2秒)
+----------+
| sleep(5) |
+----------+
|        0 |
+----------+
1 row in set (5.00 sec)

查看慢查詢日志記錄內容

[root@server-10 ~]# cat /var/lib/mysql/test-slow.log
/usr/sbin/mysqld, Version: 5.6.40-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 180906 14:38:54
# User@Host: root[root] @ localhost []  Id:    28
# Query_time: 5.000303  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1536215934;
select sleep(5);

那條查詢超過2秒的select語句和耗時都被記錄下來了。

 

結束.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM