MySql提供慢SQL日誌的功能,能夠記錄下響應時間超過一定閾值的SQL查詢,以便於我們定位糟糕的查詢語句。
首先,查詢當前mysql數據庫是否開啓了慢查詢日誌功能:
mysql -uroot -p
******
show VARIABLES like '%slow%';
slow_query_log的值是ON,代表當前數據庫已經開啓了慢查詢功能。slow_query_log_file表示慢日誌的路徑。
還可以查看超過多少秒算是慢查詢:
show VARIABLES like 'long_query_time';
默認是10秒,這裏已經被配置爲1秒了。
那麼慢查詢功能是如何配置的呢?
Linux系統下是編輯/etc/my.cnf
slow_query_log=ON
slow_query_log_file=/var/lib/mysql/remotejob-01-slow.log
long_query_time=1
然後,重啓mysql服務使之生效:
service mysqld restart
接下來就可以通過slow_query_log_file指定的日誌路徑查看慢查詢記錄了。
1. 查看mysql系統參數(windows系統)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
mysql> show variables like "%slow%" ;
+---------------------------+-------------------------------+
| Variable_name | Value |
+---------------------------+-------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | /mysql/data/nagiosdb-slow.log |
+---------------------------+-------------------------------+
5 rows in set (0.00 sec)
slow_query_log: off關閉狀態 on 開啓狀態
slow_launch_time 默認超過2s爲慢查詢
slow_query_log_file 慢查詢日誌存放地點
這三個參數,在不同的mysql版本中,不太一樣,不過都可以通過 show variables like "%slow%" 查看出來
|
2. 運行如下命令即可運行慢查詢日誌
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
mysql> set global slow_query_log=ON;
Query OK, 0 rows affected (0.03 sec)
mysql> set global slow_launch_time=5;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like "%slow%" ;
+---------------------------+-------------------------------+
| Variable_name | Value |
+---------------------------+-------------------------------+
| log_slow_admin_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 5 |
| slow_query_log | ON |
| slow_query_log_file | /mysql/data/nagiosdb-slow.log |
+---------------------------+-------------------------------+
5 rows in set (0.00 sec)
mysql 5.1.6版本起,slow_query_log 和 slow_launch_time 支持寫文件或寫數據庫表兩種方式,並且日誌的開啓,輸出方式的修改,都可以在global級別動態修改。
只需簡單通過 set global slow_query_log=ON;即可開啓慢查詢,而不需要重啓數據庫!<br>
|
3. 可以直接寫到配置文件中 my.cnf
1
2
3
4
|
slow_query_log_file=/mysql/log/nagiosdb-slow.log
slow_launch_time=5
可以完成配置!
|