SHOW [FULL] PROCESSLIST
INFORMATION SCHEMA 實作的 SHOW PROCESSLIST
已被棄用,並會在未來 MySQL 版本中移除。建議改為使用效能架構 (Performance Schema) 實作的 SHOW PROCESSLIST
。
MySQL 程序列表會顯示伺服器內執行緒所執行的目前操作。SHOW PROCESSLIST
陳述式是程序資訊的來源之一。如需此陳述式與其他來源的比較,請參閱程序資訊的來源。
有一個替代的 SHOW PROCESSLIST
實作,它是基於效能架構 (Performance Schema) processlist
表格,與預設的 SHOW PROCESSLIST
實作不同,它不需要互斥鎖,且具有較佳的效能特性。如需詳細資訊,請參閱第 29.12.22.7 節:「processlist 表格」。
如果您具有 PROCESS
權限,則可以查看所有執行緒,甚至是屬於其他使用者的執行緒。否則(若沒有 PROCESS
權限),非匿名使用者可以存取有關其自身執行緒的資訊,但無法存取其他使用者的執行緒資訊,而匿名使用者則無法存取執行緒資訊。
若沒有 FULL
關鍵字,SHOW PROCESSLIST
只會顯示 Info
欄位中每個陳述式的前 100 個字元。
如果您收到 「太多連線」錯誤訊息,並想要找出發生了什麼事,則 SHOW PROCESSLIST
陳述式非常有用。MySQL 會保留一個額外的連線,以供具有 CONNECTION_ADMIN
權限(或已棄用的 SUPER
權限)的帳戶使用,以確保管理員應始終能夠連線並檢查系統(假設您沒有將此權限授與所有使用者)。
可以使用 KILL
陳述式終止執行緒。請參閱第 15.7.8.4 節:「KILL 陳述式」。
SHOW PROCESSLIST
輸出的範例
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for source to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the replica
I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 3112
User: replikator
Host: artemis:2204
db: NULL
Command: Binlog Dump
Time: 2144
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 4. row ***************************
Id: 3113
User: replikator
Host: iconnect2:45781
db: NULL
Command: Binlog Dump
Time: 2086
State: Has sent all binlog to replica; waiting for binlog to be updated
Info: NULL
*************************** 5. row ***************************
Id: 3123
User: stefan
Host: localhost
db: apollon
Command: Query
Time: 0
State: NULL
Info: SHOW FULL PROCESSLIST
SHOW PROCESSLIST
輸出具有以下欄位
連線識別碼。此值與
INFORMATION_SCHEMA
PROCESSLIST
表格的ID
欄位中顯示的值相同,並顯示在效能架構 (Performance Schema)threads
表格的PROCESSLIST_ID
欄位中,且由執行緒內的CONNECTION_ID()
函數傳回。發出陳述式的 MySQL 使用者。
system user
值表示伺服器產生的非用戶端執行緒,以在內部處理任務,例如,延遲資料列處理常式執行緒或在複本主機上使用的 I/O (接收器) 或 SQL (套用程式) 執行緒。對於system user
,Host
欄位中未指定主機。unauthenticated user
表示已與用戶端連線建立關聯,但尚未執行用戶端使用者驗證的執行緒。event_scheduler
表示監視排程事件的執行緒(請參閱第 27.5 節:「使用事件排程器」)。注意User
的值system user
與SYSTEM_USER
權限不同。前者指定內部執行緒。後者區分系統使用者和一般使用者帳戶類別(請參閱第 8.2.11 節:「帳戶類別」)。發出陳述式的用戶端主機名稱(
system user
除外,它沒有主機)。TCP/IP 連線的主機名稱會以
格式回報,以便更輕鬆地判斷哪個用戶端正在執行哪個操作。host_name
:client_port
執行緒的預設資料庫,如果未選取任何資料庫,則為
NULL
。執行緒代表用戶端執行的命令類型,如果工作階段閒置,則為
Sleep
。如需執行緒命令的描述,請參閱第 10.14 節:「檢查伺服器執行緒(程序)資訊」。此欄位的值對應於用戶端/伺服器通訊協定的COM_
命令和xxx
Com_
狀態變數。請參閱第 7.1.10 節:「伺服器狀態變數」。xxx
執行緒處於目前狀態的時間(以秒為單位)。對於複本 SQL 執行緒,該值是最後複寫的事件時間戳記與複本主機的實際時間之間的秒數。請參閱第 19.2.3 節:「複寫執行緒」。
表示執行緒正在執行的動作、事件或狀態。如需
State
值的描述,請參閱第 10.14 節:「檢查伺服器執行緒(程序)資訊」。大多數狀態都對應於非常快速的操作。如果執行緒在給定狀態中停留數秒,則可能存在需要調查的問題。
執行緒正在執行的陳述式,如果未執行任何陳述式,則為
NULL
。陳述式可能是傳送至伺服器的陳述式,如果陳述式執行其他陳述式,則為最內層的陳述式。例如,如果CALL
陳述式執行正在執行SELECT
陳述式的預存程序,則Info
值會顯示SELECT
陳述式。