Spec-Zone.ru › MariaDB

Схема информации INNODB_LOCKS

Таблица Схема информации INNODB_LOCKS хранит информацию о блокировках, которые запрошены, но еще не получены транзакциями InnoDB или блокируют другую транзакцию.

Она имеет следующие столбцы:

Столбец Описание
LOCK_ID Номер идентификатора блокировки — формат не фиксирован, поэтому не полагайтесь на число для получения информации.
LOCK_TRX_ID Идентификатор транзакции блокировки. Соответствует столбцу INNODB_TRX.TRX_ID.
LOCK_MODE Режим блокировки. Один из S (совместный), X (исключительный), IS (намерение совместного), IX (намерение исключительной строки блокировки), S_GAP (совместная блокировка щели), X_GAP (исключительная блокировка щели), IS_GAP (намерение совместной блокировки щели), IX_GAP (намерение исключительной блокировки щели) или AUTO_INC (блокировка уровня таблицы для автоинкремента).
LOCK_TYPE Является ли блокировка RECORD (уровня строки) или уровня TABLE.
LOCK_TABLE Имя заблокированной таблицы или таблицы, содержащей заблокированные строки.
LOCK_INDEX Имя индекса, если заблокирована RECORD LOCK_TYPE, или NULL в противном случае.
LOCK_SPACE Идентификатор пространства таблиц, если заблокирована RECORD LOCK_TYPE, или NULL в противном случае.
LOCK_PAGE Номер страницы записи, которая заблокирована, если заблокирована RECORD LOCK_TYPE, или NULL в противном случае.
LOCK_REC Номер кучи заблокированной записи, если заблокирована RECORD LOCK_TYPE, или NULL в противном случае.
LOCK_DATA Первичный ключ заблокированной записи в виде строки SQL, если заблокирована RECORD LOCK_TYPE, или NULL в противном случае. Если первичный ключ не существует, используется внутренний номер строки InnoDB row_id. Для избежания ненужных операций ввода-вывода, также NULL если страница с заблокированной записью не находится в кэше буфера

Таблица часто используется совместно с таблицами INNODB_LOCK_WAITS и INNODB_TRX для диагностики проблемных блокировок и транзакций.

Пример

-- 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_locks-table/

Spec-Zone.ru

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