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_history 和 events_transactions_history_long 表是最近已结束的事务事件的集合,分别按每个线程的最大行数和所有线程的全局最大行数进行限制。
有关三个事务事件表之间关系的更多信息,请参见 第 29.9 节,“用于当前和历史事件的性能模式表”.
有关配置是否收集事务事件的信息,请参见 第 29.12.7 节,“性能模式事务表”.
events_transactions_current 表具有以下列
THREAD_ID,EVENT_ID与事件关联的线程以及事件开始时线程的当前事件编号。
THREAD_ID和EVENT_ID值共同唯一标识行。没有两行具有相同的数值对。END_EVENT_ID此列在事件开始时设置为
NULL,并在事件结束时更新为线程的当前事件编号。EVENT_NAME收集事件的工具的名称。这是一个来自
setup_instruments表的NAME值。工具名称可能包含多个部分并形成层次结构,如 第 29.6 节,“性能模式工具命名约定” 中所述。STATE当前事务状态。该值为
ACTIVE(在START TRANSACTION或BEGIN之后)、COMMITTED(在COMMIT之后)或ROLLED BACK(在ROLLBACK之后)。TRX_ID未使用。
GTIDGTID 列包含
gtid_next的值,它可以是ANONYMOUS、AUTOMATIC或使用UUID:NUMBER格式的 GTID 之一。对于使用gtid_next=AUTOMATIC的事务(所有正常客户端事务都是如此),GTID 列在事务提交并分配实际 GTID 时会发生更改。如果gtid_mode为ON或ON_PERMISSIVE,GTID 列将更改为事务的 GTID。如果gtid_mode为OFF或OFF_PERMISSIVE,GTID 列将更改为ANONYMOUS。XID_FORMAT_ID、XID_GTRID和XID_BQUALXA 事务标识符的元素。它们的格式如 第 15.3.8.1 节,“XA 事务 SQL 语句” 中所述。
XA_STATEXA 事务的状态。该值为
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语句,而不是 Performance Schema 事务表。SOURCE包含生成事件的检测代码的源文件名,以及检测发生的文件中的行号。这使您可以检查源代码以确定确切涉及的代码。
TIMER_START、TIMER_END、TIMER_WAIT事件的计时信息。这些值的单位是皮秒(万亿分之一秒)。
TIMER_START和TIMER_END值指示事件计时开始和结束的时间。TIMER_WAIT是事件的经过时间(持续时间)。如果事件尚未完成,则
TIMER_END是当前计时器值,而TIMER_WAIT是到目前为止的经过时间(TIMER_END−TIMER_START)。如果事件是从具有
TIMED = NO的检测器生成的,则不会收集计时信息,并且TIMER_START、TIMER_END和TIMER_WAIT均为NULL。有关皮秒作为事件时间单位以及影响时间值因素的讨论,请参见 第 29.4.1 节,“Performance Schema 事件计时”。
ACCESS_MODE事务访问模式。该值为
READ WRITE或READ ONLY。ISOLATION_LEVEL事务隔离级别。该值为
REPEATABLE READ、READ COMMITTED、READ UNCOMMITTED或SERIALIZABLE。AUTOCOMMIT事务开始时是否启用了自动提交模式。
NUMBER_OF_SAVEPOINTS、NUMBER_OF_ROLLBACK_TO_SAVEPOINT、NUMBER_OF_RELEASE_SAVEPOINT在事务期间发出的
SAVEPOINT、ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT语句的数量。OBJECT_INSTANCE_BEGIN未使用。
NESTING_EVENT_ID此事件嵌套其中的事件的
EVENT_ID值。NESTING_EVENT_TYPE嵌套事件类型。该值为
TRANSACTION、STATEMENT、STAGE或WAIT。(TRANSACTION不出现,因为事务不能嵌套。)
events_transactions_current 表具有以下索引
主键为 (
THREAD_ID、EVENT_ID)
对于 events_transactions_current 表,允许使用 TRUNCATE TABLE。它将删除行。