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.