分布式事务管理_笔记

分布式事务管理

概述

1.分布式事务的特点

全局事务:分布式数据库的事务。一个全局事务在执行时分解为由若干与相应站点有关的操作序列组成的“子事务”。
和集中式事务一样,都要有:原子性、隔离性、一致性、持久性
还要注意的是:系统效率、系统可用性(既不能影响本站点上事务的执行,也不能影响其他站点上事务的执行)

2.分布式事务代理执行机制

在这里插入图片描述

两阶段提交协议

宏观上的执行过程在这里插入图片描述

阶段1 表决阶段:对当前事务形成一个决定

1.协调者:
·写“开始事务”日志;
·向各个参与者发出“准备”命令;
·进入等待状态。
2.对于每一个参与者:
·参与者接收“准备”消息;
·参与者检查子事务,确定是否提交子事务。
case1:可以提交子事务:
·参与者写“就绪”日志;
·向协调者发出“建议提交”消息;
·参与者进入“就绪”状态。
case2:不可以提交子事务:
·参与者写“撤销”日志;
·向协调者发出“建议撤销”消息;
·参与者进入“撤销”状态。
3.协调者接收到所有参与者的回答后,做出决定:
case1:若所有参与者发出“建议提交”的消息,则协调者做出提交全局事务的决定。
·协调者写提交日志;
·协调者发出“全局提交”的消息;
·协调者进入”提交“状态。
case2:若发现某参与者发出”建议撤销“的消息,协调者做出撤销全局事务的决定:
·协调者写撤销日志;
·协调者发出”全局撤销“的消息;
·参与者进入”撤销“状态。
采取了一票否决的策略

执行阶段

1.对于每一个处于”就绪“状态的参与者:
·参与者根据协调者发出的全局事务处理指令,或者撤销子事务,或者提交子事务;
·参与者发出”确认“(ACK)收到全局事务处理指令消息;
·参与者进入”撤销“或”提交“状态。
2.协调者写”结束事务“日志。
在这里插入图片描述

两阶段提交协议的特点

1.参与者有权单方撤销事务;
2.参与者作出”建议提交“或”建议撤销“的决定之后,不能”反悔“;
3.处于”就绪“状态的参与者可能进入提交状态,或撤销状态;
4.协调者和参与者可能进入互相等待状态。

分布式数据库并发控制机制

概述

定义:与集中式并发控制从原理上一样
分布式并发控制的目的:为并发执行的全局事务,产生一个可串行化调度
局部调度:每个站点上的调度称为局部调度。
全局调度:数据库系统全局事务的调度。
全局调度可串行,则局部调度一定可串行;
但局部调度可串行,全局调度不一定可串行。

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

并发控制的加锁机制

集中式加锁法:网络中某一个站点被指定为主站点,用于存放整个分布式数据库的加锁表,负责整个系统事务的加锁。
主副本加锁法:每个数据对象指定一个主副本,不同数据对象的主副本放在不同站点上,算法:对主副本加锁;执行更新操作;开锁。
分布式加锁算法:锁的管理由各个站点调度器参与、协调,本地调度器负责本站数据加锁,算法:对全部副本加锁;执行更新操作;开锁。
1.加锁协议
遵守锁的相容性规则
遵守两段锁协议(Two Phase Locking–2PL)
持有X锁的事务,必须到结束事务才能开锁
读,锁一个;写,锁全部(ROWA协议)
2.死锁管理
全局死锁:分布式数据库中,涉及多个站点的死锁称为全局死锁。
在这里插入图片描述
全局等待图(GWFG)
√点A:拥有x、y的副本;T1:read(x),write(y)
√站点B:拥有y、z的副本;T2:read(y),write(z)
√站点C:拥有z的副本;T3:read(z),write(x)
在这里插入图片描述
→画出全局等待图,找到代价最小的事务,回滚
死锁的检测
A。集中式死锁检测法
指定某站点上的锁管理器作为全局死锁检测器
其余站点周期地向全局死锁检测器发送LWFG
全局死锁检测器产生GWFG,并检测有无回路
B。分布式死锁检测法
每个站点都有死锁检测器,负责检测本地可能的死锁。
每个站点按照一定规则,向相关站点发送潜在的死锁回路图。
死锁的解决
原则:撤消并恢复代价最小的事务。
√撤消并恢复年轻的事务
√撤消并恢复占用资源较少的事务。
√撤消并恢复具有最短运行时间的事务。

并发控制的时标技术

1.时标
时标:唯一识别一个事务,并用于对事务进行排序的标识符。
√时标的构成:“本地计数器值,站点标识符”
√时标的创建:一个事务T初始化时,事务管理器给该事务分配一个时标ts(Ti)
√时标排序(TO)规则:
已知Qi和Qj是分别属于事务Ti和Tj冲突操作。
若ts(Ti)<ts(Tj),则Qi在Qj之前执行。
2.基本时标法
规则
每个事务在本地站点开始时被赋以一个全局唯一的时标。
事务的每个读或写操作都有该事务的时标。
如果事务被重新启动,则被赋予新的时标。
在事务结束之前,不对数据库进行物理操作。
对于数据库每个数据对象x,记录对它进行读操作和写操作的最大时标RTM(x)和WTM(x)
基本时标法的执行过程
·设TS是对数据对象×进行读操作的当前时标。
·若TS<WTM(x),则,拒绝该操作;并使发出该操作的
事务用新时标重新启动;
·否则,执行读操作,且使:RTM(x)=max(RTM(x),TS)
3.保守时标法
特点:采用缓冲区缓冲“年轻”操作,以便尽量消除“拒绝操作”,避免事务重新启动。
规则
每个事务只在一个站点执行。不激活远程程序,只能向远程站点发出读/写操作请求。
每个站点必须按照时标时间的顺序发送读/写数据的请求。对于每个事务的更新操作,必须做到对同一数据对象先读后写。
每个站点都开辟一个缓冲区,用于保存其它站点发来的读/写操作。
保守时标法的执行过程
一旦某个站点上的各个缓冲区队列都不空,即,每个站点至少向该站
点发送了一个读和一个写,就停止接收,转入处理缓冲区队列上的操作。
站点i上处理缓冲区队列上的操作算法
重复执行如下步骤,直到没有满足执行条件的Rij和Wij,或者至少出现一个读/写队列为空,此时RT/WT=0:
令:RT=min(Rij),WT=min(Wij)
i:站点序号;j:读/写操作的序号
按下列原则处理缓冲区内各个站点读/写队列:
扫描读队列若各队列存在若干个Rij<WT,则,按时标顺序逐一执行Rij,并使Rij出队列
扫描写队列若各队列存在若干个Wij<RT,则,按时标顺序逐一执行Wij,并使Wi出队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值