Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

29.12.7.1 当前事务事件表

events_transactions_current 表包含当前事务事件。该表存储每个线程的当前状态,显示线程最近的监控事务事件,因此没有系统变量来配置表大小。例如:

mysql> SELECT *
       FROM performance_schema.events_transactions_current LIMIT 1\G
*************************** 1. row ***************************
                      THREAD_ID: 26
                       EVENT_ID: 7
                   END_EVENT_ID: NULL
                     EVENT_NAME: transaction
                          STATE: ACTIVE
                         TRX_ID: NULL
                           GTID: 3E11FA47-71CA-11E1-9E33-C80AA9429562:56
                            XID: NULL
                       XA_STATE: NULL
                         SOURCE: transaction.cc:150
                    TIMER_START: 420833537900000
                      TIMER_END: NULL
                     TIMER_WAIT: NULL
                    ACCESS_MODE: READ WRITE
                ISOLATION_LEVEL: REPEATABLE READ
                     AUTOCOMMIT: NO
           NUMBER_OF_SAVEPOINTS: 0
NUMBER_OF_ROLLBACK_TO_SAVEPOINT: 0
    NUMBER_OF_RELEASE_SAVEPOINT: 0
          OBJECT_INSTANCE_BEGIN: NULL
               NESTING_EVENT_ID: 6
             NESTING_EVENT_TYPE: STATEMENT

在包含事务事件行的表中,events_transactions_current 是最基本的。其他包含事务事件行的表是从当前事件派生出来的。例如,events_transactions_historyevents_transactions_history_long 表是最近结束的事务事件的集合,分别限制每个线程和所有线程的最大行数。

有关这三个事务事件表之间关系的更多信息,请参见 第 29.9 节,“性能模式当前和历史事件表”

有关配置是否收集事务事件的信息,请参见 第 29.12.7 节,“性能模式事务表”

events_transactions_current 表具有以下列:

  • THREAD_ID, EVENT_ID

    与事件关联的线程和事件开始时的线程当前事件号。 THREAD_IDEVENT_ID 值的组合唯一标识该行。没有两个行具有相同的对值。

  • END_EVENT_ID

    该列在事件开始时设置为 NULL,并在事件结束时更新为线程当前事件号。

  • EVENT_NAME

    从中收集事件的仪器的名称。这是一个 NAME 值来自 setup_instruments 表。仪器名称可能具有多个部分,并形成一个层次结构,如 第 29.6 节,“性能模式仪器命名约定” 中所讨论的那样。

  • STATE

    当前事务状态。该值是 ACTIVE(在 START TRANSACTIONBEGIN 之后),COMMITTED(在 COMMIT 之后),或 ROLLED BACK(在 ROLLBACK 之后)。

  • TRX_ID

    未使用。

  • GTID

    GTID列包含gtid_next的值,可以是ANONYMOUSAUTOMATIC或使用UUID:NUMBER格式的GTID。对于使用gtid_next=AUTOMATIC的交易(即所有普通客户端交易),GTID列在交易提交并分配实际GTID时更改。如果gtid_modeONON_PERMISSIVE,GTID列更改为交易的GTID。如果gtid_modeOFFOFF_PERMISSIVE,GTID列更改为ANONYMOUS

  • XID_FORMAT_IDXID_GTRIDXID_BQUAL

    XA事务标识符的元素。它们的格式在第15.3.8.1节“XA事务SQL语句”中描述。

  • XA_STATE

    XA事务的状态。该值为ACTIVE(在XA START后)、IDLE(在XA END后)、PREPARED(在XA PREPARE后)、ROLLED BACK(在XA ROLLBACK后)或COMMITTED(在XA COMMIT后)。

    在副本上,同一个XA事务可以在events_transactions_current表中以不同的状态出现在不同的线程上。这是因为XA事务准备好后,它将从副本的应用程序线程中分离出来,并可以由副本上的任何线程提交或回滚。events_transactions_current表显示当前监控事务事件的最新状态,而不是在线程空闲时更新该状态。因此,XA事务仍然可以在原始应用程序线程上显示为PREPARED状态,即使它已经被另一个线程处理。要确定仍然处于PREPARED状态且需要恢复的XA事务,请使用XA RECOVER语句,而不是性能模式事务表。

  • SOURCE

    包含instrumented代码的源文件的名称和行号,该文件产生了事件并在该行上instrumentation发生。这使您可以检查源代码以确定哪些代码参与了该事件。

  • TIMER_STARTTIMER_ENDTIMER_WAIT

    事件的计时信息。这些值的单位是皮秒(秒的万亿分之一)。TIMER_STARTTIMER_END值指示事件计时的开始和结束。TIMER_WAIT是事件的持续时间。

    如果事件尚未完成,TIMER_END是当前计时器值,TIMER_WAIT是到目前为止的事件持续时间(TIMER_ENDTIMER_START)。

    如果事件来自具有TIMED = NO的instrumentation,不会收集计时信息,TIMER_STARTTIMER_ENDTIMER_WAIT都是NULL

    有关皮秒作为事件时间单位的讨论和影响时间值的因素,请参阅第29.4.1节“性能模式事件计时”

  • ACCESS_MODE

    事务访问模式。该值为READ WRITEREAD ONLY

  • ISOLATION_LEVEL

    事务隔离级别。该值是可重复读提交读未提交读可串行化

  • AUTOCOMMIT

    事务开始时是否启用了自动提交模式。

  • SAVEPOINT 数量ROLLBACK TO SAVEPOINT 数量RELEASE SAVEPOINT 数量

    在事务期间执行的SAVEPOINTROLLBACK TO SAVEPOINTRELEASE SAVEPOINT语句的数量。

  • OBJECT_INSTANCE_BEGIN

    未使用。

  • NESTING_EVENT_ID

    嵌套事件的 EVENT_ID 值。

  • NESTING_EVENT_TYPE

    嵌套事件类型。该值是 TRANSACTIONSTATEMENTSTAGEWAIT。(TRANSACTION 不会出现,因为事务不能嵌套。)

events_transactions_current表具有以下索引:

  • 主键在 (THREAD_IDEVENT_ID) 上

TRUNCATE TABLEevents_transactions_current表上是允许的。它删除了行。