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
未使用。
GTID
GTID 列包含
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_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
状态显示在原始应用线程的events_transactions_current
表中。为了准确识别仍处于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
。它会删除行。