分享一下TDSQL在实现“双一致性(事务一致性、分布式一致性)”,并提高分布式事务型集群的处理效率的探索实践。
众所周知,数据库是一个高并发系统,所有的操作通过事务的语义加以约束。而事务的语义,表现为事务的四个特性——ACID:原子性(A)、一致性(C)、隔离性(I)、持久性(D)。而一个数据库系统,其最核心的技术,就是事务处理技术。为了保障ACID,数据库使用了多种复杂技术,其中,技术的核心是并发访问控制算法。
事务处理技术,有两个初衷:一是数据正确性,二是并发高效率。TDSQL的分布式事务处理模型,经历了2代,第一代采用的技术是2PL+MVCC,第二代采用的是OCC+2PL+MVCC。OCC技术融合了2PL以解决高冲突不能高效率的问题,OCC融合了MVCC消除了读写、写读互相阻塞的并发问题进一步提高了性能,自适应的OCC使得在OCC和2PL间动态自动切换,使得分布式事务处理机制更聪明。
但是,这些还不足以体现TDSQL如何着手提高分布式事务的效率。在架构上,TDSQL是去中心化的架构,没有集中式单Master那样的处理分布式事务的单点瓶颈,事务协调器间传递相关联的分布式事务控制信息量被优化,分布式并发访问控制算法的冲突粒度控制在数据项一级从而提高了事务的并发度,因而效率更高。另外还有很多其他方面的优化,使得TDSQL的分布式事务处理效率较高。
而我们继续探讨,在分布式背景下,怎么实现“双一致性(事务一致性、分布式一致性)