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 Schemadata_locks. -
TRX_WAIT_STARTEDВремя, когда транзакция начала ожидание блокировки, если
TRX_STATEимеет значениеLOCK WAIT; в противном случаеNULL. -
TRX_MYSQL_THREAD_IDИдентификатор потока MySQL. Чтобы получить подробности о потоке, объедините этот столбец со столбцом
IDтаблицыINFORMATION_SCHEMAPROCESSLIST, но обратите внимание на Раздел 17.15.2.3, «Сохранение и согласованность информации о транзакциях и блокировках InnoDB». -
TRX_QUERYSQL-запрос, выполняемый транзакцией.
-
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_SCHEMACOLUMNSили операторSHOW COLUMNSдля просмотра дополнительной информации о столбцах этой таблицы, включая типы данных и значения по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.