Performance Schema 維護陳述式事件摘要表,其中包含有關最小、最大和平均陳述式延遲的資訊 (請參閱章節 29.12.20.3,「陳述式摘要表格」)。這些表格允許對系統效能進行高階評估。為了允許更精細層次的評估,Performance Schema 也會收集陳述式延遲的直方圖資料。這些直方圖可提供關於延遲分佈的額外見解。
章節 29.12.6,「Performance Schema 陳述式事件表格」描述了陳述式摘要所依據的事件。請參閱該討論以瞭解關於陳述式事件內容、目前和歷史陳述式事件表格,以及如何控制陳述式事件收集 (預設為部分停用) 的資訊。
範例陳述式直方圖資訊
mysql> SELECT *
FROM performance_schema.events_statements_histogram_by_digest
WHERE SCHEMA_NAME = 'mydb' AND DIGEST = 'bb3f69453119b2d7b3ae40673a9d4c7c'
AND COUNT_BUCKET > 0 ORDER BY BUCKET_NUMBER\G
*************************** 1. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 42
BUCKET_TIMER_LOW: 66069344
BUCKET_TIMER_HIGH: 69183097
COUNT_BUCKET: 1
COUNT_BUCKET_AND_LOWER: 1
BUCKET_QUANTILE: 0.058824
*************************** 2. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 43
BUCKET_TIMER_LOW: 69183097
BUCKET_TIMER_HIGH: 72443596
COUNT_BUCKET: 1
COUNT_BUCKET_AND_LOWER: 2
BUCKET_QUANTILE: 0.117647
*************************** 3. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 44
BUCKET_TIMER_LOW: 72443596
BUCKET_TIMER_HIGH: 75857757
COUNT_BUCKET: 2
COUNT_BUCKET_AND_LOWER: 4
BUCKET_QUANTILE: 0.235294
*************************** 4. row ***************************
SCHEMA_NAME: mydb
DIGEST: bb3f69453119b2d7b3ae40673a9d4c7c
BUCKET_NUMBER: 45
BUCKET_TIMER_LOW: 75857757
BUCKET_TIMER_HIGH: 79432823
COUNT_BUCKET: 6
COUNT_BUCKET_AND_LOWER: 10
BUCKET_QUANTILE: 0.625000
...例如,在第 3 列中,這些值表示有 23.52% 的查詢在 75.86 微秒內執行
BUCKET_TIMER_HIGH: 75857757
BUCKET_QUANTILE: 0.235294在第 4 列中,這些值表示有 62.50% 的查詢在 79.44 微秒內執行
BUCKET_TIMER_HIGH: 79432823
BUCKET_QUANTILE: 0.625000每個陳述式直方圖摘要表都有一個或多個分組欄,以指出表格如何彙總事件
events_statements_histogram_by_digest具有SCHEMA_NAME、DIGEST和BUCKET_NUMBER欄SCHEMA_NAME和DIGEST欄會識別events_statements_summary_by_digest表格中的陳述式摘要列。具有相同
SCHEMA_NAME和DIGEST值的events_statements_histogram_by_digest列構成該架構/摘要組合的直方圖。在給定的直方圖中,
BUCKET_NUMBER欄會指出儲存區編號。
events_statements_histogram_global具有BUCKET_NUMBER欄。此表格會使用單一直方圖,以全域方式彙總跨架構名稱和摘要值的延遲。BUCKET_NUMBER欄會指出此全域直方圖內的儲存區編號。
直方圖由 N 個儲存區組成,其中每一列代表一個儲存區,而儲存區編號則由 BUCKET_NUMBER 欄指示。儲存區編號從 0 開始。
每個陳述式直方圖摘要表都有這些包含彙總值的摘要欄
BUCKET_TIMER_LOW、BUCKET_TIMER_HIGH一個儲存桶會計算延遲時間(以皮秒為單位)介於
BUCKET_TIMER_LOW和BUCKET_TIMER_HIGH之間的語句數量。第一個儲存桶(
BUCKET_NUMBER= 0)的BUCKET_TIMER_LOW值為 0。一個儲存桶(
BUCKET_NUMBER=k)的BUCKET_TIMER_LOW值與前一個儲存桶(BUCKET_NUMBER=k−1)的BUCKET_TIMER_HIGH值相同。最後一個儲存桶是針對延遲時間超過直方圖中先前儲存桶的語句的總括儲存桶。
COUNT_BUCKET延遲時間在
BUCKET_TIMER_LOW到但不包含BUCKET_TIMER_HIGH區間內測量的語句數量。COUNT_BUCKET_AND_LOWER延遲時間在 0 到但不包含
BUCKET_TIMER_HIGH區間內測量的語句數量。BUCKET_QUANTILE落入這個或更低儲存桶的語句比例。此比例的定義是
COUNT_BUCKET_AND_LOWER / SUM(COUNT_BUCKET),並顯示為一個方便的欄位。
語句直方圖摘要表格具有以下索引:
events_statements_histogram_by_digest:在(
SCHEMA_NAME,DIGEST,BUCKET_NUMBER)上的唯一索引。
events_statements_histogram_global:在(
BUCKET_NUMBER)上的主索引鍵。
允許對語句直方圖摘要表格使用 TRUNCATE TABLE。截斷操作會將 COUNT_BUCKET 和 COUNT_BUCKET_AND_LOWER 欄位設定為 0。
此外,截斷 events_statements_summary_by_digest 會隱式地截斷 events_statements_histogram_by_digest,而截斷 events_statements_summary_global_by_event_name 會隱式地截斷 events_statements_histogram_global。