25.12.15.4 Transaction 摘要 table

性能架构维护用于收集当前和最近事务事件的 table,并将该信息汇总到摘要 table 中。 第 25.12.7 节“性能架构事务 table”描述了事务摘要所基于的事件。请参阅该讨论,以获取有关事务事件的内容,当前和历史事务事件 table 以及如何控制事务事件收集(默认情况下已禁用)的信息。

示例 Transaction 事件摘要信息:

mysql> SELECT *
       FROM performance_schema.events_transactions_summary_global_by_event_name
       LIMIT 1\G
*************************** 1. row ***************************
          EVENT_NAME: transaction
          COUNT_STAR: 5
      SUM_TIMER_WAIT: 19550092000
      MIN_TIMER_WAIT: 2954148000
      AVG_TIMER_WAIT: 3910018000
      MAX_TIMER_WAIT: 5486275000
    COUNT_READ_WRITE: 5
SUM_TIMER_READ_WRITE: 19550092000
MIN_TIMER_READ_WRITE: 2954148000
AVG_TIMER_READ_WRITE: 3910018000
MAX_TIMER_READ_WRITE: 5486275000
     COUNT_READ_ONLY: 0
 SUM_TIMER_READ_ONLY: 0
 MIN_TIMER_READ_ONLY: 0
 AVG_TIMER_READ_ONLY: 0
 MAX_TIMER_READ_ONLY: 0

每个 Transaction 摘要 table 都有一个或多个分组列,以指示该 table 如何聚合事件。事件名称是指setup_instrumentstable 中事件工具的名称:

每个 Transaction 摘要 table 的以下摘要列均包含汇总值:

  • COUNT_STAR , SUM_TIMER_WAIT , MIN_TIMER_WAIT , AVG_TIMER_WAIT , MAX_TIMER_WAIT

这些列类似于 await 事件摘要 table(请参阅第 25.12.15.1 节,“await 事件摘要 table”)中具有相同名称的列,不同之处在于事务摘要 table 汇总了events_transactions_current而不是events_waits_current的事件。这些列概述了读写事务和只读事务。

  • COUNT_READ_WRITE , SUM_TIMER_READ_WRITE , MIN_TIMER_READ_WRITE , AVG_TIMER_READ_WRITE , MAX_TIMER_READ_WRITE

这些类似于COUNT_STARxxx_TIMER_WAIT列,但仅汇总读写事务。事务访问模式指定事务是以读/写还是只读模式操作。

  • COUNT_READ_ONLY , SUM_TIMER_READ_ONLY , MIN_TIMER_READ_ONLY , AVG_TIMER_READ_ONLY , MAX_TIMER_READ_ONLY

这些类似于COUNT_STARxxx_TIMER_WAIT列,但仅汇总只读事务。事务访问模式指定事务是以读/写还是只读模式操作。

Transaction 摘要 table 允许TRUNCATE TABLE。它具有以下效果:

  • 对于未按帐户,主机或用户聚合的摘要 table,截断会将摘要列重置为零,而不是删除行。

  • 对于按帐户,主机或用户聚合的摘要 table,截断将删除无连接的帐户,主机或用户的行,并将其余行的摘要列重置为零。

此外,由帐户,主机,用户或线程聚合的每个事务摘要 table 都将通过其所依赖的连接 table 的截断或events_transactions_summary_global_by_event_name的截断而隐式地截断。有关详细信息,请参见第 25.12.8 节“性能架构连接 table”

Transaction 汇总规则

事务事件收集的发生与隔离级别,访问模式或自动提交模式无关。

事务事件收集发生在服务器发起的所有非中止的事务中,包括空事务。

读写事务通常比只读事务更加占用资源,因此事务摘要 table 包括用于读写事务和只读事务的单独的聚合列。

资源要求也可能随事务隔离级别而变化。但是,假设每个服务器仅使用一个隔离级别,则不提供按隔离级别的聚合。