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
状态下显示在原始应用程序线程中,即使它已由另一个线程处理。要正确定位仍然处于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
。它将删除行。