分析mysql語句查詢效能的問題時候,可以在mysql記錄中查詢超過指定時間的語句,我們將超過指定時間的sql語句查詢稱為「慢查詢」。mysql自帶的慢查詢分析工具mysqldumpslow可對慢查詢日誌進行分析:主要功能是, 統計sql的執行資訊,其中包括 :
出現次數(count),
執行最長時間(time),
累計總耗費時間(time),
等待鎖的時間(lock),
傳送給客戶端的行總數(rows),
掃瞄的行總數(rows),
使用者以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit n,n 表示).
1、開啟慢sql的配置
1.1 liunx 系統 在mysql配置檔案my.cnf中增加
slow_query_log
slow_query_log_file=/usr/local/mysql/logs/slow.log
long_query_time=0.1
slow_query_log 這是乙個布林型變數,預設為真。沒有這變數,資料庫不會列印慢查詢的日誌。
log-slow-log_file=/export/servers/mysql/bin/mysql_slow.log (指定日誌檔案存放位置,可以為空,系統會給乙個預設的檔案host_name-slow.log)
long_query_time=0.1(記錄超過的時間,預設為10s),與dba溝通,效能測試分析問題時可以將該值設為0.1即100毫秒,這樣分析的粒度更詳細。
備選 :log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據情況決定是否開啟)。log-long-format (如果設定了,所有沒有使用索引的查詢也將被記錄)
注: 配置完成後,重新mysql服務配置才能生效。
2、慢查詢開啟與關閉
2.1 配置完成,連線資料庫檢查慢查詢日誌是否開啟:
命令如下:mysql> show variables like 『%slow_query_log%』;
2.2 如果沒有開啟,請開啟,slow_query_log
開啟命令:mysql> set @@global.slow_query_log = on;
關閉命令:mysql> set @@global.slow_query_log = off;
2.3 再次檢查是否開啟成功
mysql> show variables like 『%slow_query_log%』;
2.4 檢查目錄中是否生成檔案
/mysql目錄下是否存在mysql_slow.log
[root@localhost mysql]# ls -l mysql_slow.log
3、慢查詢日誌分析
3.1 linux系統:
使用mysql自帶命令mysqldumpslow檢視
常用命令,通過 mysqldumpslow –help檢視
-s,是order的排序,主要有 c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序
-a,倒序排列
-t,是top n的意思,即為返回前面多少條的資料
-g,後邊可以寫乙個正則匹配模式,大小寫不敏感的
例如:mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令分別可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
mysqldumpslow -t 10 -s t -g 「left join」 host-slow.log這個是按照時間返回前10條裡面含有左連線的sql語句。
圖例中的命令:mysqldumpslow –s at- t 50 host-slow.log 顯示出耗時最長的50個sql語句的執行資訊
以count: 32 time=0.26s (8s) lock=0.00s (0s) rows=10.0 (320), wos_20120719[wos_20120719]@2host 為例:
count: 32 該sql總共執行32次
time = 0.26s (8s) 平均每次執行該sql耗時0.26秒,總共耗時32(次)*0.26(秒)=8秒。
lock=0.00s(0s) lock時間0秒
rows =10.0(320) 每次執行sql影響資料庫表中的10行記錄,總共影響 10(行)*32(次)=320行記錄
簡單分享 歡迎拍磚
mysql慢查詢怎麼用 mysql慢查詢
1.慢查詢有什麼用?它能記錄下所有執行超過long query time時間的sql語句,幫你找到執行慢的sql,方便我們對這些sql進行優化.2.如何開啟慢查詢?首先我們先檢視mysql伺服器的慢查詢狀態是否開啟.執行如下命令 我們可以看到當前log slow queries狀態為off,說明當前...
mysql 慢查詢 MySQL慢查詢
一 簡介 開啟慢查詢日誌,可以讓mysql記錄下查詢超過指定時間的語句,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。二 引數說明 slow query log 慢查詢開啟狀態 slow query log file 慢查詢日誌存放的位置 這個目錄需要mysql的執行帳號的可寫許可權,一般...
用tail f檢視mysql慢查詢日誌
輸入 tail f tmp slowquery.log 我們可以通過tail f檢視日誌檔案。tail f var lib mysql slow queries.log time 110107 16 22 11 user host root root localhost query time 9.8...