當 MySQL 性能抖動、查詢堆積、連接數飆升時,SHOW [FULL] PROCESSLIST 是第一現場勘察工具。本文系統解析 8 大列含義、5 類核心 State 狀態成因與處置策略,助你快速定位性能瓶頸。
| 列名 | 含義 | 排查價值 |
|---|---|---|
| Id | 連接標識,KILL id 終止會話 | 鎖定具體會話 |
| User | 當前用戶,非 root 僅見自身權限內語句 | 識別業務來源 |
| Host | 客戶端 IP:Port,追蹤問題應用節點 | 定位故障源頭 |
| db | 當前默認數據庫 | 縮小排查範圍 |
| Command | 命令類型:Sleep/Query/Connect/Binlog Dump 等 | 判斷會話活躍度 |
| Time | 當前狀態持續秒數 | 識別長事務/慢查詢 |
| State | 核心列:SQL 執行內部狀態(見下文詳解) | 精準定位瓶頸環節 |
| Info | 正在執行的 SQL 文本(截斷顯示) | 直接看到問題語句 |
💡 進階:SHOW FULL PROCESSLIST 顯示完整 SQL;performance_schema.threads / events_statements_current 提供更豐富元數據(無截斷、含執行計劃)。
成因:
close() 歸還池中判斷標準:連接池配置合理時,Sleep 數量應穩定在 pool_size * 0.2 以內。大量 Sleep + Time 增長 → 連接泄漏或池配置過大。
處置:
try-with-resources / finally close()maxIdle、minIdle、maxWait 根據 QPS 科學設定wait_timeout=28800(8h),interactive_timeout 區分交互/非交互KILL 超過 wait_timeout 的 Sleep 進程(慎用,可能誤傷)成因:
ALTER TABLE 阻塞增刪改查)處置:
pt-online-schema-change / gh-ost 在線變更SHOW ENGINE INNODB STATUS 死鎖日志、performance_schema.data_locks觸發場景:
GROUP BY / DISTINCT 無索引覆蓋ORDER BY 與 GROUP BY 列不一致UNION / 派生表 / CTE 物化影響:磁盤 I/O 飆升(Created_tmp_disk_tables 計數器增長)、並發下鎖競爭加劇。
優化:
INDEX (group_col, order_col, select_col)tmp_table_size/max_heap_table_size(默認 16MB),盡量在內存完成SELECT *、減少關聯表數量KILL 長時間佔用臨時表的查詢本質:存儲引擎層面讀取數據頁、組裝結果集的過程。包含:
高頻原因:
LIMIT/分頁優化)排查:
EXPLAIN 確認 type=ALL / rows 巨大 / Using where 無 Using indexInnodb_buffer_pool_reads / Innodb_buffer_pool_read_requests 命中率LIMIT、分頁優化(延遲關聯/游標分頁)現象:頻繁出現且佔比高(即使耗時極短)。
根因:Query Cache 碎片化嚴重、鎖競爭(全局互斥鎖)、失效頻繁(表任意修改導致相關緩存全部失效)。
處置:
FLUSH QUERY CACHE 即時碎片整理query_cache_size(建議 ≤ 512MB,大則鎖競爭劇增)query_cache_type=0、query_cache_size=0,改用 Redis 等外部緩存-- 1. 當前活躍查詢(排除 Sleep)
SELECT * FROM information_schema.PROCESSLIST
WHERE COMMAND != 'Sleep' ORDER BY TIME DESC;
-- 2. 長事務檢測(>60s)
SELECT * FROM information_schema.INNODB_TRX
WHERE TIME_TO_SEC(TIMEDIFF(NOW(), trx_started)) > 60;
-- 3. 鎖等待鏈
SELECT * FROM performance_schema.data_locks;
SELECT * FROM performance_schema.data_lock_waits;
-- 4. 臨時表監控
SHOW GLOBAL STATUS LIKE 'Created_tmp%';
State 列是 MySQL 內部執行流水線的「實時顯微鏡」。掌握 Sleep(連接管理)、Locked(鎖設計)、Copy to tmp table(索引覆蓋)、Sending data(訪問路徑)、Query Cache(架構選型) 五大狀態的成因與對策,配合 performance_schema、sys schema 現代化觀測體系,可將故障 MTTR(平均修復時間)壓縮至分鐘級。