Spec-Zone.ru › MariaDB

Схема данных 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/

Spec-Zone.ru

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