MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

27.12.18.3 ステートメントサマリーテーブル

パフォーマンススキーマは、現在および最近のステートメントイベントを収集するためのテーブルを保持し、その情報をサマリーテーブルに集約します。セクション27.12.6「パフォーマンススキーマステートメントイベントテーブル」 は、ステートメントのサマリーの基になるイベントを記述します。 ステートメントイベントの内容、現在および過去のステートメントイベントテーブル、およびステートメントイベント収集の制御方法 (デフォルトでは部分的に無効になっています) については、その説明を参照してください。

ステートメントイベントサマリー情報の例:

mysql> SELECT *
       FROM performance_schema.events_statements_summary_global_by_event_name\G
*************************** 1. row ***************************
                 EVENT_NAME: statement/sql/select
                 COUNT_STAR: 25
             SUM_TIMER_WAIT: 1535983999000
             MIN_TIMER_WAIT: 209823000
             AVG_TIMER_WAIT: 61439359000
             MAX_TIMER_WAIT: 1363397650000
              SUM_LOCK_TIME: 20186000000
                 SUM_ERRORS: 0
               SUM_WARNINGS: 0
          SUM_ROWS_AFFECTED: 0
              SUM_ROWS_SENT: 388
          SUM_ROWS_EXAMINED: 370
SUM_CREATED_TMP_DISK_TABLES: 0
     SUM_CREATED_TMP_TABLES: 0
       SUM_SELECT_FULL_JOIN: 0
 SUM_SELECT_FULL_RANGE_JOIN: 0
           SUM_SELECT_RANGE: 0
     SUM_SELECT_RANGE_CHECK: 0
            SUM_SELECT_SCAN: 6
      SUM_SORT_MERGE_PASSES: 0
             SUM_SORT_RANGE: 0
              SUM_SORT_ROWS: 0
              SUM_SORT_SCAN: 0
          SUM_NO_INDEX_USED: 6
     SUM_NO_GOOD_INDEX_USED: 0
...

各ステートメントサマリーテーブルには、テーブルのイベントの集計方法を示す 1 つまたは複数のグループ化カラムがあります。 イベント名は、setup_instruments テーブル内のイベントインストゥルメントの名前を参照します:

各ステートメント要約テーブルには、集計値を含む次の要約カラムがあります (ただし、次の例外があります):

events_statements_summary_by_digest テーブルにはこれらの追加のサマリーカラムがあります。

events_statements_summary_by_digest テーブルには、次のカラムが含まれます。 これらはグループ化カラムでもサマリーカラムでもなく、ステートメントサンプリングをサポートしています:

events_statements_summary_by_program テーブルには、次の追加のサマリーカラムがあります:

prepared_statements_instances テーブルには、次の追加のサマリーカラムがあります:

ステートメントサマリーテーブルには、次のインデックスがあります:

TRUNCATE TABLE はステートメントサマリーテーブルに使用できます。 これには次の効果があります:

また、アカウント、ホスト、ユーザーまたはスレッド別に集計された各ステートメントサマリーテーブルは、依存する接続テーブルの切捨てまたは events_statements_summary_global_by_event_name の切捨てによって暗黙的に切り捨てられます。 詳細は、セクション27.12.8「パフォーマンススキーマ接続テーブル」を参照してください。

また、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 カラムが現在の時間で更新されます。

パフォーマンススキーマテーブルには、メモリー制約による最大サイズがあるため、DIGEST = NULL の行は保守されます。 DIGEST = NULL 行は、ほかの行に一致しないダイジェストが、サマリーテーブルがいっぱいである場合でも、共通のほかのバケットを使用して、カウントされることを許可します。 この行は、ダイジェストサマリーが代表的であるかどうかを推定するのに役立ちます。

  • すべてのダイジェストのうち 5% を表す COUNT_STAR 値がある DIGEST = NULL 行は、ダイジェストサマリーテーブルがきわめて代表的であることを示します。ほかの行が、存在するステートメントの 95% を占めます。

  • すべてのダイジェストのうち 50% を表す COUNT_STAR 値がある DIGEST = NULL 行は、ダイジェストサマリーテーブルがあまり代表的でないことを示します。ほかの行は、存在するステートメントの半分しか占めません。 たいていの場合に DBA は DIGEST = NULL 行にカウントされる行の多くが、代わりにより具体的な行を使用してカウントされるように、最大テーブルサイズを拡大するべきです。 これを実行するには、サーバーの起動時に、performance_schema_digests_size システム変数を大きな値に設定します。 デフォルトサイズは 200 です。

ストアドプログラムインツルメンテーションの動作

setup_objects テーブルでインスツルメンテーションが有効になっているストアドプログラムタイプの場合、events_statements_summary_by_program は次のようにストアドプログラムの統計を保持します:

  • 行は、サーバーで最初に使用されたときにオブジェクトに追加されます。

  • オブジェクトの行は、オブジェクトが削除されると削除されます。

  • 統計は、実行時にオブジェクトの行で集計されます。

セクション27.4.3「イベントの事前フィルタリング」も参照してください。