效能結構描述會維護表格,以收集目前與最近的語句事件,並將該資訊彙總在摘要表格中。 第 29.12.6 節,「效能結構描述語句事件表格」說明了語句摘要所依據的事件。請參閱該討論以了解語句事件的內容、目前與歷史語句事件表格,以及如何控制語句事件收集,該收集預設為部分停用。
範例語句事件摘要資訊
mysql> SELECT *
FROM performance_schema.events_statements_summary_global_by_event_name\G
*************************** 1. row ***************************
EVENT_NAME: statement/sql/select
COUNT_STAR: 54
SUM_TIMER_WAIT: 38860400000
MIN_TIMER_WAIT: 52400000
AVG_TIMER_WAIT: 719600000
MAX_TIMER_WAIT: 12631800000
SUM_LOCK_TIME: 88000000
SUM_ERRORS: 0
SUM_WARNINGS: 0
SUM_ROWS_AFFECTED: 0
SUM_ROWS_SENT: 60
SUM_ROWS_EXAMINED: 120
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_CREATED_TMP_TABLES: 21
SUM_SELECT_FULL_JOIN: 16
SUM_SELECT_FULL_RANGE_JOIN: 0
SUM_SELECT_RANGE: 0
SUM_SELECT_RANGE_CHECK: 0
SUM_SELECT_SCAN: 41
SUM_SORT_MERGE_PASSES: 0
SUM_SORT_RANGE: 0
SUM_SORT_ROWS: 0
SUM_SORT_SCAN: 0
SUM_NO_INDEX_USED: 22
SUM_NO_GOOD_INDEX_USED: 0
SUM_CPU_TIME: 0
MAX_CONTROLLED_MEMORY: 2028360
MAX_TOTAL_MEMORY: 2853429
COUNT_SECONDARY: 0
...
每個語句摘要表格都有一個或多個分組欄,以指示表格如何彙總事件。事件名稱是指 setup_instruments
表格中事件儀器的名稱。
events_statements_summary_by_account_by_event_name
具有EVENT_NAME
、USER
和HOST
欄。每一列都會摘要特定帳戶(使用者和主機組合)和事件名稱的事件。events_statements_summary_by_digest
具有SCHEMA_NAME
和DIGEST
欄。每一列都會摘要每個結構描述和摘要值的事件。(DIGEST_TEXT
欄包含對應的正規化語句摘要文字,但既不是分組欄也不是摘要欄。QUERY_SAMPLE_TEXT
、QUERY_SAMPLE_SEEN
和QUERY_SAMPLE_TIMER_WAIT
欄也不是分組欄或摘要欄;它們支援語句取樣。)表格中的最大列數會在伺服器啟動時自動調整大小。若要明確設定此最大值,請在伺服器啟動時設定
performance_schema_digests_size
系統變數。events_statements_summary_by_host_by_event_name
具有EVENT_NAME
和HOST
欄。每一列都會摘要特定主機和事件名稱的事件。events_statements_summary_by_program
具有OBJECT_TYPE
、OBJECT_SCHEMA
和OBJECT_NAME
欄。每一列都會摘要特定儲存程式(儲存程序或函數、觸發程序或事件)的事件。events_statements_summary_by_thread_by_event_name
具有THREAD_ID
和EVENT_NAME
欄。每一列都會摘要特定執行緒和事件名稱的事件。events_statements_summary_by_user_by_event_name
具有EVENT_NAME
和USER
欄。每一列都會摘要特定使用者和事件名稱的事件。events_statements_summary_global_by_event_name
有一個EVENT_NAME
資料行。每一列彙總給定事件名稱的事件。prepared_statements_instances
有一個OBJECT_INSTANCE_BEGIN
資料行。每一列彙總給定預處理語句的事件。
每個語句摘要表都有這些包含彙總值的摘要資料行(例外情況會另行說明)
COUNT_STAR
、SUM_TIMER_WAIT
、MIN_TIMER_WAIT
、AVG_TIMER_WAIT
、MAX_TIMER_WAIT
這些資料行與等待事件摘要表中同名的資料行類似(請參閱第 29.12.20.1 節「等待事件摘要表」),但語句摘要表彙總的事件來自
events_statements_current
,而非events_waits_current
。prepared_statements_instances
資料表沒有這些資料行。SUM_
xxx
在
events_statements_current
資料表中,對應的xxx
資料行的彙總。例如,語句摘要表中的SUM_LOCK_TIME
和SUM_ERRORS
資料行,分別是events_statements_current
資料表中LOCK_TIME
和ERRORS
資料行的彙總。MAX_CONTROLLED_MEMORY
報告語句執行期間使用的最大受控記憶體量。
MAX_TOTAL_MEMORY
報告語句執行期間使用的最大記憶體量。
COUNT_SECONDARY
查詢在
SECONDARY
引擎上處理的次數。適用於 HeatWave 服務和 HeatWave,其中PRIMARY
引擎是InnoDB
,SECONDARY
引擎是 HeatWave (RAPID
)。對於 MySQL Community Edition Server、MySQL Enterprise Edition Server(內部部署)和沒有 HeatWave 的 HeatWave 服務,查詢始終在PRIMARY
引擎上處理,這表示這些 MySQL Server 上的值始終為 0。
events_statements_summary_by_digest
資料表具有這些額外的摘要資料行
FIRST_SEEN
、LAST_SEEN
時間戳記,指示何時首次看到具有給定摘要值的語句,以及最近一次看到的時間。
QUANTILE_95
:語句延遲的第 95 個百分位數,單位為皮秒。此百分位數是從收集的直方圖數據計算出的高估值。換句話說,對於給定的摘要,95% 的已測量語句的延遲低於QUANTILE_95
。如需存取直方圖數據,請使用第 29.12.20.4 節「語句直方圖摘要表」中所述的表格。
QUANTILE_99
:與QUANTILE_95
類似,但針對第 99 個百分位數。QUANTILE_999
:與QUANTILE_95
類似,但針對第 99.9 個百分位數。
events_statements_summary_by_digest
資料表包含以下資料行。這些既不是分組資料行,也不是摘要資料行;它們支援語句取樣
QUERY_SAMPLE_TEXT
產生該列中摘要值的範例 SQL 語句。此資料行允許應用程式存取產生該摘要值的伺服器實際看到的語句(針對給定的摘要值)。其中一個用途可能是對語句執行
EXPLAIN
,以檢查與頻繁發生的摘要相關的代表性語句的執行計畫。當
QUERY_SAMPLE_TEXT
資料行被賦予值時,QUERY_SAMPLE_SEEN
和QUERY_SAMPLE_TIMER_WAIT
資料行也會被賦予值。預設情況下,語句顯示可用的最大空間為 1024 個位元組。若要變更此值,請在伺服器啟動時設定
performance_schema_max_sql_text_length
系統變數。(變更此值也會影響其他 Performance Schema 資料表中的資料行。請參閱第 29.10 節「Performance Schema 語句摘要和取樣」。)如需語句取樣的相關資訊,請參閱第 29.10 節「Performance Schema 語句摘要和取樣」。
QUERY_SAMPLE_SEEN
時間戳記,指示看到
QUERY_SAMPLE_TEXT
資料行中的語句的時間。QUERY_SAMPLE_TIMER_WAIT
QUERY_SAMPLE_TEXT
資料行中範例語句的等待時間。
events_statements_summary_by_program
資料表具有這些額外的摘要資料行
COUNT_STATEMENTS
、SUM_STATEMENTS_WAIT
、MIN_STATEMENTS_WAIT
、AVG_STATEMENTS_WAIT
、MAX_STATEMENTS_WAIT
有關儲存程序執行期間調用的巢狀語句的統計資料。
prepared_statements_instances
資料表具有這些額外的摘要資料行
COUNT_EXECUTE
、SUM_TIMER_EXECUTE
、MIN_TIMER_EXECUTE
、AVG_TIMER_EXECUTE
、MAX_TIMER_EXECUTE
預處理語句執行的彙總統計資料。
語句摘要表具有以下索引
events_transactions_summary_by_account_by_event_name
:主索引鍵位於 (
USER
、HOST
、EVENT_NAME
) 上
events_statements_summary_by_digest
:主索引鍵位於 (
SCHEMA_NAME
、DIGEST
) 上
events_transactions_summary_by_host_by_event_name
:主索引鍵位於 (
HOST
、EVENT_NAME
) 上
events_statements_summary_by_program
:主索引鍵位於 (
OBJECT_TYPE
、OBJECT_SCHEMA
、OBJECT_NAME
) 上
events_statements_summary_by_thread_by_event_name
:主索引鍵位於 (
THREAD_ID
、EVENT_NAME
) 上
events_transactions_summary_by_user_by_event_name
:主索引鍵位於 (
USER
、EVENT_NAME
) 上
events_statements_summary_global_by_event_name
:主索引鍵位於 (
EVENT_NAME
) 上
TRUNCATE TABLE
允許用於語句摘要表。它具有以下效果
對於
events_statements_summary_by_digest
,它會移除這些列。對於其他不是按帳戶、主機或使用者彙總的摘要表,截斷會將摘要資料行重設為零,而不是移除列。
對於其他按帳戶、主機或使用者彙總的摘要表,截斷會移除沒有連線的帳戶、主機或使用者的列,並將其餘列的摘要資料行重設為零。
此外,每個按帳戶、主機、使用者或執行緒彙總的語句摘要表,都會在其依賴的連線表截斷,或截斷 events_statements_summary_global_by_event_name
時隱式截斷。如需詳細資訊,請參閱第 29.12.8 節「Performance Schema 連線表」。
此外,截斷 events_statements_summary_by_digest
會隱式截斷 events_statements_histogram_by_digest
,而截斷 events_statements_summary_global_by_event_name
會隱式截斷 events_statements_histogram_global
。
如果啟用 statements_digest
取用者,則當語句完成時,會如下所示將彙總到 events_statements_summary_by_digest
中。彙總是根據為語句計算的 DIGEST
值。
如果
events_statements_summary_by_digest
資料列已存在剛完成的語句的摘要值,則該語句的統計資料會彙總到該資料列。LAST_SEEN
資料行會更新為目前時間。如果沒有任何資料列具有剛完成的語句的摘要值,且資料表未滿,則會為該語句建立新的資料列。
FIRST_SEEN
和LAST_SEEN
資料行會使用目前時間初始化。如果沒有任何資料列具有剛完成的語句的語句摘要值,且資料表已滿,則剛完成的語句的統計資料會新增至具有
DIGEST
=NULL
的特殊「總括」資料列中(如果需要,則會建立該資料列)。如果建立該資料列,FIRST_SEEN
和LAST_SEEN
資料行會使用目前時間初始化。否則,LAST_SEEN
資料行會使用目前時間更新。
由於記憶體限制,Performance Schema 資料表具有最大大小,因此會維護 DIGEST
= NULL
的資料列。即使摘要表已滿,DIGEST
= NULL
資料列也允許計算不符合其他資料列的摘要,方法是使用通用的「其他」儲存區。此資料列可協助您估計摘要是否具有代表性
DIGEST
=NULL
的資料列,其COUNT_STAR
值表示所有摘要的 5%,表示摘要摘要表非常具有代表性;其他資料列涵蓋 95% 的已見語句。DIGEST
=NULL
的資料列,其COUNT_STAR
值表示所有摘要的 50%,表示摘要摘要表不具有代表性;其他資料列僅涵蓋一半的已見語句。最有可能的是,DBA 應增加最大資料表大小,以便使用更具體的資料列,而不是計入DIGEST
=NULL
資料列中的更多資料列。根據預設,資料表會自動調整大小,但如果此大小太小,請在伺服器啟動時,將performance_schema_digests_size
系統變數設定為較大的值。
對於在 setup_objects
表格中啟用檢測的儲存程式類型,events_statements_summary_by_program
會維護儲存程式的統計資料,如下所示:
當物件首次在伺服器中使用時,會為該物件新增一列。
當物件被刪除時,會移除該物件的列。
當物件執行時,統計資料會彙總到該物件的列中。
另請參閱第 29.4.3 節,“事件預先篩選”。