首頁 > 軟體

深入瞭解MySQL中的慢查詢紀錄檔

2023-03-19 06:04:03

慢查詢紀錄檔

慢查詢紀錄檔主要用來記錄執行時間超過設定的某個時長的SQL語句,能夠幫助資料庫維護人員找出執行時間比較長、執行效率比較低的SQL語句,並對這些SQL語句進行鍼對性優化。

開啟慢查詢

可以在 my.cnf 檔案或者 my.ini 檔案中設定開啟慢查詢紀錄檔。

[mysqld]
slow_query_log = 1
slow_query_log_file = /data/mysql/log/query_log/slow_statement.log
long_query_time = 10
log_output = FILE

各設定項說明如下:

slow_query_log:指定是否開啟慢查詢紀錄檔。指定的值為1或者不指定值都會開啟慢查詢紀錄檔;指定的值為 0 或者 不設定此選項就不會開啟慢查詢紀錄檔。

slow_query_log_file:慢查詢紀錄檔的檔案位置。

long_query_time:指定SQL語句執行時間超過多少秒時記錄慢查詢紀錄檔。

log_output:與查詢紀錄檔的log_output選項相同,此處不再贅述。

注意:log_output 能夠設定將紀錄檔記錄到資料表中還是記錄到檔案中,當記錄到資料表中時,則資料表中記錄的慢查詢時間只能精確到秒;如果是記錄到紀錄檔檔案中,則紀錄檔檔案中記錄的慢查詢時間能夠精確到微秒。建議在實際工作中,將慢查詢紀錄檔記錄到檔案中。

設定完成後,重啟 MySQL 伺服器設定才能生效。

除了在檔案中設定開啟慢查詢紀錄檔外,也可以在 MySQL 命令列中執行如下命令開啟慢查詢紀錄檔。

mysql> SET GLOBAL slow_query_log = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL slow_query_log_file = '/data/mysql/log/query_log/slow_statement.log';
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL long_query_time = 10;
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL log_output = 'FILE';
Query OK, 0 rows affected (0.00 sec)

成功開啟慢查詢紀錄檔後,會在 /data/mysql/log/query_log 目錄下生成 slow_statement.log 檔案。

檢視慢查詢紀錄檔

慢查詢紀錄檔如果設定的是輸出到檔案,則會儲存到純文字檔案中,直接檢視純文字檔案的內容即可。

構造一個查詢時間超過 10 秒的 SQL 語句。

SELECT BENCHMARK(99999999, MD5('mysql'));

這條語句用了大概耗時: 19.102s

我們看看慢查詢紀錄檔檔案的記錄如下:

刪除慢查詢紀錄檔

慢查詢紀錄檔和查詢紀錄檔一樣以純文字檔案的形式儲存在伺服器磁碟中,可以直接刪除。如果需要重新生成慢查詢紀錄檔,可以在 MySQL 命令列中執行 FLUSH LOGS 命令,或者在伺服器命令列中執行mysqladmin flush-logs 命令。

(1)刪除慢查詢紀錄檔。

rm -rf /data/mysql/log/query_log/slow_statement.log

刪除後,檢視/data/mysql/log/query_log目錄下的檔案。

結果顯示,slow_statement.log 檔案已經被成功刪除。

(2)在 MySQL 命令列中重新整理紀錄檔。

mysql> FLUSH LOGS;
Query OK, 0 rows affected (0.01 sec)

或者在伺服器命令列中執行如下命令重新整理紀錄檔。

mysqladmin -uroot -p flush-logs
Enter password:

紀錄檔重新整理成功後,再次檢視/data/mysql/log/query_log目錄下的檔案。

MySQL重新建立了 slow_statement.log 檔案。

關閉慢查詢紀錄檔

關閉慢查詢紀錄檔,只需要在my.cnf檔案或者my.ini檔案中設定slow_query_log=0或者直接刪除此選項即可。

[mysqld]
slow_query_log = 0

也可以在MySQL命令列中執行如下命令關閉慢查詢紀錄檔。

mysql> SET GLOBAL slow_query_log = 0;
Query OK, 0 rows affected (0.00 sec)

當關閉慢查詢紀錄檔後,刪除慢查詢紀錄檔檔案,再執行重新整理紀錄檔的操作,MySQL將不再重新建立慢查詢紀錄檔檔案。

到此這篇關於深入瞭解MySQL中的慢查詢紀錄檔的文章就介紹到這了,更多相關MySQL慢查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com