首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SHOW PROCESSLIST 完全指南:欄位解讀、State 狀態全表、Kill 實戰、連接數監控

     編輯:MySQL 資料庫相關知識

查看方式

# 客戶端
mysql> SHOW [FULL] PROCESSLIST;

# 命令列
mysqladmin -u root -p processlist
  • 擁有 SUPER 權限 → 看全例項線程;否則僅見當前帳戶線程。
  • FULL 顯示完整 SQL 文本 (預設截斷 100 字符)。

欄位詳細解讀

State 狀態全景表 (高頻/關鍵)

欄位含義運維價值
Id連接執行緒 IDKILL id 精準終止
UserMySQL 使用者定責歸屬
Host客戶端 IP:Port追蹤來源應用/主機
db當前默認資料庫鎖定影響範圍
Command執行命令類型Sleep/Query/Connect/Binlog Dump...
Time當前狀態持續秒數識別長時間運行/阻塞
State線程內部狀態**核心診斷欄位**,見下表
Info正在執行的 SQL 片段直接看到問題語句
State含義處理建議
Checking table自動檢查表正常,短暫
Closing tables刷新修改到磁碟、關閉表若持久 → 檢查磁碟 I/O/空間
Copying to tmp table on disk臨時表超大轉磁碟調大 tmp_table_size/max_heap_table_size 或優化 SQL 避免臨時表
Creating tmp table建立內存臨時表正常,若頻繁 → 優化 GROUP BY/ORDER BY
Locked被其他查詢鎖定檢查阻塞鏈 SHOW ENGINE INNODB STATUS
Sending data處理 SELECT 記錄並發送客戶端長時間 → 大結果集/網路慢/全表掃描
Sorting for order / groupORDER BY / GROUP BY 排序無索引支援 → 加索引/調大 sort_buffer_size
Opening tables嘗試打開表若卡住 → FLUSH TABLES / 檢查 table_open_cache
Waiting for table metadata lock等待 DDL 釋放元數據鎖避免高峰期 DDL,用 pt-osc
System lock等待外部系統鎖加 --skip-external-locking (預設已開)
Sleep等待客戶端新請求連接池閒置連接,正常
Killed收到 KILL 信號,待釋放鎖後退出耐心等待

完整 State 列表見 MySQL 官方文檔「Thread States」章節。

Kill 實戰

# 1. 找到問題 Id
SHOW FULL PROCESSLIST;

# 2. 終止
KILL 207;           -- 終止連接 (含回滾)
KILL QUERY 207;     -- 僅終止當前查詢,保留連接
  • KILL 設置線程 killed 標誌,線程在下一個檢查點退出 (可能需等待鎖釋放)。
  • 慎用:大事務回滾可能更久,評估影響後再殺。

連接數監控指標 (SHOW STATUS)

告警建議:Threads_connected > 0.8 * max_connections 觸發擴容/限流。

結語

SHOW PROCESSLIST 是 MySQL 現場急診的「聽診器」。熟記 **State 語義**、**Time 閾值**、**Info SQL 片段** 三大核心欄位,配合 KILL 精準止血、**連接數監控** 趨勢預警,構建「發現 → 定位 → 止血 → 複盤」分鐘級故障響應閉環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
變量含義
Threads_connected當前打開連接數 (含 Sleep)
Threads_running非 Sleep 執行緒數 (實際並發)
Max_used_connections歷史峰值連接數
Aborted_clients客戶端異常斷開計數
Aborted_connects連接嘗試失敗計數
Connections總嘗試連接次數