最近更新时间:2021-01-25 16:38:49
MySQL组提交(group commit)过程中,大部分工作线程处于阻塞状态,等待相关业务的处理完成,如binlog的生成、binlog的sync刷盘及数据修改为已经提交状态等。当相关业务处理完成,阻塞等待的线程被激活,返回结果。
半同步或者全同步场景下,工作线程进入事务提交过程,需要等待主从复制的应答,此时工作线程处于空闲状态,当从库应答后,工作线程被激活,完成事务提交并返回结果。
阻塞等待的工作线程不能有效的使用,浪费了工作线程资源,降低了数据库的性能。
KingSQL在线程池模式下,工作线程和提交线程异步化,工作线程在事务提交的过程中不需要阻塞等待。当接收到用户的事务提交请求后,工作线程将事务推入提交等待队列,由后台线程异步处理事务提交逻辑,工作线程无需等待,继续处理新的用户请求。充分释放工作线程,减少工作线程的等待,保证高并发场景下的性能。
实例版本为KingSQL内核版,且使用线程池。
在读写混合场景中,特别是半同步或全同步场景,可以充分提高工作线程的使用率,提升数据库的吞吐性能。
需要与线程池配合使用。
参数配置
参数 | 含义及配置值 |
---|---|
async_group_commit | 是否开启异步事务 取值范围: on/off 默认值:off |
纯净模式