• GBase 8c核心特性-分布式事务


    GBase 8c通过GTM全局事务管理器和本地两阶段提交技术,提供分布式强一致事务的能力,同时,对于追求性能的新兴数据库业务,也支持可选的最终一致性事务的能力。

    分布式事务原子性和两阶段提交协议

    为了保证分布式事务的原子性,防止出现部分DN提交、部分DN回滚的“中间态”事务,GBase 8c采用两阶段提交(2PC)过程,实现跨节点分布式事务。

    一、准备阶段(prepare phase),在这个阶段,将所有提交操作所需要使用到的信息和资源全部写入磁盘,完成持久化;

    二、提交阶段(commit phase),根据之前准备好的提交信息和资源,执行提交或回滚操作。

    一旦准备阶段执行成功,那么提交需要的所有信息都完成持久化落盘,即使后续提交阶段某个DN发生执行错误,该DN可以再次从持久化的提交信息中尝试提交,直至提交成功。最终该分布式事务在所有DN上的状态一定是相同的,要么所有DN都提交,要么所有DN都回滚。因此,对外来说,该事务的状态变化是原子的。

    分布式事务一致性和全局事务管理

    GBase 8c采用了基于全局事务提交时间戳的TSO方案,保证分布式事务一致性。处理流程如下图所示:
    在这里插入图片描述

    1. GTM负责维护全局时间戳CSN;

    2. 当开启事务时从GTM获取当前的时间戳

    3. 当事务提交的时候重新获取一遍时间戳(CSN+1)

    这种方式的优势在于:

    l 使用全局逻辑时间戳CSN号替代传统的活跃事务列表作为全局快照,可以大幅降低所有节点到事务管理器GTM节点的网络开销,使得全局事务管理节点不再容易成为分布式事务处理的瓶颈节点;

    l 使用逻辑时间戳CSN号本质上是为所有的写事务在全局进行内部排序,为处理数据库双相同步等方面提供了便捷。

    示例:

    Begin; //Transaction Start

    1. Select * from t1 where id = 1; //单节点查询

    2. Select * from t1, t2 where t1.id = t2.id;//跨节点查询

    3. insert into t1 values(1, “aaa”); //单节点写入

    4. Update t1 set name = ”bbb” where id = 1; // 单节点更新

    5. Delete from t2 where id < 10; //跨节点删除

    Commit; //Transaction Commit

  • 相关阅读:
    LeetCode【55】跳跃游戏
    Python爬虫实战系列4:天眼查公司工商信息采集
    基于蚁群算法的TPS问题求解策略研究(Matlab代码实现)
    QTcpServer 封装
    Oracle【ORA-00600 internal error code arguments [2662]】恢复一例
    随身WIFI刷真Linux(Debian)系统搭配拓展坞做超低功耗服务器
    网络原理之 TCP解释超详细!!!
    信息学奥赛一本通1000:入门测试题目
    Swfit获取系统开机时间BootTime
    【财经研究】并购重组的“不可能三角”
  • 原文地址:https://blog.csdn.net/kevindaddy/article/details/126948244