許多開發者在設計資料庫與撰寫程式時,鮮少考慮高負載情境。資料量一增長,系統便出現卡頓,事後排查愈發困難。MySQL 內建的 mysqldumpslow 工具能幫助你快速找出效能瓶頸,是效能調校的第一把利器。
登入 MySQL 後執行 SHOW STATUS; 可查看伺服器運行狀態,資訊與 phpMyAdmin 顯示的內容大致相同。
用於檢視配置參數,支援模糊匹配,例如 SHOW VARIABLES LIKE 'Key%';。
顯示當前正在執行的執行緒,排查鎖表、長時間運行查詢時極為有用。
列出目前已開啟的資料表清單。
mysqladmin -uroot --password='password' status
輸出範例:
Uptime: 87117 Threads: 1 Questions: 5481626 Slow queries: 16 Opens: 2211 Flush tables: 1 Open tables: 512 Queries per second avg: 62.923
加上 -i 5 參數可每 5 秒自動刷新。extended-status 則提供更詳細的運行指標。
/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log
上例輸出記錄次數最多的前 10 條 SQL。關鍵參數說明:
c(次數)、t(時間)、l(查詢時間)、r(返回行數);加 a 前綴表倒序(如 ac、at)。mysqldumpslow -s r -t 10 /var/log/mysql/slow.logLEFT JOIN 且按耗時排序的前 10 條:mysqldumpslow -s t -t 10 -g "left join" /var/log/mysql/slow.log善用 mysqldumpslow 可精準鎖定問題 SQL,配合索引優化、查詢重寫,能大幅提升資料庫吞吐量。持續監控、分析、優化,是 MySQL 效能調校的核心循環。