评估 MySQL 锁调度算法中的性能增益

主要观点:调度在计算机系统设计中至关重要,正确的策略可降低平均响应时间提升性能,MySQL 8.0 使用 CATS 算法优化事务调度,能减少死锁提高用户响应时间,但在不同测试环境下表现不同,性能测试复杂易出错,需综合考虑。
关键信息

  • CATS 算法根据事务阻塞数计算调度权重确定优先级,若权重相等则等待时间长的事务优先。
  • 死锁发生时多个事务相互等待对方持有的锁。
  • 测试对比 CATS 和 FIFO 算法在吞吐量、响应时间、死锁错误统计等方面的表现,CATS 在 Pareto 测试中表现较好,但在其他测试环境下不如 FIFO。
  • 死锁会导致大量日志输出,CATS 算法可减少忽略错误的数量。
    重要细节
  • 恢复 MySQL 的 FIFO 锁调度算法简单,在改进的 MySQL 8.0.32 中进行了多种测试,包括不同并发水平下的 SysBench 测试和 TPC-C 测试等。
  • 性能测试受死锁日志输出干扰,抑制死锁日志后 CATS 与 FIFO 算法差异变小。
  • CATS 算法在不同测试环境下表现不同的原因包括额外开销、NUMA 环境问题、冲突严重程度和并发场景差异等。
  • 数据库性能测试复杂,不能仅靠数据判断,需深入调查确保逻辑一致性。
阅读 9
0 条评论