文档主页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  INFORMATION_SCHEMA INNODB_TRX 表

28.4.28 INFORMATION_SCHEMA INNODB_TRX 表

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

    交易执行状态。允许的值为 RUNNINGLOCK WAITROLLING BACKCOMMITTING

  • TRX_STARTED

    交易开始时间。

  • TRX_REQUESTED_LOCK_ID

    如果 TRX_STATELOCK WAIT,则为交易当前正在等待的锁的 ID;否则为 NULL。要获取有关锁的详细信息,请将此列与性能模式 data_locks 表的 ENGINE_LOCK_ID 列联接。

  • TRX_WAIT_STARTED

    如果 TRX_STATELOCK 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 UPDATELOCK IN SHARED MODE 子句的 SELECT 语句,并且在启用了 autocommit 的情况下执行,因此该事务仅包含这一个语句。当此列和 TRX_IS_READ_ONLY 都为 1 时,InnoDB 会优化事务以减少与更改表数据的事务相关的开销。

  • TRX_SCHEDULE_WEIGHT

    由竞争感知事务调度 (CATS) 算法分配给等待锁的事务的事务调度权重。该值是相对于其他事务的值而言的。值越高,权重越大。仅针对 LOCK WAIT 状态下的事务计算值,如 TRX_STATE 列所示。对于不等待锁的事务,将报告 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

注意