首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SHOW PROCESSLIST 完整欄位解讀與狀態值速查表

     編輯:MySQL 綜合教學

SHOW PROCESSLIST (或 SHOW FULL PROCESSLIST) 是排查 MySQL 併發阻塞、慢查詢、連線洩漏的第一現場工具。本文完整解讀各欄位含義、列出所有 State 狀態值中文說明,並附贈常用 SHOW 指令速查。

欄位完整解讀

欄位說明排查價值
Id連線執行緒 ID,KILL id 終止專用⭐⭐⭐⭐⭐ 精準斬殺問題連線
User登入用戶,非 root 僅見自己權限內進程⭐⭐⭐ 定責應用/用戶
Host來源 IP:Port,追蹤問題客戶端⭐⭐⭐⭐ 定位來源應用伺服器
db當前預設資料庫⭐⭐ 確認操作目標庫
Command執行命令類型:Sleep/Query/Connect/Binlog Dump 等⭐⭐⭐⭐ 判斷閒置/執行中/備份中
Time當前狀態持續秒數⭐⭐⭐⭐⭐ > 秒級需關注,分級告警
StateSQL 執行內部狀態(核心診斷欄位)⭐⭐⭐⭐⭐ 見下方完整狀態表
Info正在執行的 SQL 片段(截斷),SHOW FULL PROCESSLIST 完整⭐⭐⭐⭐⭐ 直接見問題 SQL

State 狀態值完整中文速查表

State 值中文含義典型場景/對策
Checking table檢查資料表自動檢查,通常極快
Closing tables關閉表,刷新磁碟若久掛:檢查磁碟空間/IO 負載
Connect Out從庫連主庫復制連線建立中
Copying to tmp table on disk臨時表超大寫磁碟調大 tmp_table_size/max_heap_table_size、優化 SQL 避免磁碟臨時表
Creating tmp table建立內存臨時表GROUP BY/DISTINCT/ORDER BY 觸發
deleting from main table多表刪除第一階段主表刪除中
deleting from reference tables多表刪除第二階段關聯表刪除中
Flushing tables執行 FLUSH TABLES等待其他線程關閉表
Killed收到 KILL 信號等待鎖釋放後終止
Locked被其他查詢鎖住⚠️ 關鍵:找持鎖者 (Info 欄),優化/殺掉持鎖查詢
Sending data處理記錄並發送客戶端正常查詢狀態,久掛 = 結果集大/網路慢/無索引
Sorting for groupGROUP BY 排序優化索引滿足排序
Sorting for orderORDER BY 排序同上
Opening tables嘗試打開表若久掛:DDL/LOCK TABLE 阻塞
Removing duplicatesSELECT DISTINCT 去重優化器未提前去重
Reopen table結構變更後重開DDL 後自動觸發
Repair by sorting修復表排序建索引REPAIR TABLE 執行中
Repair with keycache修復表用鍵緩存較慢,大表修復
Searching rows for update尋找待更新行UPDATE 前置掃描
Sleeping等待客戶端新請求連線池閒置連線,Time 大 = 洩漏/池配置問題
System lock等待外部系統鎖加 --skip-external-locking 禁用
Upgrading lockINSERT DELAYED 升級鎖舊功能,少見
Updating搜尋匹配並修改UPDATE 執行中
User Lock等待 GET_LOCK()應用層邏輯鎖
Waiting for tables表結構變更需重開FLUSH/ALTER/RENAME/REPAIR/ANALYZE/OPTIMIZE 觸發
waiting for handler insertINSERT DELAYED 等待舊功能

實戰排查口訣

  1. 看 Time:> 5 秒標黃,> 30 秒標紅
  2. 看 State:Locked、Copying to tmp table on disk、Sending data (久) 為三大紅旗
  3. 看 Info:抓完整 SQL → EXPLAIN 分析 → 索引/改寫
  4. 看 Host:定位應用機 → 檢查連線池/程式碼
  5. 看 Command:Sleep 佔比高 = 連線池過大/洩漏

附:常用 SHOW 指令速查卡


SHOW PROCESSLIST;              -- 當前執行緒
SHOW FULL PROCESSLIST;         -- 完整 SQL
SHOW TABLES;                   -- 所有表
SHOW DATABASES;                -- 所有庫
SHOW TABLE STATUS;             -- 表詳細資訊
SHOW COLUMNS FROM tbl;         -- 表結構 (同 DESC)
SHOW INDEX FROM tbl;           -- 索引詳情
SHOW CREATE TABLE tbl;         -- 建表語句
SHOW CREATE DATABASE db;       -- 建庫語句
SHOW VARIABLES LIKE 'xxx';     -- 系統變數
SHOW STATUS LIKE 'xxx';        -- 狀態計數器
SHOW ENGINES;                  -- 可用引擎
SHOW WARNINGS;                 -- 最近警告
SHOW ERRORS;                   -- 最近錯誤
SHOW GRANTS FOR user@host;     -- 用戶權限

熟練讀懂 SHOW PROCESSLIST,是 DBA 與後端工程師從「感覺慢」進化到「定位準、解決快」的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved