异步事务

最近更新时间:2021-01-25 16:38:49

查看PDF

MySQL组提交(group commit)过程中,大部分工作线程处于阻塞状态,等待相关业务的处理完成,如binlog的生成、binlog的sync刷盘及数据修改为已经提交状态等。当相关业务处理完成,阻塞等待的线程被激活,返回结果。
半同步或者全同步场景下,工作线程进入事务提交过程,需要等待主从复制的应答,此时工作线程处于空闲状态,当从库应答后,工作线程被激活,完成事务提交并返回结果。
阻塞等待的工作线程不能有效的使用,浪费了工作线程资源,降低了数据库的性能。

KingSQL在线程池模式下,工作线程和提交线程异步化,工作线程在事务提交的过程中不需要阻塞等待。当接收到用户的事务提交请求后,工作线程将事务推入提交等待队列,由后台线程异步处理事务提交逻辑,工作线程无需等待,继续处理新的用户请求。充分释放工作线程,减少工作线程的等待,保证高并发场景下的性能。

限制条件

实例版本为KingSQL内核版,且使用线程池。

适用场景

  • 在读写混合场景中,特别是半同步或全同步场景,可以充分提高工作线程的使用率,提升数据库的吞吐性能。

  • 需要与线程池配合使用。

参数配置

参数 含义及配置值
async_group_commit 是否开启异步事务
取值范围: on/off
默认值:off

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈