下列討論列舉了程序資訊的來源、檢視程序資訊所需的權限,並說明程序清單項目的內容。
程序資訊可從以下來源取得
mysqladmin processlist 命令:第 6.5.2 節,「mysqladmin — MySQL 伺服器管理程式」
INFORMATION_SCHEMA
PROCESSLIST
資料表:第 28.3.23 節,「INFORMATION_SCHEMA PROCESSLIST 資料表」Performance Schema
processlist
資料表:第 29.12.22.7 節,「processlist 資料表」Performance Schema
threads
資料表欄位,其名稱具有PROCESSLIST_
前置詞:第 29.12.22.8 節,「threads 資料表」sys
schemaprocesslist
和session
檢視表:第 30.4.3.22 節,「processlist 和 x$processlist 檢視表」和 第 30.4.3.33 節,「session 和 x$session 檢視表」
threads
資料表與 SHOW PROCESSLIST
、INFORMATION_SCHEMA
PROCESSLIST
和 mysqladmin processlist 的比較如下
存取
threads
資料表不需要互斥鎖,而且對伺服器效能的影響極小。其他來源會因為需要互斥鎖而產生負面效能影響。注意基於效能綱要(Performance Schema)的
processlist
資料表,提供了一種替代的SHOW PROCESSLIST
實作方式。如同threads
資料表,此資料表不需要互斥鎖(mutex),且具有更好的效能特性。詳細資訊請參閱第 29.12.22.7 節,「processlist 資料表」。threads
資料表會顯示其他來源不顯示的背景執行緒。它也為每個執行緒提供其他來源沒有的額外資訊,例如執行緒是前景或背景執行緒,以及與執行緒相關聯的伺服器內的位置。這表示threads
資料表可以用於監控其他來源無法監控的執行緒活動。您可以啟用或停用效能綱要執行緒監控,如第 29.12.22.8 節,「threads 資料表」中所述。
基於這些原因,使用其他執行緒資訊來源執行伺服器監控的 DBA 可能會希望改為使用 threads
資料表進行監控。
sys
綱要的 processlist
檢視以更易於存取的格式呈現來自效能綱要 threads
資料表的資訊。sys
綱要的 session
檢視呈現有關使用者連線階段的資訊,類似於 sys
綱要的 processlist
檢視,但會過濾掉背景程序。
對於大多數處理序資訊來源,如果您擁有 PROCESS
權限,您可以查看所有執行緒,甚至是屬於其他使用者的執行緒。否則(沒有 PROCESS
權限),非匿名使用者可以存取關於他們自己執行緒的資訊,但不能存取其他使用者的執行緒,而匿名使用者無法存取任何執行緒資訊。
效能綱要 threads
資料表也提供執行緒資訊,但資料表的存取使用不同的權限模型。請參閱第 29.12.22.8 節,「threads 資料表」。
每個處理序清單項目包含數個資訊片段。以下清單使用來自 SHOW PROCESSLIST
輸出的標籤描述它們。其他處理序資訊來源使用類似的標籤。
Id
是與執行緒相關聯的用戶端連線識別碼。User
和Host
指示與執行緒相關聯的帳戶。db
是執行緒的預設資料庫,如果沒有選擇任何資料庫,則為NULL
。Command
和State
指示執行緒正在執行的操作。大多數狀態對應於非常快速的操作。如果執行緒在給定的狀態中停留數秒,可能存在需要調查的問題。
以下章節列出可能的
Command
值,以及按類別分組的State
值。其中一些值的含義是不言而喻的。對於其他值,則提供了額外的描述。注意檢查處理序清單資訊的應用程式應注意,命令和狀態可能會變更。
Time
指示執行緒處於目前狀態的時間長度。在某些情況下,執行緒對目前時間的概念可能會被變更:執行緒可以使用SET TIMESTAMP =
變更時間。對於複本 SQL 執行緒,該值是最後一個複寫事件的時間戳記與複本主機的實際時間之間的秒數。請參閱第 19.2.3 節,「複寫執行緒」。value
Info
指示執行緒正在執行的陳述式,如果沒有執行任何陳述式,則為NULL
。對於SHOW PROCESSLIST
,此值僅包含陳述式的前 100 個字元。要查看完整的陳述式,請使用SHOW FULL PROCESSLIST
(或查詢不同的處理序資訊來源)。