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 用於目前與歷史事件的表格」。
如需設定是否收集交易事件的相關資訊,請參閱第 29.12.7 節「Performance Schema 交易表格」。
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
陳述式,而不是效能結構描述交易表格。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 節「效能結構描述事件計時」。
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
。它會移除資料列。