文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.22.7 processlist 表格

MySQL 程序列表會顯示伺服器內執行的一組執行緒目前正在執行的操作。processlist 表格是程序資訊的其中一個來源。如需此表格與其他來源的比較,請參閱程序資訊來源

可以直接查詢 processlist 表格。如果您具有 PROCESS 權限,您可以查看所有執行緒,甚至包括屬於其他使用者的執行緒。否則(沒有 PROCESS 權限),非匿名使用者可以存取他們自己的執行緒資訊,但無法存取其他使用者的執行緒,而匿名使用者則無法存取任何執行緒資訊。

注意

如果啟用 performance_schema_show_processlist 系統變數,則 processlist 表格也會作為 SHOW PROCESSLIST 陳述式基礎替代實作的基礎。詳細資訊請參閱本節稍後的內容。

processlist 表格包含每個伺服器程序的資料列

mysql> SELECT * FROM performance_schema.processlist\G
*************************** 1. row ***************************
     ID: 5
   USER: event_scheduler
   HOST: localhost
     DB: NULL
COMMAND: Daemon
   TIME: 137
  STATE: Waiting on empty queue
   INFO: NULL
*************************** 2. row ***************************
     ID: 9
   USER: me
   HOST: localhost:58812
     DB: NULL
COMMAND: Sleep
   TIME: 95
  STATE:
   INFO: NULL
*************************** 3. row ***************************
     ID: 10
   USER: me
   HOST: localhost:58834
     DB: test
COMMAND: Query
   TIME: 0
  STATE: executing
   INFO: SELECT * FROM performance_schema.processlist
...

processlist 表格具有以下資料行

  • ID

    連線識別碼。此值與 SHOW PROCESSLIST 陳述式的 Id 資料行中顯示的值相同,在效能架構 threads 表格的 PROCESSLIST_ID 資料行中顯示,並且由執行緒內的 CONNECTION_ID() 函數傳回。

  • USER

    發出陳述式的 MySQL 使用者。值為 system user 指的是伺服器產生的非用戶端執行緒,以在內部處理工作,例如,延遲列處理常式執行緒或在複本主機上使用的 I/O 或 SQL 執行緒。對於 system userHost 資料行中沒有指定主機。unauthenticated user 指的是已與用戶端連線關聯,但尚未驗證用戶端使用者的執行緒。event_scheduler 指的是監視排程事件的執行緒(請參閱第 27.4 節「使用事件排程器」)。

    注意

    USER 值為 system userSYSTEM_USER 權限不同。前者指定內部執行緒。後者區分系統使用者和一般使用者帳戶類別(請參閱第 8.2.11 節「帳戶類別」)。

  • HOST

    發出陳述式的用戶端主機名稱(system user 除外,因為沒有主機)。TCP/IP 連線的主機名稱以 host_name:client_port 格式報告,以便更容易判斷哪個用戶端正在執行什麼動作。

  • DB

    執行緒的預設資料庫,如果未選取任何資料庫,則為 NULL

  • 命令

    執行緒代表客戶端執行的命令類型,如果工作階段閒置,則為 Sleep。如需執行緒命令的說明,請參閱第 10.14 節「檢視伺服器執行緒(程序)資訊」。此欄的值對應於用戶端/伺服器協定的 COM_xxx 命令和 Com_xxx 狀態變數。請參閱第 7.1.10 節「伺服器狀態變數」

  • 時間

    執行緒處於目前狀態的時間(以秒為單位)。對於副本 SQL 執行緒,此值是最後一個複製事件的時間戳記與副本主機的實際時間之間的時間差(秒)。請參閱第 19.2.3 節「複製執行緒」

  • 狀態

    表示執行緒正在執行的動作、事件或狀態。如需 STATE 值的說明,請參閱第 10.14 節「檢視伺服器執行緒(程序)資訊」

    大多數狀態對應於非常快速的操作。如果執行緒在給定的狀態下停留數秒,則可能存在需要調查的問題。

  • 資訊

    執行緒正在執行的陳述式,如果未執行任何陳述式,則為 NULL。此陳述式可能是傳送至伺服器的陳述式,或者如果該陳述式執行其他陳述式,則可能是最內部的陳述式。例如,如果 CALL 陳述式執行一個正在執行 SELECT 陳述式的預存程序,則 INFO 值會顯示 SELECT 陳述式。

  • 執行引擎

    查詢執行引擎。此值為 PRIMARYSECONDARY。用於 HeatWave 服務和 HeatWave,其中 PRIMARY 引擎為 InnoDB,而 SECONDARY 引擎為 HeatWave (RAPID)。對於 MySQL Community Edition Server、MySQL Enterprise Edition Server(內部部署)和沒有 HeatWave 的 HeatWave 服務,此值始終為 PRIMARY

processlist 表格具有下列索引

  • 以 (ID) 為主索引鍵

不允許對 processlist 表格使用 TRUNCATE TABLE

如前所述,如果啟用 performance_schema_show_processlist 系統變數,則 processlist 表格會作為其他程序資訊來源的替代實作基礎

預設的 SHOW PROCESSLIST 實作會在執行緒管理程式內持有一個全域互斥鎖,並遍歷作用中的執行緒。這會產生負面的效能影響,尤其是在忙碌的系統上。替代的 SHOW PROCESSLIST 實作基於 Performance Schema 的 processlist 表格。此實作從 Performance Schema 查詢作用中的執行緒資料,而不是從執行緒管理程式查詢,並且不需要互斥鎖。

MySQL 設定會以下列方式影響 processlist 表格內容

上述組態參數會影響 processlist 表格的內容。但是,對於給定的組態,processlist 內容不受 performance_schema_show_processlist 設定的影響。

替代的程序清單實作不適用於 INFORMATION_SCHEMAPROCESSLIST 表格或 MySQL 用戶端/伺服器協定的 COM_PROCESS_INFO 命令。