MySQL 8.3 Release Notes
事务和锁定表(INFORMATION_SCHEMA
INNODB_TRX
表,Performance Schema data_locks
和 data_lock_waits
表)暴露了快速变化的数据。这与用户表不同,用户表的数据只有在应用程序初始化更新时才会改变。底层数据是内部系统管理的数据,可以非常快速地改变:
-
数据可能不一致于
INNODB_TRX
、data_locks
和data_lock_waits
表之间。Performance Schema
data_locks
和data_lock_waits
表暴露了来自InnoDB
存储引擎的实时数据,以提供事务锁信息在INNODB_TRX
表中的锁信息。从锁表中检索的数据存在于SELECT
执行时,但可能在查询结果被客户端消费时已经消失或改变。将
data_locks
与data_lock_waits
连接可以显示data_lock_waits
中的行,它们在data_locks
中没有对应的父行或不存在。 -
事务和锁定表中的数据可能不一致于
INFORMATION_SCHEMA
PROCESSLIST
表或 Performance Schemathreads
表中的数据。例如,您应该小心比较事务和锁定表中的数据与
PROCESSLIST
表中的数据。即使您发出单个SELECT
(连接INNODB_TRX
和PROCESSLIST
,例如),这些表中的内容通常不一致。可能INNODB_TRX
引用了PROCESSLIST
中不存在的行,或者当前执行的 SQL 查询在INNODB_TRX.TRX_QUERY
中与PROCESSLIST.INFO
中的查询不同。