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...