Spec-Zone.ru › MySQL 8.4

28.4.28 Таблица INFORMATION_SCHEMA INNODB_TRX

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

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

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

  • TRX_ID

    Уникальный идентификатор транзакции, внутренний для InnoDB. Эти идентификаторы не создаются для транзакций, которые являются только для чтения и не используют блокировки. Подробности см. в Разделе 10.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. Чтобы получить подробности о блокировке, объедините этот столбец со столбцом ENGINE_LOCK_ID таблицы Performance Schema data_locks.

  • TRX_WAIT_STARTED

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

  • TRX_MYSQL_THREAD_ID

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

    Блокирован ли адаптивный индекс хэширования текущей транзакцией. Когда система поиска адаптивного индекса хэширования разделена, одна транзакция не блокирует весь адаптивный индекс хэширования. Разделение адаптивного индекса хэширования контролируется 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 оптимизирует транзакцию, чтобы уменьшить издержки, связанные с транзакциями, которые изменяют данные таблицы.

  • 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

Примечания

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

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

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

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

Spec-Zone.ru

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