一个 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
值引用了阻止该事务的锁。
有关上述表的更多信息,请参阅 第 28.4.28 节,“The INFORMATION_SCHEMA INNODB_TRX 表”、第 29.12.13.1 节,“The data_locks 表” 和 第 29.12.13.2 节,“The data_lock_waits 表”。