MySQL 慢查詢日誌分析

2022-03-15 18:37:10 字數 2491 閱讀 2686

mysql的慢查詢日誌是mysql提供的一種日誌記錄,它用來記錄在mysql中響應時間超過閥值的語句,具體指執行時間超過 long_query_time 值的sql,則會被記錄到慢查詢日誌中,ong_query_time 的預設值為10,意思是執行10s以上的語句。就會被認作是慢查詢,預設情況下,mysql資料庫並不啟動慢查詢日誌,需要我們手動來設定這個引數,如果不是調優需要的話,一般不建議啟動該引數,因為開啟慢查詢日誌會或多或少帶來一定的效能影響。慢查詢日誌支援將日誌記錄寫入檔案,也支援將日誌記錄寫入資料庫表。

檢視是否開啟慢查詢日誌

show variables like '%slow_query_log%'
開啟

set global slow_query_log = 1;
只對當前資料庫生效, 如果重啟後, 則會失效,如果永久生效,必須要修改配置檔案

slow_query_log = 1
slow_query_log_file = 位址
那麼開啟了慢查詢日誌後,什麼樣的sql才會記錄到慢查詢日誌裡面呢?

show variables like 'long_query_time'
set global long_query_time = 4;
要斷開連線後, 才能生效

show global variables like 'long_query_time';
select sleep(4)
show global status like '%slow_queries%';
引數

-s:按照那種方式排序

c:訪問計數

l:鎖定時間

r:返回記錄

al:平均鎖定時間

ar:平均訪問記錄數

at:平均查詢時間

-t:是top n的意思,返回多少條資料

-g:可以跟上正則匹配模式,大小寫不敏感

示例

得到返回記錄集最多的10個sql

mysqldumpslow - s r - t 10 / database / mysql / mysql06_slow.log
得到訪問次數最多的10個sql

mysqldumpslow - s c - t 10 / database / mysql / mysql06_slow.log
得到按照時間排序的前10條裡面含有左連線的查詢語句

mysqldumpslow - s t - t 10 - g 「left join」 / database / mysql / mysql06_slow.log
另外建議在使用這些命令時結合 | 和 more 使用,否則有可能出現刷屏的情況

mysqldumpslow - s r - t 20 / mysqldata / mysql / mysql06 - slow.log | more
show profile 是mysql提供的可以用來分析當前會話中sql語句執行的資源消耗情況的工具,可用於sql調優的測量。預設情況下處於關閉狀態,並儲存最近15次的執行結果。把一條sql在mysql當中每乙個環節耗費的時候都記錄下來,預設該功能是關閉的,使用前需開啟。預設儲存最近15次執行的結果。

檢視當前版本是否支援

show variables like 'profiling';
開啟 profile

set profiling = on
檢視結果

show profiles
診斷sql

show profile cpu,block io for query 88;
當出現以下選項時, 要進行優化

只允許在測試環境用, 不能在生產環境使用,在測試是可以把所有執行的sql抓取出來檢視

set global general_log = 1;
set global log_output = 'table'
此後所編寫的sql語句將會記錄到mysql庫里的 general_log 表中

select * from mysql.general_log;
mysql - u root - p1234 -- default - character -set = utf8

mysql慢查詢日誌分析

mysql 有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 10 log slow queries long quer...

mysql慢查詢日誌分析

我喜歡做一些系統效能優化事情,覺得這樣有種成就感,實現了自己的價值。所以經常到系統上去top netstat uptime看看系統執行的狀況。今天我對mysql資料庫進行索引建立。mysql的慢查詢日誌是我部署環境時就開啟了的。mysqldumpslow是對慢查詢日誌進行統計的工具,講一下有用的引數...

mysql慢查詢日誌分析

分類 mysql postgresql mysql有乙個功能就是可以log下來執行的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些引數。如果在my.cnf裡面修改,需增加如下幾行 long query time 10 log slo...