一个 INFORMATION_SCHEMA 表和两个性能模式表使您能够监控 InnoDB 事务并诊断潜在的锁定问题
INNODB_TRX: 此INFORMATION_SCHEMA表提供了有关当前在InnoDB内部执行的每个事务的信息,包括事务状态(例如,它是否正在运行或等待锁定)、事务开始时间以及事务正在执行的特定 SQL 语句。data_locks: 此性能模式表包含每个持有锁和每个被阻塞的锁定请求的记录,这些请求正在等待持有锁释放对于每个持有锁,无论持有锁的事务状态如何,都有一个记录 (
INNODB_TRX.TRX_STATE为RUNNING、LOCK WAIT、ROLLING BACK或COMMITTING)。InnoDB 中每个等待另一个事务释放锁的事务 (
INNODB_TRX.TRX_STATE为LOCK WAIT) 都被一个阻塞锁定请求阻塞。该阻塞锁定请求是针对另一个事务以不兼容模式持有的行锁或表锁。锁定请求始终具有与阻塞请求的模式不兼容的模式(读取与写入、共享与排他)。阻塞的事务无法继续,直到另一个事务提交或回滚,从而释放请求的锁。对于每个被阻塞的事务,
data_locks包含一个描述事务请求的每个锁的记录,以及阻塞该请求的任何锁。
data_lock_waits: 此性能模式表指示哪些事务正在等待特定锁,或者特定事务正在等待哪个锁。此表包含一个或多个关于每个被阻塞的事务的记录,指示其请求的锁以及任何阻塞该请求的锁。REQUESTING_ENGINE_LOCK_ID值引用事务请求的锁,而BLOCKING_ENGINE_LOCK_ID值引用阻止第一个事务继续执行的锁(由另一个事务持有)。对于任何给定的被阻塞事务,data_lock_waits中的所有记录具有相同的REQUESTING_ENGINE_LOCK_ID值,但具有不同的BLOCKING_ENGINE_LOCK_ID值。
有关上述表的更多信息,请参见 第 28.4.28 节“INFORMATION_SCHEMA INNODB_TRX 表”、第 29.12.13.1 节“data_locks 表” 和 第 29.12.13.2 节“data_lock_waits 表”。