# 客戶端
mysql> SHOW [FULL] PROCESSLIST;
# 命令列
mysqladmin -u root -p processlist
SUPER 權限 → 看全例項線程;否則僅見當前帳戶線程。FULL 顯示完整 SQL 文本 (預設截斷 100 字符)。| 欄位 | 含義 | 運維價值 |
|---|---|---|
| Id | 連接執行緒 ID | KILL id 精準終止 |
| User | MySQL 使用者 | 定責歸屬 |
| 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 / group | ORDER 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」章節。
# 1. 找到問題 Id
SHOW FULL PROCESSLIST;
# 2. 終止
KILL 207; -- 終止連接 (含回滾)
KILL QUERY 207; -- 僅終止當前查詢,保留連接
KILL 設置線程 killed 標誌,線程在下一個檢查點退出 (可能需等待鎖釋放)。| 變量 | 含義 |
|---|---|
| Threads_connected | 當前打開連接數 (含 Sleep) |
| Threads_running | 非 Sleep 執行緒數 (實際並發) |
| Max_used_connections | 歷史峰值連接數 |
| Aborted_clients | 客戶端異常斷開計數 |
| Aborted_connects | 連接嘗試失敗計數 |
| Connections | 總嘗試連接次數 |