25.12.7.1 events_transactions_currenttable

events_transactions_currenttable 包含当前 Transaction 事件。该 table 在每个线程中存储一行,显示该线程最近监视的事务事件的当前状态,因此没有用于配置 table 大小的系统变量。例如:

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

在包含事务事件行的 table 中,events_transactions_current是最基本的。包含事务事件行的其他 table 在逻辑上是从当前事件派生的。例如,events_transactions_historyevents_transactions_history_longtable 是已结束的最近事务事件的集合,每个事务最多具有最大的行数,而在所有线程中则是全局的。

有关三个事务事件 table 之间的关系的更多信息,请参见第 25.9 节“当前和历史事件的性能架构 table”

有关配置是否收集事务事件的信息,请参阅第 25.12.7 节“性能架构事务 table”

events_transactions_currenttable 具有以下列:

  • THREAD_ID , EVENT_ID

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

  • END_EVENT_ID

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

  • EVENT_NAME

收集事件的仪器的名称。这是setup_instrumentstable 中的NAME值。乐器名称可能包含多个部分,并形成一个层次结构,如第 25.6 节“性能架构工具命名约定”中所述。

  • STATE

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

  • TRX_ID

Unused.

  • GTID

GTID 列包含值gtid_next,它可以是ANONYMOUSAUTOMATIC或使用格式UUID:NUMBER的 GTID 之一。对于使用gtid_next=AUTOMATIC的事务(这是所有普通的 Client 事务),当事务提交并分配了实际的 GTID 时,GTID 列会更改。如果gtid_modeONON_PERMISSIVE,则 GTID 列将更改为事务的 GTID。如果gtid_modeOFFOFF_PERMISSIVE,则 GTID 列将变为ANONYMOUS

  • XID_FORMAT_IDXID_GTRIDXID_BQUAL

XATransaction 标识符的组成部分。它们具有第 13.3.7.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_currenttable 中,并且在不同线程上的状态不同。这是因为在准备好 XA 事务后,它立即与复制应用程序线程分离,并且可以由副本上的任何线程提交或回滚。 events_transactions_currenttable 显示线程上最近监视的事务事件的当前状态,并且在线程空闲时不更新此状态。因此,XA 事务在被另一个线程处理后,仍可以在原始应用程序线程的PREPARED状态下显示。为了肯定地标识仍处于PREPARED状态且需要恢复的 XA 事务,请使用XA RECOVER语句而不是 Performance Schema 事务 table。

  • SOURCE

源文件的名称,其中包含产生事件的检测代码,以及发生检测的文件中的行号。这使您可以检查源以确定确切涉及的代码。

  • TIMER_START , TIMER_END , TIMER_WAIT

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

如果事件尚未结束,则TIMER_END是当前计时器值,而TIMER_WAIT是到目前为止所经过的时间(TIMER_END-TIMER_START)。

如果事件是由具有TIMED = NO的乐器产生的,则不会收集计时信息,并且TIMER_STARTTIMER_ENDTIMER_WAIT均为NULL

有关以皮秒为单位的事件时间和影响时间值的因素的讨论,请参阅第 25.4.1 节“性能架构事件计时”

  • ACCESS_MODE

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

  • ISOLATION_LEVEL

事务隔离级别。值为REPEATABLE READREAD COMMITTEDREAD UNCOMMITTEDSERIALIZABLE

  • AUTOCOMMIT

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

  • NUMBER_OF_SAVEPOINTS , NUMBER_OF_ROLLBACK_TO_SAVEPOINT , NUMBER_OF_RELEASE_SAVEPOINT

Transaction 期间发出的SAVEPOINT回滚到保存点RELEASE SAVEPOINT语句的数量。

  • OBJECT_INSTANCE_BEGIN

Unused.

  • NESTING_EVENT_ID

嵌套该事件的事件的EVENT_ID值。

  • NESTING_EVENT_TYPE

嵌套事件类型。值为TRANSACTIONSTATEMENTSTAGEWAIT。 (由于无法嵌套事务,因此不会出现TRANSACTION.)

events_transactions_currenttable 允许TRUNCATE TABLE。它删除行。