分布式事务排序与时钟方案

一 数据库为什么需要时钟

  1. 事务排序
  • 事务顺序的标识决定事务的原子性和隔离性
  • 时钟:日志LSN、事务ID、时间戳
    在这里插入图片描述
  1. 支持MVCC
  • 通过支持数据的多版本,允许读写相同数据并发
  • 数据的多版本需要对数据进行时钟标识
    在这里插入图片描述

二 分布式数据库中的事务排序问题

  1. 单机数据库
  • 计算机的系统时钟是一个频率精确和稳定的脉冲信号发生器
  • 物理时钟可以准确描述事件在当前机器发生的先后关系
    在这里插入图片描述
  1. 分布式数据库
  • 数据库实例运行在不同的物理位置,每个节点有独立的时钟
  • 即使采用NTP同步,也可能发生毫秒级偏移
  • 物理时钟不能作为分布式系统内并发事务排序的依据
    在这里插入图片描述

三 分布式数据库中的事务排序方案

逻辑时钟(LC)

  1. Lamport,1987年,论文《Time, Clocks, and the Ordering of Events in a Distributed System》
  2. 事件先后(因果)关系 (a→b代表a发生在b之前,a||b代表a和b无关)
  • a和b是同一进程内的事件,a发生在b之前,则a→b
  • a和b在不同进程,a是发送进程内的发送事件,b是同一消息接收事件,则a→b
  • 如果a→b且b→c,则a→c
  1. 算法描述
  • 进程Pi每发生一次事件,Ci加1(Ci代表进程Pi的逻辑时钟)
  • 进程Pi给进程Pj发送消息,需要带上自己的本地逻辑时钟Ci
  • 进程Pj接收消息,更新Cj为 max (Ci, Cj) + 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值