XA事务的隔离级别算啥级别( 二 )


社区版PGXC和PGXL稳定性很差,我所在团队已经在PGXC上做了3年定制与优化工作,产品已经应用在商业生产环境。

■网友
问题一 用SERIALIZABLE做分布式事务是可以避免脏读的,SERIALIZABLE事务针对读操作也是加锁的,这样整个分布式事务符合两阶段锁协议2pl,而2pl本事理论已经证明符合SERIALIZABLE,肯定可以避免脏读。问题二 很多数据库都实现了分布式的读已提交,mvcc用一个集中式或者逻辑上单调递增的东西分配snapshot就行,每一个statement去取一个snapshot就行。比如percolator用timestamp oracle生成snapshot。 spanner用truetime生成snapshot,pg-xc用gtm生成snapshot,cockroach使用hlc来生成时间戳。以上供参考。
■网友
之所以要隔离是要考虑事务的重新提交与回滚机制否则 如果不控制顺序 当时的事务快照很难做 即便做了 多个事务之间的数据控制因为涉及多个库 很难保证数据不会互相覆盖或者数据是想要的,排队至少解决了部分问题另外如果不用数据库的机制,用分布式锁这种又会带来性能问题,所以隔离的代价还是比较大,
阿里的drds好像是对事物做排到 从最终一致性上做处理

■网友
简单说就是,比如两个库上的事务A和B,有一定关联,A的一半数据和B的一半数据,合起来是一个完整状态。这个时候每个单机事务在RR下能保证单机的一致性,但是假如一个XA操作时A先B后,在A commit后,B commit完全之前,对于其他事务来说,只看到A变化了,B没变,所以不一致了。


推荐阅读