Схема данных INNODB_TRX
Таблица Схема данных INNODB_TRX хранит информацию обо всех текущих выполняемых транзакциях InnoDB.
Она имеет следующие столбцы:
| Столбец | Описание |
|---|---|
TRX_ID |
Уникальный идентификатор транзакции. |
TRX_STATE |
Состояние выполнения транзакции; одно из RUNNING, LOCK WAIT, ROLLING BACK или COMMITTING. |
TRX_STARTED |
Время начала транзакции. |
TRX_REQUESTED_LOCK_ID |
Если TRX_STATE равно LOCK_WAIT, значение INNODB_LOCKS.LOCK_ID блокировки, на которую ожидает транзакция. NULL в любом другом состоянии. |
TRX_WAIT_STARTED |
Если TRX_STATE равно LOCK_WAIT, время начала ожидания транзакцией блокировки, в противном случае NULL. |
TRX_WEIGHT |
Вес транзакции, основанный на количестве заблокированных строк и количестве изменённых строк. Для разрешения тупиков, сначала откатываются транзакции с меньшим весом. Транзакции, затронувшие нетранзакционные таблицы, всегда считаются имеющими больший вес. |
TRX_MYSQL_THREAD_ID |
Идентификатор потока из таблицы PROCESSLIST (обратите внимание, что таблицы схемы данных для блокировок и транзакций используют другой снимок, чем процесс-лист, поэтому записи могут присутствовать в одной, но не в другой). |
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 |
Заблокирован ли адаптивный индекс хэшей текущей транзакцией или нет. Одновременно одна транзакция может изменять адаптивный индекс хэшей. |
TRX_ADAPTIVE_HASH_TIMEOUT |
Должен ли запрос адаптивного индекса хэшей быть освобождён немедленно или зарезервирован на все вызовы MariaDB. 0 если нет конфликта на адаптивном индексе хэшей, в этом случае запрос зарезервирован до завершения, в противном случае он уменьшается до нуля, и запрос освобождается после каждого поиска строки. |
TRX_IS_READ_ONLY |
1 если транзакция только для чтения, в противном случае 0. |
TRX_AUTOCOMMIT_NON_LOCKING |
1 если транзакция содержит только это одно утверждение, то есть утверждение SELECT без использования FOR UPDATE или LOCK IN SHARED MODE, и с включённым autocommit. Если это и TRX_IS_READ_ONLY оба равны 1, движок базы данных может оптимизировать транзакцию для уменьшения некоторых накладных расходов. |
Таблица часто используется совместно с таблицами INNODB_LOCKS и INNODB_LOCK_WAITS для диагностики проблемных блокировок и транзакций.
XA транзакции в этой таблице не хранятся. Чтобы их увидеть, XA RECOVER можно использовать.
Пример
-- session 1
START TRANSACTION;
UPDATE t SET id = 15 WHERE id = 10;
-- session 2
DELETE FROM t WHERE id = 10;
-- session 1
USE information_schema;
SELECT l.*, t.*
FROM information_schema.INNODB_LOCKS l
JOIN information_schema.INNODB_TRX t
ON l.lock_trx_id = t.trx_id
WHERE trx_state = 'LOCK WAIT' \G
*************************** 1. row ***************************
lock_id: 840:40:3:2
lock_trx_id: 840
lock_mode: X
lock_type: RECORD
lock_table: `test`.`t`
lock_index: PRIMARY
lock_space: 40
lock_page: 3
lock_rec: 2
lock_data: 10
trx_id: 840
trx_state: LOCK WAIT
trx_started: 2019-12-23 18:43:46
trx_requested_lock_id: 840:40:3:2
trx_wait_started: 2019-12-23 18:43:46
trx_weight: 2
trx_mysql_thread_id: 46
trx_query: DELETE FROM t WHERE id = 10
trx_operation_state: starting index read
trx_tables_in_use: 1
trx_tables_locked: 1
trx_lock_structs: 2
trx_lock_memory_bytes: 1136
trx_rows_locked: 1
trx_rows_modified: 0
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_is_read_only: 0
trx_autocommit_non_locking: 0
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают взгляды MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/information-schema-innodb_trx-table/