在mysql中,慢查詢語句指的是慢查詢日誌中回應時間超過閾值的語句,具體的運行時間超過「long_query_time」值的SQL語句;可以設定「slow_query_log」的參數來設定是否開啟慢查詢,「1」表示開啟,「0」表示關閉。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
MySQL的慢查詢日誌是MySQL提供的日誌記錄,它用來記錄在MySQL中回應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢日誌中。
long_query_time的預設值為10,意思是執行10S以上的語句。
預設情況下,Mysql資料庫並不會啟動慢查詢日誌,需要我們手動來設定這個參數,當然,如果不是調優需要的話,一般不建議啟動該參數,因為開啟慢查詢日誌會或多或少帶來一定的性能影響。慢查詢日誌支援將日誌記錄寫入文件,也支援將日誌記錄寫入資料庫表。
MySQL 慢查詢的相關參數解釋:
slow_query_log:是否開啟慢查詢日誌,1表示開啟,0表示關閉。
log-slow-queries :舊版(5.6以下版本)MySQL資料庫慢查詢日誌儲存路徑。可以不設定此參數,系統則會預設給一個預設的檔案host_name-slow.log
#slow-query-log-file:新版(5.6以上版本)MySQL資料庫慢查詢日誌儲存路徑。可以不設定該參數,系統則會預設給一個缺省的檔案host_name-slow.log
#long_query_time:慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌。
log_queries_not_using_indexes:未使用索引的查詢也被記錄到慢查詢日誌中(可選項)。
log_output:日誌儲存方式。 log_output='FILE'表示將日誌存入文件,預設值是'FILE'。 log_output='TABLE'表示將日誌存入資料庫。
slow_query_log
預設情況下slow_query_log的值為OFF,表示慢查詢日誌是停用的,可以透過設定slow_query_log的值來開啟,如下所示:
mysql> show variables like '%slow_query_log%'; +---------------------+-----------------------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log | +---------------------+-----------------------------------------------+
rows in set (0.00 sec)
mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.09 sec)
使用set global slow_query_log=1開啟了慢查詢日誌只對目前資料庫生效,MySQL重啟後則會失效。
如果要永久生效,就必須修改設定檔my.cnf(其它系統變數也是如此)。
my.cnf要增加或修改參數slow_query_log 和slow_query_log_file,如下所示
slow_query_log = 1 slow_query_log_file = /tmp/mysql_slow.log
然後重新啟動MySQL伺服器。
slow_query_log_file
這個參數用來指定慢速查詢日誌的存放路徑,缺省情況是host_name-slow.log文件,
mysql> show variables like 'slow_query_log_file'; +---------------------+-----------------------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------------------+ | slow_query_log_file | /home/WDPM/MysqlData/mysql/DB-Server-slow.log | +---------------------+-----------------------------------------------+ 1 row in set (0.00 sec)
推薦學習:mysql影片教學
#以上是mysql慢查詢語句是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!