Skip to content

INNODB_TRX

xiaoboluo768 edited this page Jun 7, 2020 · 2 revisions
  • 该表提供查询当前在InnoDB引擎中执行的每个事务(不包括只读事务)的信息,包括事务是否正在等待锁、事务什么时间点开始、以及事务正在执行的SQL语句文本信息等(如果有SQL的话)
  • 该表为memory引擎临时表,查询该表的用户需要有process权限
  • 表定义语句
CREATE TEMPORARY TABLE `INNODB_TRX` (
  `trx_id` varchar(18) NOT NULL DEFAULT '',
  `trx_state` varchar(13) NOT NULL DEFAULT '',
  `trx_started` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `trx_requested_lock_id` varchar(81) DEFAULT NULL,
  `trx_wait_started` datetime DEFAULT NULL,
  `trx_weight` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_mysql_thread_id` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_query` varchar(1024) DEFAULT NULL,
  `trx_operation_state` varchar(64) DEFAULT NULL,
  `trx_tables_in_use` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_tables_locked` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_lock_structs` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_lock_memory_bytes` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_rows_locked` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_rows_modified` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_concurrency_tickets` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_isolation_level` varchar(16) NOT NULL DEFAULT '',
  `trx_unique_checks` int(1) NOT NULL DEFAULT '0',
  `trx_foreign_key_checks` int(1) NOT NULL DEFAULT '0',
  `trx_last_foreign_key_error` varchar(256) DEFAULT NULL,
  `trx_adaptive_hash_latched` int(1) NOT NULL DEFAULT '0',
  `trx_adaptive_hash_timeout` bigint(21) unsigned NOT NULL DEFAULT '0',
  `trx_is_read_only` int(1) NOT NULL DEFAULT '0',
  `trx_autocommit_non_locking` int(1) NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
  • 表字段含义
  • TRX_ID:InnoDB引擎内部的唯一事务ID号。只读和非锁定事务不记录,关于只读事务详见链接:https://dev.mysql.com/doc/refman/5.7/en/innodb-performance-ro-txn.html
  • TRX_WEIGHT:事务的权重,该数值反映了事务修改的记录行数和事务锁定的记录行数改变的行数(但不一定是确切的计数)。为了解决死锁问题,InnoDB选择权重最小的事务作为“受害者”进行回滚。另外,无论修改和锁定行的数量如何,对非事务引擎表的事务都被认为比其他事务引擎的修改权重更大(因为非事务引擎表的修改无法回滚,只能回滚支持事务的引擎)
  • TRX_STATE:事务执行状态。有效值为:RUNNING、LOCK WAIT、ROLLING BACK、COMMITTING
  • TRX_STARTED:事务开始时间
  • TRX_REQUESTED_LOCK_ID:如果TRX_STATE列值为LOCK WAIT,则该列值展示事务当前等待的锁的ID;否则该列值为NULL。可以使用该列与INNODB_LOCKS表的LOCK_ID列进行关联以查询INNODB_LOCKS表中更多的锁信息
  • TRX_WAIT_STARTED:如果TRX_STATE列值为LOCK WAIT,则该列值显示事务开始等待锁的时间,否则该列值为NULL
  • TRX_MYSQL_THREAD_ID:MySQL线程ID。可以将此列与INFORMATION_SCHEMA PROCESSLIST表的ID列进行关联以查询更多的线程信息
  • 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表示该事务中的SQL是一个没有使用FOR UPDATE或LOCK IN SHARED MODE子句的SELECT语句,并且是自动提交的只包含一条语句的事务。当该列值和TRX_IS_READ_ONLY列值都是1时,InnoDB执行事务优化以减少事务相关的开销
  • 表记录内容示例
admin@localhost : information_schema 06:26:08> select * from INNODB_TRX limit 1\G;
*************************** 1. row ***************************
                    trx_id: 8075544
                trx_state: RUNNING
              trx_started: 2017-09-25 18:24:20
    trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 4
      trx_mysql_thread_id: 9
                trx_query: NULL
      trx_operation_state: NULL
        trx_tables_in_use: 0
        trx_tables_locked: 2
          trx_lock_structs: 4
    trx_lock_memory_bytes: 1136
          trx_rows_locked: 2
        trx_rows_modified: 0
  trx_concurrency_tickets: 0
      trx_isolation_level: READ COMMITTED
        trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 0
          trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)

上一篇:INNODB_LOCKS表 |下一篇:INNODB_SYS_DATAFILES表

Clone this wiki locally