MySQL高級十一——慢查詢

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)!

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享