開啟慢查詢可以記錄到耗時超過設定時間閥值 long_query_time 的語句,預設不開啟。開啟慢查詢日誌會或多或少帶來一定的效能影響,建議僅除錯時開啟。
通過 show variables like '***x' 語句檢視配置狀態,如:
show variables like 'slow_query_log'
主要的配置:
slow_query_log:是否開啟慢查詢日誌,預設 off。
long_query_time:慢查詢閾值,當查詢時間多於設定的閾值時,記錄日誌,預設 10s。
slow_query_log_file:慢查詢日誌檔案的儲存路徑。
log_queries_not_using_indexes:是否將為使用索引的語句記錄的慢查詢日誌,預設 off。
臨時開啟(重啟失效):
mysql> set global slow_query_log=1;
mysql> set global slow_query_log_file='d:\mysql-slow-query.log';
mysql> set global long_query_time=2;
永久開啟(修改配置,重啟生效):
# 在配置檔案 [mysqld]下新增
slow_query_log=1;
slow_query_log_file=d:\mysql-slow-query.log;
long_query_time=2
在千萬級使用者表中使用 join 語句,耗時15.25s:
select u.id,username,c.coins from `users` u left join `test_user_coins` c on u.id = user_id limit 10;
慢查詢日誌記錄:
以上重要引數:
query_time:執行時長,上例表現為 15.253022s。
rows_examined:掃瞄的總行數,上例表現為 14201。
分析在查詢語句前加上 desc 或 explain 可得到分析結果:
語句:
desc select u.id,username,c.coins from `users` u left join `test_user_coins` c on u.id = user_id where u.id < 10000 limit 10;
結果:
分析:關聯表(test_user_coins)未使用索引,初步優化方案,給關聯外來鍵 (user_id)新增索引,結果如下:
mysql慢查詢配置及分析
1 進入mysql目錄,開啟my.cnf檔案 這個檔案是mysql的配置檔案,我們在這個檔案裡設定慢查詢的開關和閾值,找不到my.cnf可用命令 find name my.cnf 2 在my.cnf 加入以下配置 log output table 慢查詢的記錄方式 slow query log 1 ...
mysql 慢查詢分析
轉自花開的地方 mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動 的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 1 log slow queries lo...
mysql 慢查詢分析
mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動 的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 1 log slow queries log querie...