源自《The new cool MySQL patch has landed!》社群貢獻,為 MySQL 慢查詢日誌注入微秒級解析能力與豐富診斷維度。
每條慢查詢記錄關聯的執行緒 ID:
# Thread_id: 571
便於關聯 SHOW PROCESSLIST、應用層追蹤具體連線來源。
long_query_time 單位從秒改為微秒,如設 300000 即 0.3 秒門檻。
# Query_time: 0.021752 Lock_time: 0.000016 Rows_sent: 1 Rows_examined: 103
精準捕捉亞秒級高頻慢查詢,避免「千刀萬剮」型效能殺手被忽略。
啟用 --log-slow-slave-statements 後,Slave 端重放 Relay Log 產生的慢查詢亦會記錄,解決原生不記錄複寫 SQL 的盲區。
日誌直接內嵌關鍵執行特徵,無需事後 EXPLAIN:
# QC_Hit: No Full_scan: No Full_join: No Tmp_table: Yes Tmp_table_on_disk: No
# Filesort: Yes Filesort_on_disk: No Merge_passes: 0
| 欄位 | 含義 | 警示條件 |
|---|---|---|
| QC_Hit | 查詢快取命中 | No = 實際執行 |
| Full_scan | 全表掃描 | Yes = 潛在問題 |
| Full_join | 無索引聯結 | Yes = 必須優化 |
| Tmp_table | 建立臨時表 | Yes = 關注記憶體/磁碟 |
| Tmp_table_on_disk | 磁碟臨時表 | Yes = 效能殺手 |
| Filesort | 檔案排序 | Yes = 可能需索引優化 |
| Filesort_on_disk | 磁碟排序 | Yes = 嚴重效能問題 |
原生 SHOW SESSION STATUS 僅顯示 Server 層統計,InnoDB 內部計數器為全域聚合。補丁提供單查詢級 InnoDB 指標:
# InnoDB_IO_r_ops: 3 InnoDB_IO_r_bytes: 49152 InnoDB_IO_r_wait: 0.018690
# InnoDB_rec_lock_wait: 0.000000 InnoDB_queue_wait: 0.000000
# InnoDB_pages_distinct: 7
| 指標 | 含義 |
|---|---|
| InnoDB_IO_r_ops | 讀取頁操作次數(近似) |
| InnoDB_IO_r_bytes | 讀取位元組數 |
| InnoDB_IO_r_wait | 儲存引擎讀取等待時間(秒) |
| InnoDB_rec_lock_wait | 行鎖等待時間(秒) |
| InnoDB_queue_wait | 進入 InnoDB 佇列等待時間(秒) |
| InnoDB_pages_distinct | 訪問唯一頁數(哈希近似,可能因碰撞偏高) |
未使用 InnoDB 的查詢顯示:# No InnoDB statistics available for this query
雖經壓測與生產驗證,但屬非官方補丁,核心業務系統慎用,建議先於測試環境充分驗證。