文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


17.7.6 事务调度

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

    分析等待图以更新已调度事务权重的次数。