17.15.2 InnoDB INFORMATION_SCHEMA Сводка транзакций и блокировок
Одна INFORMATION_SCHEMA таблица и две таблицы Performance Schema позволяют отслеживать InnoDB транзакции и диагностировать потенциальные проблемы с блокировками:
-
INNODB_TRX: ЭтаINFORMATION_SCHEMAтаблица предоставляет информацию обо всех транзакциях, которые в данный момент выполняются внутриInnoDB, включая состояние транзакции (например, выполняется или ожидает блокировки), время начала транзакции и конкретное SQL-предложение, которое выполняет транзакция. -
data_locks: Эта таблица Performance Schema содержит строку для каждой удерживаемой блокировки и каждого запроса на блокировку, заблокированного в ожидании освобождения удерживаемой блокировки:Есть одна строка для каждой удерживаемой блокировки, независимо от состояния транзакции, которая удерживает эту блокировку (
INNODB_TRX.TRX_STATEявляетсяRUNNING,LOCK WAIT,ROLLING BACKилиCOMMITTING).-
Каждая транзакция в InnoDB, ожидающая освобождения блокировки другой транзакцией (
INNODB_TRX.TRX_STATEявляетсяLOCK WAIT), блокируется ровно одним запросом на блокировку, блокирующим ее. Этот запрос на блокировку относится к строке или табличной блокировке, удерживаемой другой транзакцией в несовместимом режиме. Запрос на блокировку всегда имеет режим, несовместимый с режимом удерживаемой блокировки, которая блокирует этот запрос (чтение против записи, совместное против эксклюзивного).Заблокированная транзакция не может продолжить выполнение до тех пор, пока другая транзакция не завершит или не откатит транзакцию, тем самым освободив запрашиваемую блокировку. Для каждой заблокированной транзакции в
data_locksсодержится одна строка, описывающая каждую блокировку, которую запросила транзакция и в ожидании которой она находится.
-
data_lock_waits: Эта таблица Performance Schema указывает, какие транзакции ожидают определенную блокировку или для какой блокировки определенная транзакция ожидает. Эта таблица содержит одну или несколько строк для каждой заблокированной транзакции, указывающих запрашиваемую ею блокировку и любые блокировки, которые блокируют этот запрос. ЗначениеREQUESTING_ENGINE_LOCK_IDотносится к блокировке, запрошенной транзакцией, а значениеBLOCKING_ENGINE_LOCK_IDотносится к блокировке (удерживаемой другой транзакцией), которая не позволяет первой транзакции продолжить выполнение. Для любой данной заблокированной транзакции все строки вdata_lock_waitsимеют одинаковое значение дляREQUESTING_ENGINE_LOCK_IDи разные значения дляBLOCKING_ENGINE_LOCK_ID.
Дополнительную информацию о приведенных выше таблицах см. в Разделе 28.4.28, «Таблица INNODB_TRX INFORMATION_SCHEMA», Разделе 29.12.13.1, «Таблица data_locks» и Разделе 29.12.13.2, «Таблица data_lock_waits».
© 2025 Oracle
Licensed under the GPLv2 License.