zoukankan      html  css  js  c++  java
  • MVCC(Multi-version Cocurrent Control)

    MVCC相比2PC是一种更简单有效的分布式事务解决方案。

    假设一种场景,一个分布式事务在A,B两个节点更新数据,要么同时成功,要么同时失败。

    MVCC 中,为每个事务分配一个递增的事务编号,有一个中心的元数据管理单元,记录最新的已提交的事务编号。

    假设A,B节点状态如下:

    节点     操作                             事务序号 

    A         set var1 = 1                 1

    A         set var2 = 2                 1

    A         set var1 = var1 + 2     2

    B         set var3 = 2                 1

    B         set var4 = 1                 2

    1. 若此时全局元信息中的最大的生效事务序号为 1,则在节点 A 上:var1=1,var2=2,在节点 B上:var3 =2; 

    2. 若此时全局元信息中的最大的生效事务序号为 2,则在节点 A 上:var1= 1+2=3,var2=2,在节点 B 上:var3=2,var4=1;

    从这个例子可以看出,每个节点上保存了对数据的更新操作,也就是数据的增量(delta),从而可以在读取数据时将应用不同的更新操作得出不同的数据版本。上例中,计算编号小于等于 1 的事务操作得出的数据即为版本号为 1 的数据,计算编号小于等于 2 的事务操作得出的数据即为版本号为 2 的数据。在新事务执行过程中,虽然更新操作已经逐步记录到各个节点,但只要全局元信息不修改,始终不会读到没有生效的事务数据,从而实现了全局一致性。

  • 相关阅读:
    eclipse下切换svn用户
    Netty实现服务端客户端长连接通讯及心跳检测
    Spring Batch系列总括(转载)
    SQL中的Null深入研究分析
    MySQL报错“1366
    Memcache学习php完整一例
    Memcache学习笔记
    递归和迭代区别
    解决textarea 输出有空格问题
    解决mysql安装出现error Nr.1045问题
  • 原文地址:https://www.cnblogs.com/gm-201705/p/10765527.html
Copyright © 2011-2022 走看看