MySQL 8.4 发行说明
InnoDB
使用竞争感知事务调度 (CATS) 算法来确定等待锁的事务的优先级。当多个事务在同一个对象上等待锁定时,CATS 算法会确定哪个事务首先获得锁。
CATS 算法通过分配调度权重来确定等待事务的优先级,调度权重是根据事务阻塞的事务数量计算的。例如,如果有两个事务在同一个对象上等待锁,则阻塞最多事务的事务会被分配更大的调度权重。如果权重相等,则优先考虑等待时间最长的事务。
您可以通过查询信息架构 INNODB_TRX
表中的 TRX_SCHEDULE_WEIGHT
列来查看事务调度权重。权重仅针对等待事务计算。等待事务是指处于 LOCK WAIT
事务执行状态的事务,如 TRX_STATE
列所示。未等待锁的事务将报告 NULL TRX_SCHEDULE_WEIGHT
值。
INNODB_METRICS
计数器用于监控代码级事务调度事件。有关使用 INNODB_METRICS
计数器的信息,请参阅 第 17.15.6 节,“InnoDB INFORMATION_SCHEMA 指标表”。
lock_rec_release_attempts
尝试释放记录锁的次数。一次尝试可能会导致释放零个或多个记录锁,因为单个结构中可能存在零个或多个记录锁。
lock_rec_grant_attempts
尝试授予记录锁的次数。一次尝试可能会导致授予零个或多个记录锁。
lock_schedule_refreshes
分析等待图以更新已调度事务权重的次数。