工具名稱由一連串以 '/'
字元分隔的元素組成。範例名稱
wait/io/file/myisam/log
wait/io/file/mysys/charset
wait/lock/table/sql/handler
wait/synch/cond/mysys/COND_alarm
wait/synch/cond/sql/BINLOG::update_cond
wait/synch/mutex/mysys/BITMAP_mutex
wait/synch/mutex/sql/LOCK_delete
wait/synch/rwlock/sql/Query_cache_query::lock
stage/sql/closing tables
stage/sql/Sorting result
statement/com/Execute
statement/com/Query
statement/sql/create_table
statement/sql/lock_tables
errors
工具名稱空間具有樹狀結構。從左到右的工具名稱元素提供從較一般到較特定的進展。名稱具有的元素數量取決於工具的類型。
名稱中給定元素的解譯取決於其左側的元素。例如,myisam
出現在下列兩個名稱中,但第一個名稱中的 myisam
與檔案 I/O 相關,而第二個名稱中的 myisam
與同步工具相關
wait/io/file/myisam/log
wait/synch/cond/myisam/MI_SORT_INFO::cond
工具名稱由 Performance Schema 實作定義的結構前綴和實作工具程式碼的開發人員定義的後綴組成。工具前綴的頂層元素表示工具的類型。此元素也決定 performance_timers
表格中哪個事件計時器適用於該工具。對於工具名稱的前綴部分,頂層表示工具的類型。
工具名稱的後綴部分來自工具本身的程式碼。後綴可能包含如下層級
主要元素的名稱(例如
myisam
、innodb
、mysys
或sql
等伺服器模組)或外掛程式名稱。程式碼中變數的名稱,格式為
XXX
(全域變數) 或
(類別CCC
::MMM
CCC
中的成員MMM
)。範例:COND_thread_cache
、THR_LOCK_myisam
、BINLOG::LOCK_index
。
idle
:已檢測的閒置事件。此工具沒有其他元素。error
:已檢測的錯誤事件。此工具沒有其他元素。memory
:已檢測的記憶體事件。stage
:已檢測的階段事件。statement
:已檢測的陳述式事件。transaction
:已檢測的交易事件。此工具沒有其他元素。wait
:已檢測的等待事件。
idle
工具用於閒置事件,Performance Schema 會產生這些事件,如 第 29.12.3.5 節「socket_instances 表格」中 socket_instances.STATE
資料行的說明所述。
error
工具表示是否要收集伺服器錯誤和警告的資訊。預設會啟用此工具。setup_instruments
表格中 error
列的 TIMED
資料行不適用,因為不會收集計時資訊。
預設情況下,記憶體檢測是啟用的。記憶體檢測可以在啟動時啟用或停用,也可以在執行時透過更新setup_instruments
表格中相關儀器的ENABLED
欄位來動態啟用或停用。記憶體儀器的名稱格式為memory/
,其中程式碼區域
/儀器名稱
程式碼區域
是諸如sql
或myisam
之類的值,而儀器名稱
是儀器的詳細資訊。
名稱帶有前綴memory/performance_schema/
的儀器會揭露效能架構中內部緩衝區分配了多少記憶體。memory/performance_schema/
儀器是內建的,始終啟用,並且無法在啟動時或執行時停用。內建的記憶體儀器僅顯示在memory_summary_global_by_event_name
表格中。如需更多資訊,請參閱第 29.17 節,「效能架構記憶體配置模型」。
階段儀器的名稱格式為stage/
,其中程式碼區域
/階段名稱
程式碼區域
是諸如sql
或myisam
之類的值,而階段名稱
表示語句處理的階段,例如Sorting result
或Sending data
。階段對應於SHOW PROCESSLIST
顯示的執行緒狀態,或是資訊綱要PROCESSLIST
表格中可見的狀態。
statement/abstract/*
:語句操作的抽象儀器。抽象儀器在語句分類的早期階段使用,在確切語句類型已知之前,然後在類型已知時更改為更具體的語句儀器。有關此過程的描述,請參閱第 29.12.6 節,「效能架構語句事件表格」。statement/com
:已檢測的命令操作。這些的名稱對應於COM_
操作(請參閱xxx
mysql_com.h
標頭檔和sql/sql_parse.cc
)。例如,statement/com/Connect
和statement/com/Init DB
儀器對應於COM_CONNECT
和COM_INIT_DB
命令。statement/scheduler/event
:用於追蹤事件排程器執行的所有事件的單一儀器。當排定的事件開始執行時,此儀器開始發揮作用。statement/sp
:由預存程式執行的已檢測內部指令。例如,statement/sp/cfetch
和statement/sp/freturn
儀器用於游標提取和函式返回指令。statement/sql
:已檢測的 SQL 語句操作。例如,statement/sql/create_db
和statement/sql/select
儀器用於CREATE DATABASE
和SELECT
語句。
已檢測的執行緒顯示在setup_threads
表格中,該表格會揭露執行緒類別名稱和屬性。
執行緒儀器以thread
開頭(例如,thread/sql/parser_service
或thread/performance_schema/setup
)。
用於ndbcluster
外掛程式執行緒的執行緒儀器名稱以thread/ndbcluster/
開頭;有關這些的更多資訊,請參閱ndbcluster 外掛程式執行緒。
wait/io
已檢測的 I/O 操作。
wait/io/file
已檢測的檔案 I/O 操作。對於檔案,等待時間是等待檔案操作完成的時間(例如,呼叫
fwrite()
)。由於快取,磁碟上的實際檔案 I/O 可能不會在此呼叫中發生。wait/io/socket
已檢測的 Socket 操作。Socket 儀器的名稱格式為
wait/io/socket/sql/
。伺服器針對它支援的每個網路協定都有一個接聽 Socket。與 TCP/IP 或 Unix Socket 檔案連線的接聽 Socket 相關聯的儀器,其socket_type
socket_type
值分別為server_tcpip_socket
或server_unix_socket
。當接聽 Socket 偵測到連線時,伺服器會將連線轉移到由單獨執行緒管理的新 Socket。新連線執行緒的儀器,其socket_type
值為client_connection
。wait/io/table
已檢測的表格 I/O 操作。這些包括對永久基本表格或暫時表格的列級存取。影響列的操作為提取、插入、更新和刪除。對於視圖,等待時間與視圖參考的基本表格相關聯。
與大多數等待時間不同,表格 I/O 等待時間可以包括其他等待時間。例如,表格 I/O 可能包括檔案 I/O 或記憶體操作。因此,表格 I/O 等待時間的
events_waits_current
通常有兩列。如需更多資訊,請參閱第 29.8 節,「效能架構原子和分子事件」。某些列操作可能會導致多次表格 I/O 等待。例如,插入可能會啟動觸發器,導致更新。
wait/lock
已檢測的鎖定操作。
wait/lock/table
已檢測的表格鎖定操作。
wait/lock/metadata/sql/mdl
已檢測的中繼資料鎖定操作。
wait/synch
已檢測的同步物件。對於同步物件,
TIMER_WAIT
時間包括在嘗試取得物件鎖定時被封鎖的時間量(如果有的話)。wait/synch/cond
條件由一個執行緒用來向其他執行緒發出訊號,表示他們正在等待的某個事件已經發生。如果只有一個執行緒在等待條件,它可以醒來並繼續執行。如果有幾個執行緒在等待,它們可以全部醒來並競爭他們正在等待的資源。
wait/synch/mutex
互斥物件,用於允許存取資源(例如可執行程式碼的一部分),同時防止其他執行緒存取該資源。
wait/synch/prlock
優先級讀寫鎖鎖定物件。
wait/synch/rwlock
用於鎖定特定變數以供存取,同時防止其他執行緒使用該變數的普通讀/寫鎖物件。多個執行緒可以同時取得共用讀取鎖定。一次只能有一個執行緒取得獨佔寫入鎖定。
wait/synch/sxlock
共用獨佔(SX)鎖是一種讀寫鎖鎖定物件,它提供對共用資源的寫入存取,同時允許其他執行緒進行不一致的讀取。
sxlocks
可最佳化並行性,並提高讀寫工作負載的可擴展性。