关于事务提交方式

从 v3 升级到 v4 后,以日志流为单位的事务提交方式替换了原来以分区为单位的事务提交方式1,这在分布式事务处理场景下,具体是如何提升性能和资源利用效率的?是否会对原有的应用程序和业务逻辑产生影响?如果有,应该如何进行针对性的优化和调整?

3 个赞

分布式数据库的事务提交分成两种,一种跟传统数据库提交一样,在Ob数据库中称为一阶段提交,一阶段提交的3X前提是单分区的事务,即便是单分区的事务,如果是远程执行的话,也不会走一阶段提交,对于分布式数据库的一阶段提交跟传统数据库的事务提交性能上基本是一样的,那么影响分布式数据库的事务提交的效率主要原因是二阶段提交,因为二阶段提交存在多个事务的参与者,OB的二阶段提跟传统的两阶段提交是有区别的,主要的区别就是Ob去掉了协调者的角色,所有的参与这都知道事务运行的状态信息,相比传统两阶段提交会少写日志,少PRC的交互,协调者宕机事务也可以继续进行下去,从性能和安全角度都很的的提升,但是相比一阶段毕竟多了一个阶段,性能肯定不如一阶段提交,3X的日志流是分区级别的,只要是一个以上的分区涉及的事务都会走两阶段提交,4X就不一样了,多个分区一个日志流,如果事务的参与者是多个分区,但是这个多个分区是一个日志流,那么事务提交走的是一阶段提交,这个从事务提交性能上考虑是比3X有很大的提升,同时也从一定程度升避免很多相比3X的分布式事务场景

5 个赞

专业 :+1:
服!

2 个赞

分布式一般就是使用两阶段提交

1 个赞