17.15.2 InnoDB INFORMATION_SCHEMA 事务和锁定信息
一个INFORMATION_ SCHEMA
表和两个Performance Schema 表使您能够监控InnoDB
事务并诊断潜在的锁定问题:
-
INNODB_TRX
:这个INFORMATION_ SCHEMA
表提供了关于当前正在执行的每个事务的信息,包括事务状态(例如,它是否在运行或等待锁定),事务开始时间和事务正在执行的特定SQL语句。 -
data_locks: 这个性能架构表包含每个持有锁定的行和每个等待锁定的锁定请求的行:
-
对每个持有锁定,无论事务状态(
INNODB_TRX.TRX_STATE
为RUNNING
、LOCK WAIT
、ROLLING BACK
或COMMITTING
)都有一行。 -
每个在 InnoDB 等待另一个事务释放锁定的事务(
INNODB_TRX.TRX_STATE
为LOCK WAIT
)被阻塞由另一个事务持有的不兼容模式的锁定请求所阻塞。锁定请求总是与阻塞请求的锁定模式不兼容(读 vs. 写、共享 vs. 排他)。等待的事务不能继续执行,直到另一个事务提交或回滚,从而释放请求的锁定。对于每个被阻塞的事务,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节,“数据锁表”和第29.12.13.2节,“数据锁等待表”。