MGR之group_replication_consistency性能测试

导读
作者徐晨亮,MySQL DBA,知数堂学员。 热衷于数据库优化,自动化运维及数据库周边工具开发,对MySQL源码有一定的兴趣

一、前言

开篇先说明下MGRgroup_replication_consistency参数的意义
group_replication_consistency是MySQL 8.0.14为解决MGR中一致性读提供的参数,分为以下5种可选值:

  • EVENTUAL:开启该级别的事务(T2),事务执行前不会等待先序事务(T1)的回放完成,也不会影响后序事务等待该事务回放完成
  • before:开启了该级别的事务(T2),在开始前首先要等待先序事务(T1)的回放完成,确保此事务将在最新的数据上执行。
  • AFTER:开启该级别的事务(T1),只有等该事务回放完成。其他后序事务(T2)才开始执行,这样所有后序事务都会读取包含其更改的数据库状态,而不管它们在哪个成员上执行
  • BEFORE_AND_AFTER:开启该级别等事务(T2),需要等待前序事务的回放完成(T1);同时后序事务(T3)等待该事务的回放完成
  • BEFORE_ON_PRIMARY_FAILOVER:在发生切换时,连到新主的事务会被阻塞,等待先序提交的事务回放完成;这样确保在故障切换时客户端都能读取到主服务器上的最新数据,保证了一致性

为了测试改参数对实际MGR集群性能的影响,进行了不同模式下的标准压测,由于本次测试MGR集群是Multi-master模式,因此,没有测试BEFORE_ON_PRIMARY_FAILOVER(针对Single-primary模式起作用)

二、测试

测试说明:

MGR集群: 3节点 Multi-Master模式
8C16G
普通SATA盘,IOPS在1000出头点
ibp: 11.5G
测试表数: 40
表数据量: 1000000

三、测试数据及结果

1、TPS

640?wx_fmt=png

640?wx_fmt=png

2、QPS

640?wx_fmt=jpeg

640?wx_fmt=png

3、95%rt

640?wx_fmt=png

640?wx_fmt=png

四、结论

  1. 从测试结果上来看,默认eventual的性能是最好的,这也是可以预知的,因为该模式下,后续事务不需要管前面事务是否应用,也不需要在所有节点apply以后再提交,只需要在超过半数节点冲突检测通过以后即可提交
  1. before模式下,在不同线程下,性能均有小幅下降,相比eventual模式下降约10%左右
  1. 而after模式下,MGR性能下降非常严重,并且在8线程以后基本达到上限,而且随着线程数的加大,响应时间也随之加大,在64线程下,after模式性能基本为eventual模式的1/5不到,可见性能下降非常严重
  1. before_and_after模式性能基本与after模式持平
  1. 因此,在生产环境中,需要在数据一致性跟性能之间做好权衡,在数据一致性高的场景下可以设置session级别的group_replication_consistency,而无需设置全局

参考文章: https://zhishutang.com/20S

END


640?wx_fmt=png

640?wx_fmt=png


640?wx_fmt=gif

640?wx_fmt=gif

扫码加入MySQL技术Q群

(群号:529671799)

   

640?wx_fmt=jpeg

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值