MySQL slow log相關引數

哎呀我的天吶發表於2015-11-16

 顧名思義,慢查詢日誌中記錄的是執行時間較長的query,從5.6開始slow log位置的引數從 log-slow-queries 變為

slow_query_log_file                                ## 不指定的話預設名為 主機名-slow.log
slow_query_log = 1                                ## 開啟慢查詢
long_query_time = 2                              ## 指定超時時間 2S 記錄到慢查詢日誌, 預設是10s。
log_queries_not_using_indexes = 1       ## log下來沒有使用索引的query 我們是開啟的

log_slow_admin_statements = 1          ##記錄管理操作,alter/analyze table

log_slow_slave_statements = 1            ##記錄由slave產生的查詢日誌

expire_logs_days = 90                           ##binlog 日誌保留時間,超時會自動清理

min_examined_row_limit = 100         ## 掃描記錄小於該值的SQL不記錄到慢查詢日誌中,


eg:當我執行如下命令時,對應的慢查詢日誌中,可以看到只有超過涉及到100行資料才會記錄到慢查詢日誌中。而limit 40 limit 49的sql都沒有記錄。

mysql> insert into yao select * from yao limit 50;
Query OK, 50 rows affected (0.01 sec)
Records: 50  Duplicates: 0  Warnings: 0
mysql> insert into yao select * from yao limit 40;
Query OK, 40 rows affected (0.00 sec)
Records: 40  Duplicates: 0  Warnings: 0
mysql> insert into yao select * from yao limit 49;
Query OK, 49 rows affected (0.00 sec)
Records: 49  Duplicates: 0  Warnings: 0
# Query_time: 0.009162  Lock_time: 0.000078 Rows_sent: 0  Rows_examined: 100
SET timestamp=1537844390;
insert into yao select * from yao limit 50;
# Time: 2018-09-25T03:00:12.174658Z
# User@Host: root[root] @ localhost []  Id:     6
# Query_time: 0.007614  Lock_time: 0.000107 Rows_sent: 0  Rows_examined: 118
SET timestamp=1537844412;
insert into yao select * from yao limit 59;


mysqldumpslow

[root@slave mysql_data]# mysqldumpslow -s ORDER  -t 2  slow.log 
Reading mysql slow query log from slow.log
Count: 5  Time=0.01s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
  insert into yao select * from yao limit N
Count: 1  Time=24.85s (24s)  Lock=0.00s (0s)  Rows=0.0 (0), []@[]
  throttle:          N 'S' warning(s) suppressed.


一般線上slow log檔案很大,我們一般tail 部分行來取樣解析。

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

相關文章