Documentation Home
MySQL 8.0 参考手册  / 第 26 章 INFORMATION_SCHEMA 表  / 26.4 INFORMATION_SCHEMA InnoDB 表  /  21.4.26 INFORMATION_SCHEMA INNODB_TRX 表

21.4.26 INFORMATION_SCHEMA INNODB_TRX 表

INNODB_TRX表提供了当前在其中执行的每个事务的信息 InnoDB,包括事务是否正在等待锁、事务何时开始以及事务正在执行的 SQL 语句(如果有的话)。

有关使用信息,请参阅 第 14.15.2.1 节,“使用 InnoDB 事务和锁定信息”

INNODB_TRX表有以下列:

  • TRX_ID

    内部的唯一交易 ID 号 InnoDB。(从 MySQL 5.6 开始,不会为只读和非锁定的事务创建这些 ID。有关详细信息,请参阅 第 8.5.3 节,“优化 InnoDB 只读事务”。)

  • TRX_WEIGHT

    事务的权重,反映(但不一定是确切的计数)更改的行数和事务锁定的行数。为了解决死锁, InnoDB选择权重最小的事务作为受害者进行回滚。已更改非事务表的事务被认为比其他事务更重,无论更改和锁定的行数如何。

  • TRX_STATE

    事务执行状态。允许的值为 RUNNINGLOCK WAITROLLING BACKCOMMITTING

  • TRX_STARTED

    交易开始时间。

  • TRX_REQUESTED_LOCK_ID

    事务当前正在等待的锁的 ID,如果TRX_STATELOCK WAIT; 否则NULL。要获取有关锁的详细信息,请将此列与表的列连接 LOCK_ID起来 INNODB_LOCKS

  • TRX_WAIT_STARTED

    事务开始等待锁的时间,如果 TRX_STATELOCK WAIT;否则NULL

  • TRX_MYSQL_THREAD_ID

    MySQL 线程 ID。要获取有关线程的详细信息,请将此列与表的列连接起来IDINFORMATION_SCHEMA PROCESSLIST但请参阅 第 14.15.2.3 节,“InnoDB 事务和锁定信息的持久性和一致性”

  • TRX_QUERY

    事务正在执行的 SQL 语句。

  • TRX_OPERATION_STATE

    交易的当前操作,如果有的话;否则 NULL

  • TRX_TABLES_IN_USE

    InnoDB处理此事务的当前 SQL 语句时使用 的表数。

  • TRX_TABLES_LOCKED

    InnoDB当前 SQL 语句具有行锁 的表的数量。(因为这些是行锁,而不是表锁,所以尽管某些行被锁定,但表通常仍然可以由多个事务读取和写入。)

  • 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

    自适应哈希索引是否被当前事务锁定。(一次只能有一个事务可以修改自适应哈希索引。)

  • TRX_ADAPTIVE_HASH_TIMEOUT

    是立即放弃自适应哈希索引的搜索锁存器,还是在 MySQL 的调用中保留它。当没有自适应散列索引争用时,该值保持为零并且语句保留闩锁直到它们完成。在争用期间,它倒数到零,语句在每次查找行后立即释放锁存器。

  • TRX_IS_READ_ONLY

    值为 1 表示事务是只读的。

  • TRX_AUTOCOMMIT_NON_LOCKING

    值为 1 表示该事务是一条 SELECT不使用FOR UPDATEorLOCK IN SHARED MODE子句的语句,并且在启用的情况下执行, autocommit因此该事务仅包含这一条语句。当此列 和TRX_IS_READ_ONLY都为 1 时, InnoDB优化事务以减少与更改表数据的事务相关的开销。

例子

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1. row ***************************
                    trx_id: 3298
                 trx_state: RUNNING
               trx_started: 2014-11-19 13:54:39
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 316436
       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: 1621
     trx_lock_memory_bytes: 243240
           trx_rows_locked: 759343
         trx_rows_modified: 314815
   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

笔记