三个InnoDB
INFORMATION_SCHEMA
表使您能够监视事务并诊断潜在的锁定问题:
INNODB_TRX
:提供有关当前在内部执行的每个事务 的信息InnoDB
,包括事务状态(例如,它是正在运行还是正在等待锁定)、事务何时开始以及事务正在执行的特定 SQL 语句。INNODB_LOCKS
:InnoDB 中等待另一个事务释放锁的每个事务 (INNODB_TRX.TRX_STATE
isLOCK WAIT
) 都被恰好一个阻塞锁请求阻塞。该阻塞锁请求是针对另一个事务在不兼容模式下持有的行或表锁。阻塞事务的锁总是以与请求锁的模式不兼容的模式持有(读与写,共享与独占)。在另一个事务提交或回滚,从而释放请求的锁之前,被阻塞的事务无法继续。对于每个阻塞的事务,INNODB_LOCKS
包含一行描述事务请求的每个锁,以及它正在等待的锁。INNODB_LOCKS
对于阻塞另一个事务的每个锁也包含一行,无论持有锁的事务的状态是什么(是INNODB_TRX.TRX_STATE
、RUNNING
或LOCK WAIT
) 。ROLLING BACK
COMMITTING
INNODB_LOCK_WAITS
:此表指示哪些事务正在等待给定的锁,或者给定的事务正在等待哪个锁。该表包含每个阻塞事务的一行或多行,指示它已请求的锁以及阻塞该请求的任何锁。该REQUESTED_LOCK_ID
值是指一个事务请求的锁,该BLOCKING_LOCK_ID
值是指阻止第一个事务继续进行的锁(由另一个事务持有)。对于任何给定的阻塞事务,中的所有行都INNODB_LOCK_WAITS
具有相同的值REQUESTED_LOCK_ID
和不同的值BLOCKING_LOCK_ID
。
有关前面表格的更多信息,请参阅 第 21.4.26 节,“INFORMATION_SCHEMA INNODB_TRX 表”, 第 21.4.14 节,“INFORMATION_SCHEMA INNODB_LOCKS 表”和 第 21.4.15 节,“INFORMATIONSCHEMA INNODB_LOCK_WAITS 表”。