パフォーマンススキーマは、ステートメントの最小待機時間、最大待機時間、および平均待機時間に関する情報を含むステートメントイベントのサマリーテーブルを保守します (セクション27.12.18.3「ステートメントサマリーテーブル」 を参照)。 これらのテーブルでは、システムパフォーマンスの高度な評価が可能です。 よりきめ細かいレベルでの評価を許可するために、パフォーマンススキーマはステートメントの待機時間のヒストグラムデータも収集します。 これらのヒストグラムを使用すると、待機時間分布をさらに把握できます。
セクション27.12.6「パフォーマンススキーマステートメントイベントテーブル」 は、ステートメントのサマリーの基になるイベントを記述します。 ステートメントイベントの内容、現在および過去のステートメントイベントテーブル、およびステートメントイベント収集の制御方法 (デフォルトでは部分的に無効になっています) については、その説明を参照してください。
ステートメントヒストグラム情報の例:
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
各ステートメントヒストグラムサマリーテーブルには、テーブルがイベントを集計する方法を示す 1 つ以上のグループ化カラムがあります:
-
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
までの間隔の待機時間で測定されたが、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
が暗黙的に切り捨てられます。