文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


29.12.20.3 語句摘要表格

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

範例語句事件摘要資訊

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 引擎是 InnoDBSECONDARY 引擎是 HeatWave (RAPID)。對於 MySQL Community Edition Server、MySQL Enterprise Edition Server(內部部署)和沒有 HeatWave 的 HeatWave 服務,查詢始終在 PRIMARY 引擎上處理,這表示這些 MySQL Server 上的值始終為 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 資料列也允許計算不符合其他資料列的摘要,方法是使用通用的「其他」儲存區。此資料列可協助您估計摘要是否具有代表性

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

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

儲存程式檢測行為

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

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

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

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

另請參閱第 29.4.3 節,“事件預先篩選”