Схема информации 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/