分布式数据库系统典型实例机制.ppt

  1. 1、本文档共133页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分布式数据库系统典型实例机制.ppt

6.3.1 概述 在分布式数据库中,为了提高系统可用性,可靠性和存取效率,经常存放多个数据项的副本.当某一或者几个场地发生故障时可以通过读别的场地上的副本数据来保证正常数据的处理,同时副本可以减少通讯的花销和提高系统效率. 基于锁机制的多副本并发控制算法中,锁机制要考虑: 对各场地数据项加锁,而不是对全局数据项 对各副本的加锁方法 6.3.2 读-写全法 读一写全法:适合查询操作多的系统 特点 当事务对某一数据项加锁时,若加读锁,则只对其多副本中任何一个副本加锁.若加写锁,则要对该数据所有副本加锁 控制报文 对于读锁来说,只要向选中的副本所在场地发送控制报文申请锁,然后等待回答.而写锁则要向DDB中所有拥有被锁对象的副本场地发送报文申请锁.这样,写锁通讯费用较大 6.3.3 多数法 多数法:适合更新操作多的系统 特点 只有在获得多于副本数一半以上的锁(读,写),才可以获得对数据项的加锁 报文传送 对于写锁,向至少(n+1)/2个场地副本发加锁请求.如果收到至少(n+1)/2个场地的批准,向n个副本发送新值 读锁类似 6.3.4 主副本法 主副本法 特点 对某一数据项加锁时,只要对一个主副本加锁,就可以得到该数据项的锁。一般,主副本选择在用户提出锁某项数据最多的场地 优点 报文传送次数很少 缺点 并发度低 6.3.5 中心场地法 中心场地法 特点 在DDB中由一个专门的场地来管理加锁请求.对于读锁,由中心场地向一副本发报文,将数据传给锁申请地.对于写锁,锁申请地把数据发到中心场地,再由中心场地向所有数据副本发送数据项新值 缺点 很容易形成瓶颈.且中心场地瘫痪时系统将瘫痪 6.3.6 主副本令牌法 主副本令牌法 特点 读/写令牌在网络中不断传递.一场地只有拥有令牌,才能得到相应的锁 过程 1)始发场地向所有场地发送报文请求与令牌 2) 其他场地接收到报文后 a 没有该数据项写令牌, 或者有,但准备释放 b正在使用令牌 3)当所有场地回答a时,始发场地得到写令牌并命令其他场地释放所有该数据项令牌.否则,始发场地得不到令牌,处于等待 6.4 时间印方法 6.4.1 时间印模型 6.4.2 基本时间印方法 6.4.3 保守时间印方法 6.4.1 时间印模型 对每个事务赋予一个唯一的时间印,事务的执行等价于按时间印的先后次序串行执行 时间印 事务在某一站点激活时,有系统赋予的全系统唯一的能够识别事务激活的先后次序的一个标识 并发机制 只有当数据项x上由一年长的事务写入后,才允许另一年轻的事务对x进行读写.否则拒绝操作,并重新启动该事务.即一个事务只能读写在它之前的事务所写入的数据,而不能读写在它之后的事务所写入的数据.对年长事务读写年轻事务写入的数据,则要重新启动年长事务,赋予一个新的时间印,直至更年轻 方法 基本时间印方法,保守时间印方法 6.4.2 基本时间印方法 规则: 1) 每个事务在激活时得到系统赋予的时间印 2) 事务执行的每个读写操作都具有该事务的时间印 3) 对每个数据项x,记录了最大时间印的读操作和写操作,称为x的读时间印RTM(x)和写时间印WTM(x) 4) 令TS为对x的读操作时间印,如果TSWTM(x),则拒绝该操作并重启事务.否则执行读操作把x的读时间印改为max(RTM(x),TS) 5) 令TS为对x的写操作时间印,如果TSRTM(x)或TSWTM(x),则拒绝该操作并重启事务.否则执行写操作把WTM(x)改为TS 缺点: 事务重新启动次数较多 优点: 无死锁问题 6.4.3 保守时间印方法 特点 不会拒绝任何操作,因此不会重启事务 处理方法 出现冲突时,把年轻的操作缓冲起来,等待年老的操作执行完后再执行 规则 1)每个事务只在一个场地上执行,只能向远程进程发读写请求. 2)一个场地按时间印次序接受另一场地读写请求.(串行) 3)若一场地i从网络每个其他场地接受至少一个缓冲读/写操作,用以下方法处理: 对于到达本地的读操作R,如果有个写操作W被缓冲,且TS(R) TS(W),则R被送入等待队列,直到写操作全部执行才执行R 对于写操作W,如果本地有某个读操作被缓冲,且TS(W)TS(R) ,或者一个写W’被缓冲,且TS(W)TS(W’),则W进入等待队列,直到缓冲的操作执行完毕才执行W

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档