文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.20.3 語句摘要表格

Performance Schema 維護表格來收集目前和最近的語句事件,並在摘要表格中彙總該資訊。第 29.12.6 節, 「Performance Schema 語句事件表格」描述了語句摘要所依據的事件。請參閱該討論以瞭解語句事件的內容、目前和歷史語句事件表格,以及如何控制預設為部分停用的語句事件收集。

範例語句事件摘要資訊

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 表格中事件工具的名稱

每個語句摘要表格都有以下包含彙總值的摘要欄(例外情況除外):

  • COUNT_STARSUM_TIMER_WAITMIN_TIMER_WAITAVG_TIMER_WAITMAX_TIMER_WAIT

    這些欄位與等待事件摘要表格(請參閱第 29.12.20.1 節「等待事件摘要表格」)中相同名稱的欄位類似,但語句摘要表格是彙總來自events_statements_current 而非events_waits_current 的事件。

    prepared_statements_instances 表格沒有這些欄位。

  • SUM_xxx

    events_statements_current 表格中對應 xxx 欄位的彙總。例如,語句摘要表格中的 SUM_LOCK_TIMESUM_ERRORS 欄位是 events_statements_current 表格中 LOCK_TIMEERRORS 欄位的彙總。

  • MAX_CONTROLLED_MEMORY

    報告語句在執行期間使用的最大受控記憶體量。

  • MAX_TOTAL_MEMORY

    報告語句在執行期間使用的最大記憶體量。

  • COUNT_SECONDARY

    查詢在 SECONDARY 引擎上處理的次數。用於 HeatWave 服務和 HeatWave,其中 PRIMARY 引擎是 InnoDB,而 SECONDARY 引擎是 HeatWave (RAPID)。對於 MySQL 社群版伺服器、MySQL 企業版伺服器(內部部署)以及沒有 HeatWave 的 HeatWave 服務,查詢一律在 PRIMARY 引擎上處理,這表示在這些 MySQL 伺服器上的值一律為 0。

events_statements_summary_by_digest 表格具有這些額外的摘要欄位

  • FIRST_SEENLAST_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_SEENQUERY_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_STATEMENTSSUM_STATEMENTS_WAITMIN_STATEMENTS_WAITAVG_STATEMENTS_WAITMAX_STATEMENTS_WAIT

    關於在預存程式執行期間叫用的巢狀語句的統計資料。

prepared_statements_instances 表格具有這些額外的摘要欄位

  • COUNT_EXECUTESUM_TIMER_EXECUTEMIN_TIMER_EXECUTEAVG_TIMER_EXECUTEMAX_TIMER_EXECUTE

    預存語句執行的彙總統計資料。

語句摘要表格具有這些索引

允許對語句摘要表格使用 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_SEENLAST_SEEN 欄位會以目前時間初始化。

  • 如果沒有資料列具有剛完成語句的語句摘要值,且表格已滿,則剛完成語句的統計資料會新增至具有 DIGEST = NULL 的特殊全包資料列,如果必要,會建立此資料列。如果建立了資料列,則 FIRST_SEENLAST_SEEN 欄位會以目前時間初始化。否則,LAST_SEEN 欄位會以目前時間更新。

由於記憶體限制,Performance Schema 表格具有最大大小,因此會維護 DIGEST = NULL 的資料列。DIGEST = NULL 資料列允許即使摘要表格已滿,也能夠使用一般其他儲存區來計算不符合其他資料列的摘要。此資料列可協助您估計摘要是否具有代表性

  • 具有 COUNT_STAR 值(表示所有摘要的 5%)的 DIGEST = NULL 資料列表示摘要摘要表格非常具有代表性;其他資料列涵蓋 95% 的已看見語句。

  • 具有 COUNT_STAR 值(表示所有摘要的 50%)的 DIGEST = NULL 資料列表示摘要摘要表格不具代表性;其他資料列僅涵蓋已看見語句的一半。DBA 很可能應該增加最大表格大小,以便使用更明確的資料列來計算 DIGEST = NULL 資料列中計算的更多資料列。依預設,表格會自動調整大小,但如果此大小太小,請在伺服器啟動時將 performance_schema_digests_size 系統變數設定為較大的值。

預存程式檢測行為

對於已在 setup_objects 表格中啟用檢測的預存程式類型,events_statements_summary_by_program 會如下維護預存程式的統計資料

  • 當物件首次在伺服器中使用時,會為該物件新增一列。

  • 當物件被捨棄時,會移除該物件的列。

  • 當物件執行時,統計資訊會彙總到該物件的列中。

另請參閱第 29.4.3 節,「事件預先篩選」