异步事务

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

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

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

限制条件

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

适用场景

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

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

参数配置

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

金山云,开启您的云计算之旅

免费注册