萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

善用 mysqldumpslow 快速定位 MySQL 慢查詢 SQL

為什麼需要慢查詢分析?

許多開發者在設計資料庫與撰寫程式時,鮮少考慮高負載情境。資料量一增長,系統便出現卡頓,事後排查愈發困難。MySQL 內建的 mysqldumpslow 工具能幫助你快速找出效能瓶頸,是效能調校的第一把利器。

常用的 MySQL 狀態檢視指令

1. SHOW STATUS

登入 MySQL 後執行 SHOW STATUS; 可查看伺服器運行狀態,資訊與 phpMyAdmin 顯示的內容大致相同。

2. SHOW VARIABLES

用於檢視配置參數,支援模糊匹配,例如 SHOW VARIABLES LIKE 'Key%';。

3. SHOW PROCESSLIST

顯示當前正在執行的執行緒,排查鎖表、長時間運行查詢時極為有用。

4. SHOW OPEN TABLES

列出目前已開啟的資料表清單。

5. mysqladmin 工具

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 則提供更詳細的運行指標。

mysqldumpslow 核心用法

/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log

上例輸出記錄次數最多的前 10 條 SQL。關鍵參數說明:

  • -s 排序方式:c(次數)、t(時間)、l(查詢時間)、r(返回行數);加 a 前綴表倒序(如 ac、at)。
  • -t N:只顯示前 N 筆資料。
  • -g "pattern":正則過濾(不區分大小寫)。

實戰範例

  • 返回結果集最大的前 10 條:mysqldumpslow -s r -t 10 /var/log/mysql/slow.log
  • 含 LEFT JOIN 且按耗時排序的前 10 條:mysqldumpslow -s t -t 10 -g "left join" /var/log/mysql/slow.log

小結

善用 mysqldumpslow 可精準鎖定問題 SQL,配合索引優化、查詢重寫,能大幅提升資料庫吞吐量。持續監控、分析、優化,是 MySQL 效能調校的核心循環。

copyright © 萬盛學電腦網 all rights reserved