INNODB_TRX
表格提供關於目前正在 InnoDB
內執行的每個交易的資訊,包括交易是否正在等待鎖定、交易何時開始,以及交易正在執行的 SQL 陳述式(如果有的話)。
如需使用資訊,請參閱第 17.15.2.1 節,「使用 InnoDB 交易和鎖定資訊」。
INNODB_TRX
表格具有以下欄位:
TRX_ID
在
InnoDB
內部的唯一交易 ID 號碼。這些 ID 不會為唯讀且不鎖定的交易建立。如需詳細資訊,請參閱第 10.5.3 節,「最佳化 InnoDB 唯讀交易」。TRX_WEIGHT
交易的權重,反映(但不一定確切計數)交易變更的列數和交易鎖定的列數。為了解決死結,
InnoDB
會選擇權重最小的交易作為要回滾的「「受害者」」。無論變更和鎖定的列數為何,已變更非交易表格的交易都被認為比其他交易更重。TRX_STATE
交易執行狀態。允許的值為
RUNNING
、LOCK WAIT
、ROLLING BACK
和COMMITTING
。TRX_STARTED
交易開始時間。
TRX_REQUESTED_LOCK_ID
如果
TRX_STATE
為LOCK WAIT
,則為交易目前正在等待的鎖定 ID;否則為NULL
。若要取得關於鎖定的詳細資訊,請將此欄位與效能架構data_locks
表格的ENGINE_LOCK_ID
欄位聯結。TRX_WAIT_STARTED
如果
TRX_STATE
為LOCK WAIT
,則為交易開始等待鎖定的時間;否則為NULL
。TRX_MYSQL_THREAD_ID
MySQL 執行緒 ID。若要取得關於執行緒的詳細資訊,請將此欄位與
INFORMATION_SCHEMA
PROCESSLIST
表格的ID
欄位聯結,但請參閱第 17.15.2.3 節,「InnoDB 交易和鎖定資訊的持久性和一致性」。TRX_QUERY
交易正在執行的 SQL 陳述式。
TRX_OPERATION_STATE
交易的目前作業(如果有的話);否則為
NULL
。TRX_TABLES_IN_USE
此交易處理目前 SQL 陳述式時使用的
InnoDB
表格數量。TRX_TABLES_LOCKED
目前 SQL 陳述式具有列鎖定的
InnoDB
表格數量。(由於這些是列鎖定而非表格鎖定,因此表格通常仍然可以由多個交易讀取和寫入,儘管某些列被鎖定。)TRX_LOCK_STRUCTS
交易保留的鎖定數量。
TRX_LOCK_MEMORY_BYTES
此交易的鎖定結構在記憶體中所佔用的總大小。
TRX_ROWS_LOCKED
此交易鎖定的列的約略數量。該值可能包括實際存在但對交易不可見的已標記為刪除的列。
TRX_ROWS_MODIFIED
此交易中修改和插入的列數。
TRX_CONCURRENCY_TICKETS
一個值,表示目前的交易在被換出之前可以執行多少工作,如
innodb_concurrency_tickets
系統變數所指定。TRX_ISOLATION_LEVEL
目前交易的隔離級別。
TRX_UNIQUE_CHECKS
目前交易是否啟用唯一性檢查。例如,在大批量資料載入期間可能會關閉。
TRX_FOREIGN_KEY_CHECKS
目前交易是否啟用外鍵檢查。例如,在大批量資料載入期間可能會關閉。
TRX_LAST_FOREIGN_KEY_ERROR
最後一次外鍵錯誤的詳細錯誤訊息(如果有的話);否則為
NULL
。TRX_ADAPTIVE_HASH_LATCHED
目前交易是否鎖定了自適應雜湊索引。當自適應雜湊索引搜尋系統被分割時,單個交易不會鎖定整個自適應雜湊索引。自適應雜湊索引分割由
innodb_adaptive_hash_index_parts
控制,預設設定為 8。TRX_ADAPTIVE_HASH_TIMEOUT
是否立即放棄自適應雜湊索引的搜尋鎖定,或在 MySQL 的呼叫之間保留它。當沒有自適應雜湊索引爭用時,此值保持為零,並且語句會保留鎖定直到完成。在爭用期間,它會倒數至零,並且語句會在每次查找行之後立即釋放鎖定。當自適應雜湊索引搜尋系統被分割時(由
innodb_adaptive_hash_index_parts
控制),該值保持為 0。TRX_IS_READ_ONLY
值為 1 表示交易是唯讀的。
TRX_AUTOCOMMIT_NON_LOCKING
值為 1 表示交易是未使用
FOR UPDATE
或LOCK IN SHARED MODE
子句的SELECT
語句,且在啟用autocommit
的情況下執行,因此交易僅包含此單一語句。當此欄位和TRX_IS_READ_ONLY
都為 1 時,InnoDB
會最佳化交易,以減少與變更表格資料的交易相關的開銷。TRX_SCHEDULE_WEIGHT
由「感知爭用交易排程」(Contention-Aware Transaction Scheduling,CATS) 演算法指派給等待鎖定的交易的交易排程權重。該值相對於其他交易的值。較高的值具有較大的權重。僅針對由
TRX_STATE
欄位報告為LOCK WAIT
狀態的交易計算該值。對於未等待鎖定的交易,則報告 NULL 值。TRX_SCHEDULE_WEIGHT
值與TRX_WEIGHT
值不同,後者由不同的演算法針對不同的目的計算。
範例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1. row ***************************
trx_id: 1510
trx_state: RUNNING
trx_started: 2014-11-19 13:24:40
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 586739
trx_mysql_thread_id: 2
trx_query: DELETE FROM employees.salaries WHERE salary > 65000
trx_operation_state: updating or deleting
trx_tables_in_use: 1
trx_tables_locked: 1
trx_lock_structs: 3003
trx_lock_memory_bytes: 450768
trx_rows_locked: 1407513
trx_rows_modified: 583736
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
trx_schedule_weight: NULL
注意事項
使用此表格來協助診斷在高並行負載期間發生的效能問題。其內容會如第 17.15.2.3 節,「InnoDB 交易和鎖定資訊的持久性和一致性」中所述進行更新。
您必須具有
PROCESS
權限才能查詢此表格。使用
INFORMATION_SCHEMA
COLUMNS
表格或SHOW COLUMNS
語法,以檢視此表格欄位的其他資訊,包括資料類型和預設值。