mysql 技巧 慢查詢及分析

2021-10-05 15:31:43 字數 1409 閱讀 8872

開啟慢查詢可以記錄到耗時超過設定時間閥值 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...