Spec-Zone.ru › MySQL 5.7

24.4.28 Таблица INFORMATION_SCHEMA INNODB_TRX

Таблица INNODB_TRX предоставляет информацию о каждой транзакции, выполняющейся в настоящее время внутри InnoDB, включая информацию о том, ожидает ли транзакция блокировку, когда транзакция началась и, если применимо, SQL-запрос, который выполняет транзакция.

Сведения об использовании см. в разделе 14.16.2.1, «Использование информации о транзакциях и блокировках InnoDB».

В таблице INNODB_TRX содержатся следующие столбцы:

  • TRX_ID

    Уникальный идентификатор транзакции, внутренний для InnoDB. Эти идентификаторы не создаются для транзакций, которые являются только для чтения и не используют блокировки. Подробности см. в разделе 8.5.3, «Оптимизация транзакций только для чтения InnoDB».

  • TRX_WEIGHT

    Весовая оценка транзакции, отражающая (но не обязательно точно соответствующая) количество измененных и заблокированных строк транзакцией. Для разрешения тупиковой ситуации InnoDB выбирает транзакцию с наименьшим весом в качестве «жертвы» для отката. Транзакции, которые изменили нетранзакционные таблицы, считаются более тяжелыми, независимо от количества измененных и заблокированных строк.

  • TRX_STATE

    Состояние выполнения транзакции. Разрешенные значения — RUNNING, LOCK WAIT, ROLLING BACK и COMMITTING.

  • TRX_STARTED

    Время начала транзакции.

  • TRX_REQUESTED_LOCK_ID

    Идентификатор блокировки, которую в настоящее время ожидает транзакция, если TRX_STATE является LOCK WAIT; в противном случае NULL. Для получения подробностей о блокировке объедините этот столбец со столбцом LOCK_ID таблицы INNODB_LOCKS.

  • TRX_WAIT_STARTED

    Время, когда транзакция начала ожидать блокировку, если TRX_STATE равно LOCK WAIT; в противном случае NULL.

  • TRX_MYSQL_THREAD_ID

    Идентификатор потока MySQL. Для получения подробностей о потоке объедините этот столбец со столбцом ID таблицы INFORMATION_SCHEMA PROCESSLIST, но см. раздел 14.16.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

    Заблокирован ли адаптивный индекс хеширования текущей транзакцией. Когда система поиска адаптивного индекса хеширования разделена, одна транзакция не блокирует весь адаптивный индекс хеширования. Разделение адаптивного индекса хеширования контролируется innodb_adaptive_hash_index_parts, которое по умолчанию установлено в 8.

  • TRX_ADAPTIVE_HASH_TIMEOUT

    Устарело в MySQL 5.7.8. Всегда возвращает 0.

    Необходимо ли немедленно отпустить защелку поиска для адаптивного индекса хеширования или сохранить ее между вызовами из MySQL. При отсутствии конкуренции за адаптивный индекс хеширования это значение остается нулевым, и операторы сохраняют защелку, пока не закончат работу. В период конкуренции оно уменьшается до нуля, и операторы отпускают защелку сразу после каждого поиска строки. При разделении системы поиска адаптивного индекса хеширования (управляемой innodb_adaptive_hash_index_parts) значение остается 0.

  • TRX_IS_READ_ONLY

    Значение 1 указывает, что транзакция только для чтения.

  • TRX_AUTOCOMMIT_NON_LOCKING

    Значение 1 указывает, что транзакция является оператором SELECT, который не использует предложения FOR UPDATE или LOCK IN SHARED MODE и выполняется с включенным autocommit, так что транзакция содержит только эту одну команду. Когда этот столбец и TRX_IS_READ_ONLY оба равны 1, InnoDB оптимизирует транзакцию, чтобы уменьшить накладные расходы, связанные с транзакциями, изменяющими данные таблиц.

Пример

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

Примечания

  • Используйте эту таблицу для диагностики проблем производительности, возникающих во время высокой одновременной нагрузки. Ее содержимое обновляется, как описано в разделе 14.16.2.3, «Сохранение и согласованность информации о транзакциях и блокировках InnoDB».

  • Для запроса этой таблицы необходимо иметь привилегию PROCESS.

  • Используйте таблицу INFORMATION_SCHEMA COLUMNS или оператор SHOW COLUMNS, чтобы получить дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/information-schema-innodb-trx-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API