操作指南

API 文档

CATS 事务调度

最近更新时间:2021-12-10 17:29:13

功能介绍

TXSQL 新增一种新的并发事务调度算法(Contention-Aware Transaction Scheduling,CATS),可自动感知事务直接锁冲突并根据事务的优先级来调度事务执行。
MySQL 原有的并发事务是采用 FIFO(First-In-First-Out)规则来决定事务执行顺序的,而 CATS 事务调度算法的主要原理是根据事务持有锁的情况来判断并发事务的冲突情况,并决定事务执行的优先级,而后,根据优先级来安排事务的执行顺序,从而提升系统事务处理的吞吐量。

支持版本

  • 内核版本 MySQL 5.7 20190230 及以上
  • 内核版本 MySQL 8.0 20200630 及以上

适用场景

主要适用于高并发并且锁冲突比较严重的场景。

性能数据

高并发,锁冲突严重的场景下有50%以上的 TPS 性能提升。

  • 测试方法:sysbench-oltp_read_write 场景(RR 隔离级别,8张表10MB条数据,pareto 随机模式)
  • 测试环境:32核128GB线上实例
线程数 FCFS(FIFO) CATS 性能提升
128 11999 12005 0%
256 6609 10137 53%
512 3453 9365 171%
1024 2196 7015 219%

使用说明

MySQL 5.7 版本可以通过全局参数 innodb_trx_schedule_algorithm 来指定事务调度算法,该参数缺省值是 auto。
其中,算法有三种:

  • auto:自动,根据当前系统状况自动调整。当锁等待线程数超过32个时采用 CATS 调度算法,否则采用 FCFS 算法。
  • fcfs:先来先服务算法。
  • cats: 冲突感知调度算法。
参数名 动态 类型 默认 参数值范围 说明
innodb_trx_schedule_algorithm yes string auto [auto,fcfs,cats] 事务等待调度算法
说明:

用户目前无法直接修改以上参数的参数值,如需修改可 提交工单 进行修改。

MySQL 8.0 版本固定采用 auto 算法,不可设置。

目录