分布式数据库的事务管理及恢复机制

分布式事务概述

全局事务:分布式数据库的事务。一个全局事务在执行时分解为由若干与相应站点有关的操作序列组成的"子事务”。

分布式数据库的事务管理及恢复机制_第1张图片

分布式事务特点:原子性、一致性、隔离性、持久性、系统效率、系统可用性(分布式事务既不能影响本站点上事务的执行,也不能影响其它站点上事务的执行

分布式事务代理执行机制:

分布式数据库的事务管理及恢复机制_第2张图片

分布式数据库的事务管理及恢复机制_第3张图片

分布式数据库的事务管理及恢复机制_第4张图片

分布式数据库的事务管理及恢复机制_第5张图片

分布式事务的两阶段提交协议

分布式数据库的事务管理及恢复机制_第6张图片

两阶段提交协议的执行过程:

  • 表决阶段:对当前事务形成一个决定。
    1. 协调者:
      1. 写“开始事务”日志;
      2. 向各个参与者发出"准备”命令;
      3. 进入等待状态。
    2. 对于每一个参与者:
      1. 参与者接收“准备”消息;
      2. 参与者检查子事务,确定是否提交子事务。
      3. 分布式数据库的事务管理及恢复机制_第7张图片
    3. 协调者接收到所有参与者的回答后,作出决定:(一票否决制,只要有一个参与者它没有协调者发出成功提交的表决的话,整个分布式事务就必须要撤销)
      1. 分布式数据库的事务管理及恢复机制_第8张图片
  • 执行阶段:
    1. 对于每一个处于"就绪”状态的参与者:
      1. 参与者根据协调者发出的全局事务处理指令,或者撤消子事务,或者提交子事务;
      2. 参与者发出"确认”(ACK)收到全局事务处理指令消息;
      3. 参与者进入"撤消”或"提交"状态。
    2. 协调者写“结束事务”日志。

分布式数据库的事务管理及恢复机制_第9张图片

两阶段提交协议的特点:
➢参与者有权单方面撤消事务。
➢参与者作出“建议提交" 或"建议撤消”决定之后,不能“反悔”。
➢处于“就绪”状态的参与者可能进入提交状态,或撤消状态。
➢协调者和参与者可能进入互相等待状态。

分布式并发控制概述

定义:与集中式并发控制从原理上一致,但是更复杂,可以看作是集中式并发控制的一种扩展。
分布式并发控制的目的:为并发执行的全局事务,产生一个可串行化调度。
局部调度:每个站点上的调度称为局部调度。
全局调度:数据库系统全局事务的调度。

例子: 

分布式数据库的事务管理及恢复机制_第10张图片

全局调度的冲突可串行性应满足的条件1:单副本控制协议
➢每一个局部调度是冲突可串行化的。
➢任意两个冲突操作在它们同时出现的各个局部调度中,必须有相同的执行顺序。
全局调度的冲突可串行性应满足的条件2:读一个写全部

并发控制算法:

分布式数据库的事务管理及恢复机制_第11张图片

并发控制的加锁机制

集中式加锁法:网络中某一 个站点被指定为主站点 ,用于存放整个分布式数据库的加锁表,负责整个系统事务的加锁。

主副本加锁法:每个数据对象指定一 个主副本 ,不同数据对象的主副本放在不同站点上。算法:对主副本加锁;执行更新操作;开锁。

分布式加锁算法:锁的管理由各个站点调度器参与、协调,本地调度器负责本站数据加锁。算法:对全部副本加锁;执行更新操作;开锁。

分布式数据库加锁准则:
➢遵守锁的相容性规则
➢遵守两段锁协议(Two Phase Locking---2PL)
➢持有X锁的事务,必须到结束事务才能开锁
➢读,锁一个;写,锁全部(ROWA协议)

死锁管理:

  • 全局死锁:分布式数据库中,涉及多个站点的死锁称为全局死锁。

分布式数据库的事务管理及恢复机制_第12张图片

  • 全局等待图 (GWFG ):
    • ➢站点A:拥有x、y的副本; T1: read(x), write(y)
    • ➢站点B:拥有y、z的副本; T2: read(y), write(z)
    • ➢站点C:拥有z的副本;T3: read(z), write(x)

分布式数据库的事务管理及恢复机制_第13张图片

  • 死锁的检测:
    • 集中式死锁检测法
      • 指定某站点上的锁管理器作为全局死锁检测器。
      • 其余站点周期地向全局死锁检测器发送LWFG 。
      • 全局死锁检测器产生GWFG ,并检测有无回路。
    • 分布式死锁检测法
      • 每个站点都有死锁检测器,负责检测本地可能的死锁。
      • 每个站点按照-定规则,向相关站点发送潜在的死锁回路图。
  • 死锁的解决:
    • 原则:撤消井恢复代价最小的事务。
      • 撤消并恢复年轻的事务。
      • 撤消并恢复占用资源较少的事务。
      • 撤消并恢复具有最短运行时间的事务。

并发控制的时标技术

基本时标法

时标:唯一识别一个事务,并用于对事务进行排序的标识符。

时标的构成: "本地计数器值,站点标识符"。

时标的创建:一个事务Ti初始化时,事务管理器给该事务分配一个时标ts(Ti)。

时标排序(TO)规则:已知Qi和Qj是分别属于事务T;和T冲突操作。若ts(Ti) < ts(Tj) ,则Qi在Qj之前执行。

规则:

  • 每个事务在本地站点开始时被赋以一个全局唯一的时标。
  • 事务的每个读或写操作都有该事务的时标。
  • 如果事务被重新启动,则被赋予新的时标。
  • 在事务结束之前,不对数据库进行物理操作。
  • 对于数据库每个数据对象x,记录对它进行读操作和写操作的最大时标RT M(x)和WTM(x)。

基本时标法的执行过程:

  • 设TS是对数据对象x进行读操作的当前时标。
  • 若TS < WTM(x) ,则,拒绝该操作;并使发出该操作的事务用新时标重新启动;
  • 否则,执行读操作,且使:RTM(x)=max(RTM(x),TS)
  •  
  • 设TS是对数据对象x进行写操作的当前时标。
  • 若TS < RTM(x) OR TS
  • 否则,执行写操作,且使:WTM(x)=max(WTM(x),TS)

保守时标法

特点:采用缓冲区缓冲“年轻”操作,以便尽量消除"拒绝操作”,避免事务重新启动。
规则:

  • 每个事务只在一个站点执行。不激活远程程序,只能向远程站点发出读/写操作请求。
  • 每个站点必须按照时标时间的顺序发送读/写数据的请求。对于每个事务的更新操作,必须做到对同一数据对象先读后写。
  • 每个站点都开辟一个缓冲区 ,用于保存其它站点发来的读/写操作。

保守时标法的执行过程:一旦某个站点上的各个缓冲区队列都不空,即,每个站点至少向该站点发送了一个读和一个写,就停止接收,转入处理缓冲区队列上的操作。

例:

分布式数据库的事务管理及恢复机制_第14张图片

分布式数据库的事务管理及恢复机制_第15张图片

分布式数据库的事务管理及恢复机制_第16张图片

乐观方法的特点:

  • 任何事务在写一个数据项之前,必须首先读该数据项。
  • 事务在读/计算阶段,在读取一个数据项之后,接着只是做了对该数据项进行写操作所需新值的“准备”, 实际上并没有执行物理写盘操作! 

分布式数据库的事务管理及恢复机制_第17张图片

分布式数据库的事务管理及恢复机制_第18张图片

 

 

【北京工业大学-高级数据库系统】

【https://next.xuetangx.com/course/BJUT08091000021/1075768】

你可能感兴趣的:(高级数据库系统)