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?????| +---------------+-------+
4、獲取連接數
show?status?like?'connections';
就會看到
+---------------+-------+ |?Variable_name?|?Value?| +---------------+-------+ |?Connections???|?2?????| +---------------+-------+
5、設置慢查詢的時間
set?long_query_time?=?1;
6、以安全模式啟動mysql服務,慢查詢記錄將會寫入日志之中。
開啟慢查詢日志
在MySQL的配置文件中加以下參數
log-show-queries = D:/MySQL/Log/mysqld-slow-query.log
long-query-time = 5
log-queries-not-using-indexes
闡述:
有關慢查詢日志功能存放位置,該目錄文件一定要有寫的權限??梢杂迷O置,系統會給一個缺省的文件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)!