Spec-Zone.ru › MySQL 9.2

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-9.2-en/information-schema-innodb-trx-table.html

Spec-Zone.ru

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