Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
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

    语句摘要表中的对应xxx列的总和。例如,语句摘要表中的SUM_LOCK_TIMESUM_ERRORS列是events_statements_current表中LOCK_TIMEERRORS列的总和。

  • MAX_CONTROLLED_MEMORY

    报告了在执行过程中由一个语句使用的最大受控内存量。

  • MAX_TOTAL_MEMORY

    报告了在执行过程中由一个语句使用的最大总内存量。

  • COUNT_SECONDARY

    表示查询在SECONDARY引擎上被处理的次数。对于MySQL HeatWave服务和HeatWave,PRIMARY引擎是InnoDB,SECONDARY引擎是HeatWave(RAPID)。对于MySQL Community Edition Server、MySQL Enterprise Edition Server(本地部署)和没有HeatWave的MySQL HeatWave服务,查询总是在PRIMARY引擎上处理,因此这些MySQL Server上的值始终为0。

events_statements_summary_by_digest包含以下额外摘要列:

  • FIRST_SEEN, LAST_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包含以下列。这些既不是分组列也不是摘要列;它们支持语句抽样:

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

    为预准备语句执行的聚合统计信息。

性能_schema的总结表有这些索引:

TRUNCATE TABLE允许对性能_schema的总结表进行。它具有这些效果:

  • 对于events_statements_summary_by_digest,它删除了行。

  • 对于其他未聚合的总结表,不是基于帐户、主机或用户的,截断重置总结列为零,而不是删除行。

  • 对于其他聚合的总结表,基于帐户、主机或用户的,截断删除了没有连接的帐户、主机或用户的行,并将剩余行的总结列重置为零。

此外,每个根据帐户、主机、用户或线程聚合的语句摘要表都隐式地被连接表的截断或events_statements_summary_global_by_event_name表的截断所限制。有关详细信息,请参阅第29.12.8节,“性能_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行,其digest值与刚完成的语句相匹配,那么该语句的统计数据将被聚合到该行中。LAST_SEEN列将更新为当前时间。

  • 如果没有具有刚完成语句的digest值的行,并且表不是满的,会创建一个新的行以用于刚完成的语句。FIRST_SEENLAST_SEEN列将初始化为当前时间。

  • 如果没有具有刚完成语句的digest值的行,并且表是满的,刚完成的语句的统计数据将被添加到一个特殊的catch-all行中,其DIGEST值为NULL,如果必要,将创建该行。若是,则FIRST_SEENLAST_SEEN列将初始化为当前时间。否则,LAST_列将更新为当前时间。

具有DIGEST值为NULL的行是维护的,因为性能_schema表有最大大小限制,由于内存约束。具有DIGEST值为NULL的行允许不匹配其他行的digest值被计数,即使摘要表是满的,使用一个公共other桶。这一行有助于估计摘要是否代表性:

  • 具有DIGEST值为NULL的行,其COUNT_STAR值代表所有digest值的5%,表明摘要表非常代表性;其他行覆盖95%的语句。

  • 具有DIGEST值为NULL的行,其COUNT_STAR值代表所有digest值的50%,表明摘要表不太代表性;其他行只覆盖了语句的一半。很可能DBA应该增加最大表大小,以便更多的行被计数在DIGEST值为NULL的行中使用更具体的行。默认情况下,表是自动大小调整的,但如果这个大小太小,可以在服务器启动时设置performance_schema_digests_size系统变量为更大值。

对于存储程序类型,如果在setup_objects表中启用了仪器,events_statements_summary_by_program对存储程序的统计数据进行维护如下:

  • 为对象添加一行,当它首次在服务器中使用时。

  • 为对象移除一行,当该对象被删除时。

  • 统计数据在对应于对象的行中聚合,随着其执行而增加。

还可以参考第29.4.3节,“事件预过滤”