29.12.7.1 events_transactions_current 表
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节,“Performance Schema Tables for Current and Historical Events”。
关于是否收集事务事件的配置信息,请见 第29.12.7节,“Performance Schema Transaction Tables”。
events_transactions_current 表具有以下列:
-
THREAD_ID
,EVENT_ID
与事件关联的线程和线程当前事件号,当事件开始时。
THREAD_ID
和EVENT_ID
值组成唯一标识符,两个值组合起来不能重复。 -
END_EVENT_ID
当事件开始时,该列设置为
NULL
,当事件结束时更新到线程当前事件号。 -
EVENT_NAME
事件的名称。该名称来自
setup_instruments
表的NAME
值。仪器名称可能具有多个部分,形成层次结构,如 第29.6节,“Performance Schema Instrument Naming Conventions” 中所讨论的那样。 -
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 Transaction SQL Statements”中描述。
-
XA_STATE
XA 事务的状态。该值为
ACTIVE
(在XA START
后),IDLE
(在XA END
后),PREPARED
(在XA PREPARE
后),ROLLED BACK
(在XA ROLLBACK
后),或COMMITTED
(在XA COMMIT
后)。在复制服务器上,同一个XA事务可能在不同的线程中以不同的状态出现。这是因为在XA事务准备好后,它会立即从复制服务器的applier线程中分离出来,可以由任何线程在复制服务器上提交或回滚。
events_transactions_current
表显示当前线程的最新监控事务事件的状态,并且在线程空闲时不会更新这个状态。因此,XA事务可能仍然在原始applier线程上显示为PREPARED
状态,即使它已经被其他线程处理过。为了确定仍然在PREPARED
状态的XA事务需要恢复,使用XA RECOVER
语句,而不是性能Schema事务表。 -
SOURCE
事件产生的代码文件的名称和在文件中的行号,这样可以让您检查源代码以确定涉及的代码。
-
TIMER_START
,TIMER_END
,TIMER_WAIT
事件的计时信息。这些值的单位是-pic秒( trillionths of a second)。
TIMER_START
和TIMER_END
值表示事件计时的开始和结束。TIMER_WAIT
是事件的延迟时间(duration)。如果事件还没有完成,
TIMER_END
是当前计时值,TIMER_WAIT
是到目前为止的时间(TIMER_END
-TIMER_START
)。如果事件来自于一个没有
TIMED = NO
的instrument,那么计时信息就不会收集,TIMER_START
、TIMER_END
和TIMER_WAIT
都是NULL
。关于-pic秒作为事件时间的单位和影响时间值的因素的讨论,请见Section 29.4.1, “Performance Schema Event Timing”。
-
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
事件的事件ID,位于该事件的嵌套事件ID中。
-
NESTING_EVENT_TYPE
嵌套事件类型。该值是
TRANSACTION
,STATEMENT
,STAGE
, 或WAIT
。(TRANSACTION
不出现,因为事务不能嵌套。)
表events_transactions_current
具有以下索引:
-
主键索引(
THREAD_ID
,EVENT_ID
)
TRUNCATE TABLE
允许在events_transactions_current
表上执行,删除所有行。