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 節,「Performance Schema 工具命名慣例」中所述。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陳述式,而不是效能結構描述交易表格。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) 上
TRUNCATE TABLE 允許用於 events_transactions_current 表格。它會移除這些列。