24.32.27 INFORMATION_SCHEMA INNODB_TRXtable
INNODB_TRXtable 提供有关InnoDB
内部当前正在执行的每个事务的信息,包括事务是否正在 await 锁,事务何时开始以及事务正在执行的 SQL 语句(如果有)。
有关使用信息,请参阅第 14.16.2.1 节,“使用 InnoDB 事务和锁定信息”。
INNODB_TRXtable 具有以下列:
TRX_ID
InnoDB
内部的唯一 TransactionID 号。这些 ID 不是为只读和非锁定的事务创建的。有关详细信息,请参见第 8.5.3 节“优化 InnoDB 只读事务”。
TRX_WEIGHT
事务的权重,反映(但不一定是确切的计数)已更改的行数和该事务锁定的行数。要解决僵局,InnoDB
选择权重最小的事务作为要回滚的“受害者”。更改了非事务 table 的事务被认为比其他事务更重,而与更改和锁定的行数无关。
TRX_STATE
事务执行状态。允许的值为RUNNING
,LOCK WAIT
,ROLLING BACK
和COMMITTING
。
TRX_STARTED
Transaction 开始时间。
TRX_REQUESTED_LOCK_ID
如果TRX_STATE
为LOCK WAIT
,则事务当前正在 await 的锁的 ID;否则为NULL
。要获取有关锁的详细信息,请将此列与INNODB_LOCKStable 的LOCK_ID
列连接在一起。
TRX_WAIT_STARTED
事务开始 await 锁的时间(如果TRX_STATE
为LOCK WAIT
);否则NULL
。
TRX_MYSQL_THREAD_ID
MySQL 线程 ID。要获取有关线程的详细信息,请将此列与INFORMATION_SCHEMA
PROCESSLISTtable 的ID
列连接在一起,但请参阅第 14.16.2.3 节“ InnoDB 事务和锁定信息的持久性和一致性”。
TRX_QUERY
事务正在执行的 SQL 语句。
TRX_OPERATION_STATE
Transaction 的当前操作(如果有);否则为NULL
。
TRX_TABLES_IN_USE
处理此事务的当前 SQL 语句时使用的InnoDB
table 的数量。
TRX_TABLES_LOCKED
当前 SQL 语句具有行锁定的InnoDB
table 的数量。 (由于这些是行锁,而不是 table 锁,因此即使某些行被锁定,通常仍可以从多个事务中读取和写入 table.)
TRX_LOCK_STRUCTS
事务保留的锁数。
TRX_LOCK_MEMORY_BYTES
内存中此事务的锁结构占用的总大小。
TRX_ROWS_LOCKED
此事务锁定的大概数目或行数。该值可能包括物理上存在但对事务不可见的删除标记行。
TRX_ROWS_MODIFIED
此事务中已修改和已插入的行数。
TRX_CONCURRENCY_TICKETS
值,该值 table 示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
值为 1table 示事务是只读的。
TRX_AUTOCOMMIT_NON_LOCKING
值为 1table 示事务是不使用FOR UPDATE
或LOCK IN SHARED MODE
子句的SELECT语句,并且正在启用autocommit的情况下执行,因此事务将仅包含该一条语句。当此列和TRX_IS_READ_ONLY
均为 1 时,InnoDB
优化事务以减少与更改 table 数据的事务相关的开销。
Example
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
Notes
-
使用此 table 可帮助诊断在并发负载很大时发生的性能问题。其内容按照第 14.16.2.3 节“ InnoDB 事务和锁定信息的持久性和一致性”中的说明进行更新。
-
您必须具有PROCESS特权才能查询此 table。
-
使用
INFORMATION_SCHEMA
COLUMNStable 或SHOW COLUMNS语句查看有关此 table 列的其他信息,包括数据类型和默认值。