MySQL記錄下查詢超過指定時間的語句,我們將超過指定時間的SQL語句查詢稱為慢查詢。
1、查看時間限制
show variables like '%long%';
就會看到:
+---------------------------------------------------+-----------+ | Variable_name | Value | +---------------------------------------------------+-----------+ | long_query_time | 10.000000 | | max_long_data_size | 1048576 | | performance_schema_events_waits_history_long_size | 10000 | +---------------------------------------------------+-----------+
如果查詢超過long_query_time的時間就稱為慢查詢。
2、查看資料庫的啟動時間
show status like 'uptime%';
就會看到
+---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | Uptime | 76333 | | Uptime_since_flush_status | 76333 | +---------------------------+-------+
3、查看查詢語句條數
show status like 'com_Select';
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_select | 1 | +---------------+-------+
show status like 'connections';
開啟慢查詢日誌
在MySQL的設定檔中加上以下參數
log-show-queries = D:/MySQL/Log/mysqld-slow-query.log
long-query-time = 5
log-queries-not-using-indexes
闡述:
有關慢查詢日誌功能存放位置,該目錄檔案一定要有寫的權限。可以用設置,系統會給一個缺省的文件host_name-show.log
long_query_time
SQL執行時間閥值,默認為10秒
注意一下三點:
1、設置long_query_time這個閥值後, mysql資料庫會記錄所有運行時間超過該值的SQL語句,但對於運行時間剛好等於long_query_time的情況並不會被記錄下來。也就是說,在mysql源碼裡是判斷大於log_query_time,而不是大於等於。
2、從MySQL5.1開始,long_query_time開始以微秒計算,讓精確記錄SQL的運行時間。
3、建議該時間不應太小或太大,最好在5-10秒之間。當然可以根據自己的情況來定。
log-queries-not-using-indexes
如果執行的SQL語句沒有使用索引,則mysql資料庫同樣會將這條SQL語句記錄到慢查詢日誌檔案之中。
以上就是MySQL高階十一-慢查詢的內容,更多相關內容請關注PHP中文網(www.php.cn)!