分布式数据库分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.3分布式数据库系统中的 死锁处理
• • • • • 1.全局死锁与等待图 1)活锁,死锁和全局死锁 例,相互等待引起的全局死锁 2)等待图 例,等待图
2.死锁的预防方法
• 非占先权(排队在先者可能失去优先)法 • 占先权(排队在先者绝对优先)法
3.死锁的检测和解决方法
• 1)死锁检测和解决的一般方法
• 常用的算法有: • 简单的分布式封锁方法:类似于集中式,数据更新时, 要将同一数据的全部副本封锁,然后对其进行更新,更 新完成后解除全部上述封锁. • 主站点封锁法:主站点封锁法模拟集中式,选定一个站 点定义为“主站点”,负责系统全部封锁管理,所有站 点都有向这个主站点提出封锁和解锁请求,所有封锁 和解锁信息都被传送到那个主站点管理和保存,然后 由主站点去处理封锁事宜. • 主副本封锁法:这个方法不指定主站点,而对每个数据 项指定一个主副本,不同数据项的主副本被放在不同 的站点上 • 快照方法:它是类似于视图一种导出关系,但又与视图 不同.它是数据的暂时凝聚,是一种存储方式.
基本时标法的执行过程: • 设READ_TS是对数据X进行读操作的时标,如 果READ_TS<WTM(X),则拒绝该操作,并使发 出该操作的事务用新时标重新启动;否则执行 该操作,且把RTM(X)置为 max(rtm(x),read_ts) • 设WRITE_TS是对数据进行写操作,如果 WRITE_TS<RTM(X)或TS<WTM(X),则拒绝 这个写操作,并使发出操作的事务用新时标重 新启动.否则执行这个写操作,并把WTM(X)置 max(wtm(x),write_ts)
2.两阶段封锁协议
• 1)两阶段封锁协议保证调度的可串行化 • 第一阶段是扩张或称成长阶段.在这个阶 段中,事务只能获得新的数据项锁,而不能 释放任何已持有的锁. • 第二阶段是收缩或称衰退阶段.在这个阶 段中,事务只能释放已经持有的锁.
遵守两阶段封锁协议的两 个事务
• • • • • • • • • T1 Read_lock(y); Read_item(y); Write_lock(x); Unlock(y); Read_item(x); X:=x+y Write_item(x); Unlock(x); • • • • • • • • • T2 Read_lock(x); Read_item(x); Write_lock(y); Unlock(x); Read_item(y); X:=x+y Write_item(y); Unlock(y);
3.保守时标法
1)保守时标法的规则: • 每个事务只在一个站点执行,它不激活远程的程序,仅 仅能向远程站发出读或写请求 • 每个站点必须按时标时间的顺序发送/写数据的请求, 在传输中也不会改变这个顺序,以保证各站点能够按时 标顺序接收来自不同站点的全部读/写请求. • 每个站点都为其他各个站点发来的读/定操作开辟一个 缓冲区,把接收到的读/写操作分别保存在相应的缓冲 区.
5.2分布式数据库系统并发 控制的封锁技术
• 1.基于封锁的并发控制方法概述: • 基本思想是事务访问数据项前要对该数据项封锁,如 果已被其他事务锁定,就要等等,直到那个事务释放该 锁为止. • 1)锁的粒度,类型和操作 • A.锁的粒度是指锁定数据项的范围 • 粒度会影响并发控制和恢复的性能 • 首先,数据项尺寸越大,允许的并发程度越低 • 另外,数据项尺寸越小,数据库中项的数理越多
在乐观方法中,改变了事务执行的三 个阶段的顺序: • 读/计算阶段 • 验证阶段 • 写阶段
第五章 分布式数据库中 的并发控制
5.1并发控制的概念和理论
• 1.并发控制的概念
• 在通常情况下数据库中总是有若干个事务在运 行,这些事务可能并发地存取相同的数据,称 为事务的并发操作。 • 当数据库中有多个事务并发执行时,系统必须 对并发事务之间的相互作用加以控制,这是通 过称为并发控制机制来实现的。
2)基本的,保守的,严格的,严 酷的两阶段封锁协议
• 保守2PL和严格2PL:对于前者,事务必须 在开始之前封锁它所需要的所有数据项, 因此,一旦事务开始就处在收缩阶段;而对 于后者,直到事务结束后才开始解锁,因此 事务一直处于扩张阶段,直到结束. • 锁的使用会引起:死锁和饥饿
3.两阶段封锁协议的实现方法
• 2)全局唯一时标的形成和调整
• 如果全局唯一时标由本地计数器值和站 点标识符构成,有两个站点,在每一站点设 置一计数器,每当发生一个事务,计数器值 加1,这解决了同一站点内事务的次序问 题.
2.基本时标法
基本时标法使用下述规则: • 每个事务在本站点开始时赋予一个全局唯一时标; • 在事务结束之前,不对数据库进行物理更新; • 事务的每个读操作或写操作都具有该事务的时标; • 对于数据库中的每个数据X,记录对其进行操作和写操 作的最大时标,分别记为RTM(X)和WTM(X); • 如果事务被重新启动,则被赋予新的时标.
2)保守时标法的执行步骤 • 假定某个站点K上,其各个缓冲区队列都 已不空,即每个站点都已向它至少发送了 一个读和一个写操作,就停止接收,处理在 缓冲区队列中的操作.
3)存在问题和解决办法: • 如果一个站点从不向某个别的站点发送操作的话,那么 执行中的假定就不符合,操作就无法执行. • 该方法要求网络上所有站点都连通,这在大型系统中难 以做到.为避免不必要的通信,可对无实际读/写请求的 每个站点,发送一个时标为很大的空操作. • 该方法过分保守,一律按时标顺序执行R和W,其中 包括了不会冲突的操作,也被缓冲起来同等处理.
• • • • • •
B.锁的类型 共享锁S,排他锁X C.锁的操作 READ_LOCK读封锁 WRITE_LOCK写封锁 UNLOCK解锁
2).封锁准则和锁的转换
• A.封锁准则
• 事务T在执行任何READ_ITEM操作之前,必须先执行 READ_LOCK操作或WRITE_LOCK操作 • 事务T在执行任何WRITE_ITEM操作之前,必须先执行 WRITE_LOCK操作 • 如果事务在执行READ_LOCK操作,数据项必须没有加锁或者已经 加了读锁,否则事务的这个操作不能执行 • 如果事务执行WRITE_LOCKRK操作,数据项必须没有加锁,否则 事务的这个操作不能执行 • 事务执行WRITE_LOCKR操作和WRITE_ITEM操作之后,必须 执行UNLOCK操作 • 如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不 能再执行READ_LOCK操作. • 如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不 能再执行WRITE_LOCK操作 • 如果事务已经没有持有数据项上的一个读锁或者一个写锁,那么 它不能再执行unLOCK操作
4.分布式事务的可串行化调 度
• • • • • • 1)使用优先图判别可串行化调度 算法5.1 2)分布式数据库中可串行化理论的扩展 例5.2 3)单副本可串行化 4)读一个/写全部副本控制协议
5.并发控制机制的常用方法 及其分类
• 1)使用协议或规则保证调度是可串行化 的(如2PL) • 2)并发控制机制常用的方法及其分类: • 封锁方法 • 时标排序的方法 • 混合的方法
B.锁的转换
• 在特定条件下,一个已经在数据项上持有 锁的事务,允许某种封锁状态转换成另外 一种封锁状态. • 如,一个事务先执行了READ_LOCK操作, 然后它可以通过执行WRITE_LOCK操 作来升级该锁.
3)基本封锁算法
• 分布式比集中式更为复杂:数据的分布导 致执行的分布,封锁消息将在整个网络上 传输,其通信代价相当大;对多副本的数据, 要实现同步更新,原则上就要锁定所有副 本.
2.事务可串行化理论的基本 概念
• 若干个事务并发执行的结果与按希望的 顺序执行的结果相同时,称诸事务是可 串行的 • 1)分布式事务的一个调度 • 2)串行调度 • 3)可串行化调度
3.分布式事务的可串行化理论
• • • • • • • • 1)事务 2)冲突操作 3)并发事务的一个调度 4)串行调度 5)一致性调度 6)两个调度等价 7)可串行化调度 例5.1
• 1)集中式两阶段锁协议的实现方法 • 2)主副本两阶段锁协议的实现方法 • 3)分布式两阶段锁协议的实现方法
4.多粒度封锁与意向锁
• 1)多粒度封锁 • 2)意向锁 • 是如果对一个节点加意向锁,则说明该节 点的下层节点正在被封锁;对任一节点封 锁的,必须先对它的上层节加意向锁. • 三种类型的意向锁:意向共享锁,意向排他 锁,共享意向排他锁
• 检测通过对全局等待图中回路的形成进 行研究来实现的.如果系统处于死锁状态, 就必须撤销一些引起死锁的事务.
• • • •
2)分布式死锁检测和解决方法 集中式 层次式 分布式:A由于每一站接收从其他站点传来的可 能的死锁回路,因此向自己的局部WFG增加一 些边. • B在站点的LWFG中,被增加的用于表示 本地事务正在等待其他站点事务的边,同用于 表示远程事务正在等待本站点事务的边相连接, 该节点称为外部节点.
2.采用验证锁的多版本两阶 段封锁
• 在这种封锁模式中,每个数据项都有三种 锁方式:读、写和验证 • 多版本2PL的思想是:当只有一个单独 的事务T持有项X上的写锁时,允许其他 事务T‘读该项X。这一点是通过给予每个 项X两个版本实现的。
5.6分布式数据库系统并发 控制的落乐观方法
• 基本思想:对于冲突操作不像悲观方法那样采取挂起 或拒绝的方法,而是让一个事务执行直到完成。 • 乐观方法基于如下假设:冲突的事务是少数(例如在 查询为主的系统中只占5%还少),大多数事务是可以 不受于扰地执行完毕。因此在事务执行过程中,事务 都是先对欲操作的数据项的本地局部副本进行操作, 执行完毕后再进行检验。当不曾发生冲突时,就把该 本地局部副本全局化;若发生过冲突,则回退该事务 并作为新事务而重新启动。
• 分布式并发控主要是解决多个分布式事 务对数据并发执行的正确性
• 另外,在分布式数据库中,允许数据被 复制在多个站点上,当需要对数据执行 更新操作时,也必须同时正确地更新它 的所有副本。
• 1).丢失更新问题
• 对某个数据项处理上的先后会造成结果 的不正确。 • 2).不一致分析问题 • 3).依赖于未提交更新的问题
5.5分布式数据库系统并发 控制的多版本技术
• 1.基于时间戳排序的多版本技术 为了保证可串行性,可采用以下规则: • 如果事务T发布一个WRITE-ITEM(X)操作,并且X的版本I具有 所有版本中最高的WRITE-TS(XI),同时WRITE-TS(XI) ≤TS(T)且READ-TS( XI)>TS(S),那么撤销并回滚T; 否则创建X的一个新版本XJ,并且令READ-TS(XJ)=WRITETS(XJ)=TS(T) • 如果事务T发布一个READ-ITEM(X)操作,并且X的版本I具有 所有版本中最高的WRITE-TS(XI),那么,把XI的值返回给 事务T,并且将READ-TS( XI)的值置为TS(T)和当前 READ-TS( XI)中较大的一个
Biblioteka Baidu
5.4分布式数据库系统并发 控制的时标技术
• 1.基于时标的并发控制方法 • 1)基本概念 • 与基于封锁的算法不同,基于时标的并发控制 算法并不试图通过互斥来支持串行性,而是选 择一个事先的串行次序执行事务. • 时标是用来唯一地识别每个事务并允许排序的 标识符. • <本地计数器值,站点标识符>