【MySql】mysql 慢日誌查詢工具之mysqldumpslow

楊奇龍發表於2012-02-24
    當使用--log-slow-queries[=file_name]選項啟動時,mysqld寫一個包含所有執行時間超過long_query_time秒的SQL語句的日誌檔案。獲得初使表鎖定的時間不算作執行時間。
如果沒有給出file_name值, 預設未主機名,字尾為-slow.log。如果給出了檔名,但不是絕對路徑名,檔案則寫入資料目錄。
語句執行完並且所有鎖釋放後記入慢查詢日誌。記錄順序可以與執行順序不相同。
慢查詢日誌可以用來找到執行時間長的查詢,可以用於最佳化。但是,檢查又長又慢的查詢日誌會很困難。要想容易些,你可以使用mysqldumpslow命令獲得日誌中顯示的查詢摘要來處理慢查詢日誌。

    在MySQL 5.1的慢查詢日誌中,不使用索引的慢查詢同使用索引的查詢一樣記錄。要想防止不使用索引的慢查詢記入慢查詢日誌,使用--log-short-format選項。
在MySQL 5.1中,透過--log-slow-admin-statements伺服器選項,你可以請求將慢管理語句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE寫入慢查詢日誌。
用查詢快取處理的查詢不加到慢查詢日誌中,因為表有零行或一行而不能從索引中受益的查詢也不寫入慢查詢日誌。
mysqldumpslow 的常用引數如下:
-s 後面接下面的參數列示 mysqldumpslow 結果顯示的順序!
c query執行的次數
t sql執行的時間
l lock鎖表的時間
r sql返回的行數
ac,at,al,ar,表示倒序排列
-t,是top n,即為返回前面n條資料。
-g,後邊可以寫一個正則匹配模式,大小寫不敏感
顯示執行時間最長的前兩個
[root@rac3 python]# mysqldumpslow  -s t -t 2 /opt/mysql/data/slowquery.log  
Reading mysql slow query log from /opt/mysql/data/slowquery.log
Count: 2  Time=412.54s (825s)  Lock=0.00s (0s)  Rows=1.0 (2), root[root]@localhost
  select count(N) from sbtest ,t1 where t1.c=sbtest.c
Count: 1  Time=778.20s (778s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
  select count(N) from  sbtest where sbtest.id not in ( select id from t1 )
#顯示次數最多的前兩個 
[root@rac3 python]# mysqldumpslow  -s c -t 2 /opt/mysql/data/slowquery.log      
Reading mysql slow query log from /opt/mysql/data/slowquery.log
Count: 12  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=1.0 (12), root[root]@localhost
  select count(N) from tab_1
Count: 2  Time=412.54s (825s)  Lock=0.00s (0s)  Rows=1.0 (2), root[root]@localhost
  select count(N) from sbtest ,t1 where t1.c=sbtest.c
[root@rac3 python]#

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-717129/,如需轉載,請註明出處,否則將追究法律責任。

相關文章