Spec-Zone.ru › MySQL 9.2

17.15.2 InnoDB INFORMATION_SCHEMA Сводка транзакций и блокировок

  • 17.15.2.1 Использование информации о транзакциях и блокировках InnoDB
  • 17.15.2.2 Информация о блокировках и ожидании блокировок InnoDB
  • 17.15.2.3 Сохранение и согласованность информации о транзакциях и блокировках InnoDB

Одна 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-information-schema-transactions.html

Spec-Zone.ru

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