Rechercher dans le manuel MySQL
15.14.2 InnoDB INFORMATION_SCHEMA Transaction and Locking Information
[+/-]
This section describes locking information as exposed by the
Performance Schema data_locks
and
data_lock_waits
tables, which
supersede the INFORMATION_SCHEMA
INNODB_LOCKS
and
INNODB_LOCK_WAITS
tables in MySQL
8.0. For similar discussion written in terms of the
older INFORMATION_SCHEMA
tables, see
InnoDB INFORMATION_SCHEMA Transaction and Locking Information
in MySQL 5.7 Reference Manual.
One INFORMATION_SCHEMA
table and two
Performance Schema tables enable you to monitor
InnoDB
transactions and diagnose potential
locking problems:
INNODB_TRX
: ThisINFORMATION_SCHEMA
table provides information about every transaction currently executing insideInnoDB
, including the transaction state (for example, whether it is running or waiting for a lock), when the transaction started, and the particular SQL statement the transaction is executing.data_locks
: This Performance Schema table contains a row for each hold lock and each lock request that is blocked waiting for a held lock to be released:There is one row for each held lock, whatever the state of the transaction that holds the lock (
INNODB_TRX.TRX_STATE
isRUNNING
,LOCK WAIT
,ROLLING BACK
orCOMMITTING
).Each transaction in InnoDB that is waiting for another transaction to release a lock (
INNODB_TRX.TRX_STATE
isLOCK WAIT
) is blocked by exactly one blocking lock request. That blocking lock request is for a row or table lock held by another transaction in an incompatible mode. A lock request always has a mode that is incompatible with the mode of the held lock that blocks the request (read vs. write, shared vs. exclusive).The blocked transaction cannot proceed until the other transaction commits or rolls back, thereby releasing the requested lock. For every blocked transaction,
data_locks
contains one row that describes each lock the transaction has requested, and for which it is waiting.
data_lock_waits
: This Performance Schema table indicates which transactions are waiting for a given lock, or for which lock a given transaction is waiting. This table contains one or more rows for each blocked transaction, indicating the lock it has requested and any locks that are blocking that request. TheREQUESTING_ENGINE_LOCK_ID
value refers to the lock requested by a transaction, and theBLOCKING_ENGINE_LOCK_ID
value refers to the lock (held by another transaction) that prevents the first transaction from proceeding. For any given blocked transaction, all rows indata_lock_waits
have the same value forREQUESTING_ENGINE_LOCK_ID
and different values forBLOCKING_ENGINE_LOCK_ID
.
For more information about the preceding tables, see Section 25.39.29, “The INFORMATION_SCHEMA INNODB_TRX Table”, Section 26.12.12.1, “The data_locks Table”, and Section 26.12.12.2, “The data_lock_waits Table”.
Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-innodb-information-schema-transactions.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.