INNODB_TRX
表格提供目前在 InnoDB
內部執行的每個交易的資訊,包括交易是否正在等待鎖定、交易開始時間以及交易正在執行的 SQL 陳述式(如果有的話)。
如需使用資訊,請參閱第 17.15.2.1 節,「使用 InnoDB 交易和鎖定資訊」。
INNODB_TRX
表格包含這些欄位
TRX_ID
一個唯一的交易 ID 號碼,在
InnoDB
內部使用。這些 ID 不會為唯讀且非鎖定的交易建立。如需詳細資訊,請參閱第 10.5.3 節,「最佳化 InnoDB 唯讀交易」。TRX_WEIGHT
交易的權重,反映(但不一定確切計數)交易變更的列數和交易鎖定的列數。為了解決死鎖,
InnoDB
會選擇權重最小的交易作為 「犧牲者」 來回滾。無論變更和鎖定的列數為何,已變更非交易表格的交易都會被認為比其他交易更重。TRX_STATE
交易執行狀態。允許的值為
RUNNING
、LOCK WAIT
、ROLLING BACK
和COMMITTING
。TRX_STARTED
交易開始時間。
TRX_REQUESTED_LOCK_ID
交易目前正在等待的鎖定 ID,如果
TRX_STATE
為LOCK WAIT
;否則為NULL
。若要取得鎖定的詳細資訊,請將此欄位與 Performance Schemadata_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
由競爭感知交易排程 (CATS) 演算法分配給等待鎖定的交易的交易排程權重。此值是相對於其他交易的值。較高的值具有較大的權重。僅為
TRX_STATE
欄報告處於LOCK WAIT
狀態的交易計算值。對於未等待鎖定的交易,報告為 NULL 值。TRX_SCHEDULE_WEIGHT
值與TRX_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
語句來檢視此表格欄的其他資訊,包括資料類型和預設值。