Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


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

MySQL 5.6.3 以降、パフォーマンススキーマは現在および最近のステートメントイベントを集計するためのテーブルを保守し、その情報をサマリーテーブルに集計します。セクション22.9.6「パフォーマンススキーマステートメントイベントテーブル」で、ステートメントサマリーが基づいているイベントについて説明しています。ステートメントイベントの内容、現在および最近のステートメントイベントテーブル、およびステートメントイベント収集の制御方法に関する情報については、その説明を参照してください。

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

  • events_statements_summary_by_digest には SCHEMA_NAME および DIGEST カラムがあります。各行は特定のスキーマ/ダイジェスト値のイベントを要約します。( DIGEST_TEXT カラムは、対応する正規化されたステートメントダイジェストテキストを格納しますが、グループ化カラムでもサマリーカラムでもありません。)

    このテーブルは、5.6.5 で追加されました。MySQL 5.6.9 より前では、SCHEMA_NAME カラム値がなく、グループ化は DIGEST 値のみに基づきます。

  • events_statements_summary_by_thread_by_event_name には THREAD_ID および EVENT_NAME カラムがあります。各行は特定のスレッドおよびイベント名のイベントを要約します。

  • events_statements_summary_global_by_event_name には EVENT_NAME カラムがあります。各行は特定のイベント名のイベントを要約します。

すべてのステートメントサマリーテーブルには、集計された値を格納するこれらのサマリーカラムがあります。

  • COUNT_STARSUM_TIMER_WAITMIN_TIMER_WAITAVG_TIMER_WAITMAX_TIMER_WAIT

    ステートメントサマリーテーブルは、events_waits_current ではなく events_statements_current からイベントを集計することを除き、これらのカラムはイベント待機サマリーテーブル (セクション22.9.9.1「イベント待機サマリーテーブル」を参照) の同じ名前のカラムに似ています。

  • SUM_xxx

    events_statements_current テーブル内の対応する xxx カラムの集計。たとえば、ステートメントサマリーテーブルの SUM_LOCK_TIME および SUM_ERRORS カラムは events_statements_current テーブルの LOCK_TIME および ERRORS カラムの集計です。

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

  • FIRST_SEEN_TIMESTAMPLAST_SEEN_TIMESTAMP

    特定のダイジェスト値を持つステートメントが最初に確認された時間と最後に確認された時間。

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

mysql> SELECT * FROM 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
...

TRUNCATE TABLE はステートメントサマリーテーブルに使用できます。events_statements_summary_by_digest に対して、それはテーブルを空にします。ほかのステートメントサマリーテーブルに対して、それは行を削除するのではなく、サマリーカラムを 0 にリセットします。

ステートメントダイジェストアグリゲーションルール

statement_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 です。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.