在 MySQL 中查看進程(連接)狀態,可以使用 SHOW PROCESSLIST 或 SHOW FULL PROCESSLIST 命令,這兩個命令能幫助你監控當前數據庫的連接情況、執行的 SQL 語句等信息,常用于排查連接擁堵、慢查詢等問題。
該命令會返回當前所有連接到 MySQL 服務器的進程信息,包含以下關鍵字段:
-
Id:進程(連接)的唯一標識 ID(終止進程時需要用到)
-
User:發起該進程的數據庫用戶名
-
Host:連接來源的主機(格式為 IP:端口)
-
db:當前連接操作的數據庫名(若未指定則為 NULL)
-
Command:進程狀態(如 Sleep 表示空閑、Query 表示正在執行查詢、Connect 表示正在連接等)
-
Time:進程持續時間(單位:秒)
-
State:進程當前的具體狀態(如 executing 表示正在執行 SQL)
-
Info:正在執行的 SQL 語句(長語句會被截斷)
如果需要查看完整的 SQL 語句(避免被截斷),使用:
與 SHOW PROCESSLIST 的區別是:Info 字段會顯示完整的 SQL 內容,適合分析長查詢。
可以結合 WHERE 條件篩選特定進程,例如:
SHOW FULL PROCESSLIST WHERE Time > 30;
SHOW PROCESSLIST WHERE User = 'app_user';
SHOW FULL PROCESSLIST WHERE Command = 'Query';
SHOW PROCESSLIST WHERE db = 'order_db';
如果發現某個進程長時間阻塞、占用資源過高或執行異常,可以通過 KILL 命令終止它:
-
權限限制:普通用戶只能查看自己發起的進程,
root 等管理員用戶可以查看所有進程。
-
Sleep 狀態過多:若大量進程處于 Sleep 狀態(超過連接池配置),可能是應用程序未正確關閉連接,需檢查連接池設置。
-
鎖等待:若
State 顯示 Waiting for table lock 或 Locked,表示進程正在等待鎖,需排查鎖沖突(可結合 SHOW ENGINE INNODB STATUS 進一步分析)。
通過這些命令,能有效監控 MySQL 的連接狀態,及時發現并處理異常情況。