14.16.2 InnoDB INFORMATION_SCHEMATransaction 和锁定信息

三个InnoDB INFORMATION_SCHEMAtable 使您可以监视事务并诊断潜在的锁定问题:

  • INNODB_TRX:提供有关InnoDB内部当前正在执行的每个事务的信息,包括事务状态(例如,它是正在运行还是正在 await 锁),事务何时开始以及事务正在执行的特定 SQL 语句。

  • INNODB_LOCKS:InnoDB 中 await 另一个事务释放锁(INNODB_TRX.TRX_STATELOCK WAIT)的每个事务都被一个阻止锁请求正好阻止。该阻塞锁请求是针对另一个事务以不兼容模式持有的行锁或 table 锁。阻止事务的锁始终处于与请求的锁模式不兼容的模式(读与写,共享与独占)。在其他事务提交或回滚之前,被阻止的事务才能 continue 进行,从而释放请求的锁。对于每个被阻止的事务,INNODB_LOCKS包含一行,该行描述了该事务已请求且正在 await 的每个锁。 INNODB_LOCKS还包含阻止另一事务的每个锁的一行,无论持有该锁的事务的状态如何(INNODB_TRX.TRX_STATERUNNINGLOCK WAITROLLING BACKCOMMITTING)。

  • INNODB_LOCK_WAITS:此 table 指示哪些事务正在 await 给定的锁,或者给定事务正在 await 的锁。该 table 为每个被阻止的事务包含一个或多个行,指示它已请求的锁以及正在阻止该请求的所有锁。 REQUESTED_LOCK_ID值是指事务请求的锁,而BLOCKING_LOCK_ID值是指阻止第一个事务 continue 进行的锁(由另一个事务持有)。对于任何给定的阻止 Transaction,INNODB_LOCK_WAITS中的所有行的REQUESTED_LOCK_ID值均相同,而BLOCKING_LOCK_ID的值均不同。

有关前面的 table 的更多信息,请参见第 24.32.27 节,“ INFORMATION_SCHEMA INNODB_TRXtable”第 24.32.13 节,“ INFORMATION_SCHEMA INNODB_LOCKStable”第 24.32.14 节,“ INFORMATION_SCHEMA INNODB_LOCK_WAITStable”