以下討論列舉了處理程序資訊的來源、檢視處理程序資訊所需的權限,並描述處理程序清單項目的內容。
可從這些來源取得處理程序資訊
mysqladmin processlist 命令:章節 6.5.2,「mysqladmin — MySQL 伺服器管理程式」
INFORMATION_SCHEMA
PROCESSLIST
表格:章節 28.3.23,「INFORMATION_SCHEMA PROCESSLIST 表格」效能結構描述
processlist
表格:章節 29.12.22.7,「processlist 表格」效能結構描述
threads
表格中名稱具有PROCESSLIST_
前置詞的資料行:章節 29.12.22.8,「threads 表格」sys
綱要的processlist
檢視和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
表格一樣,不需要互斥鎖,且具有較佳的效能特性。如需詳細資訊,請參閱第 29.12.22.7 節,「processlist 表格」。threads
表格會顯示背景執行緒,這是其他來源所沒有的。它也提供其他來源沒有的每個執行緒的額外資訊,例如執行緒是前景還是背景執行緒,以及與執行緒關聯的伺服器內的位置。這表示threads
表格可用於監控其他來源無法監控的執行緒活動。您可以啟用或停用 Performance Schema 執行緒監控,如第 29.12.22.8 節,「threads 表格」中所述。
基於這些原因,使用其他執行緒資訊來源之一執行伺服器監控的 DBA 可能會希望改為使用 threads
表格進行監控。
sys
綱要 processlist
檢視以更易於存取的格式呈現來自 Performance Schema threads
表格的資訊。sys
綱要 session
檢視呈現使用者工作階段的相關資訊,如同 sys
綱要 processlist
檢視,但會篩除背景處理序。
對於大多數處理序資訊來源,如果您具有 PROCESS
權限,您可以看到所有執行緒,即使是屬於其他使用者的執行緒。否則(沒有 PROCESS
權限),非匿名使用者可以存取他們自己的執行緒相關資訊,但不能存取其他使用者的執行緒,而匿名使用者則無法存取執行緒資訊。
Performance Schema 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
(或查詢不同的處理序資訊來源)。