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_SCHEMAPROCESSLIST, но см. раздел 14.16.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оптимизирует транзакцию, чтобы уменьшить накладные расходы, связанные с транзакциями, изменяющими данные таблиц.
Пример
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_SCHEMACOLUMNSили операторSHOW COLUMNS, чтобы получить дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.