多版本并发控制技术MVCC


基本概念

  • MVCC:​ Multi-version Concurrent Control

  • 多版本并发控制技术
  • MVCC​技术最初也是在数据库系统中被提出
  • 这种思想并不局限于单机分布式系统,在分布式系统中同样有效

基本思想


  • MVCC​就是多个不同版本的数据实现并发控制的技术
  • MVCC的基本思想:

  • 为每次事务生成一个新版本的数据
  • 在读数据时选择不同的版本的数据即可以实现对事务结果的完整性读取


基本使用


  • MVCC的基本使用:


    • 每个事务都是基于一个已生效的基础版本进行更新
    • 事务可以并行进行,从而可以产生一种图状结构
      分布式系统原理Day08-多版本并发控制技术MVCC_数据


  • 基础的数据版本为​1,​ 同时产生了两个事务: 事务​A​与事务​B


    • 这些事务都各自对数据进行了一些本地修改,这些事务只有事务自己可见,不影响真正的数据
    • 之后事务​A​首先提交,生成数据版本​2
    • 基于数据版本​2,​ 又发起了事务​C,​ 事务​C​继续提交,生成数据版本​3
    • 最后事务​B​提交,此时事务​B​的结果需要与事务​C​合并
    • 如果数据没有冲突,即事务​B​没有修改事务​A​与事务​C​修改过的变量
    • 那么事务​B​可以提交,否则事务B提交失败



SVN


  • MVCC​的流程过程非常类似​SVN​等版本控制系统的流程.或者说 ​,SVN​等版本控制系统就是使用​MVCC​思想
  • 事务在基于基础数据版本做本地修改时,为了不影响真正的数据,通常有两种做法:

  • 将基础数据版本中的数据完全拷贝出来再修改 ​.SVN​就是使用了这种方法 ​.SVN check out​就是拷贝的过程
  • 或者每个事务中只记录更新操作,而不记录完整的数据,读取数据时再将更新操作应用到基础版本的数据从而计算出结果,这个过程类似于​SVN​的增量提交