- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
封锁对象的大小称为封锁粒度(granularity) 封锁对象: 数据库的逻辑单位,如属性、元组、关系、索引、数据库等; 数据库的物理单位,如页、块等; 封锁粒度对并发度和资源消耗的影响: 若封锁粒度小,则系统并发度高,资源消耗多; 若封锁粒度大,则系统并发度低,资源消耗小; 不同事务可能需要不同的封锁粒度,系统允许同时为不同的事务提供不同的封锁粒度选择。 意向锁(intention lock) 如果对一个结点加意向锁,则意味着要对该结点的所有子孙结点显式加锁; 在一个结点显式加锁前,该结点的所有祖先结点都应加上意向锁。 意向锁是放置在资源层次结构的一个级别上的锁,以保护较低级别资源上的共享或排它锁。 意向锁的含义是如果对一个结点加意向锁, 则说明该结点的下层结点正在被加锁; 对任一结点加锁时,必须先对它的 上层结点加意向锁。 引进意向锁是为了提高封锁子系统的 效率。该封锁子系统支持多种封锁粒度。 原因是:在多粒度封锁方法中一个数据 对象可能以两种方式加锁 ― 显式封锁 和隐式封锁。 意向锁类型 意向共享锁(IS锁):如果一个结点加IS锁,那么将在该结点的子孙结点进行显式封锁,加S锁 意向排它锁(IX锁):如果一个结点加IX锁,那么表示将在该结点的子孙结点进行显式封锁,可以加排它锁和共享锁 共享意向排它锁(SIX锁):若一个结点加SIX锁,那么将对该结点的子结点显式地加共享锁,对更低层的结点显式地加排它锁 意向锁的相容性 锁的类型 共享锁(S锁):如果事务Ti申请到数据项Q 的共享锁,则Ti可以读数据项Q,但不能写Q。 排它锁(X锁):如果事务Ti申请到数据项Q 的排它锁,则Ti可以读数据项Q,也可以写Q。 锁 死锁(一) 死锁场景示例 两个事务都在等待并且只有对方释放锁后才能继续执行 事务T 事务U 操作 锁 操作 锁 a.deposit(100); 给A加锁 b.deposit(200) 给B加写锁 b.withdraw(100) 等待事务U a.withdraw(200); 等待事务T 在B上的锁 在A上的锁 锁 死锁(二) 定义 死锁是一种状态,在该状态下一组事务中的每一个事务都在等待其它事务释放某个锁。 等待图 表示事务之间的等待关系。 B A 等待 持有 持有 T U U T 等待 锁 预防死锁 每个事务在开始运行时锁住它要访问的所有对象 - 一个简单的原子操作 - 不必要的资源访问限制 - 无法预计将要访问的对象 预定次序加锁 - 过早加锁 - 减少并发度 更新锁 避免死锁 在数据项上加更新锁的事务可以读该数据项,但该锁与加在同一数据项上的更新相冲突。 锁 死锁检测 维护等待图 检测等待图中是否存在环路 若存在环路,则选择放弃一个事务 锁超时:解除死锁最常用的方法之一 每个锁都有一个时间期限 超过时间期限的锁成为可剥夺锁 若存在等待可剥夺锁保护的对象,则对象解锁。 第5章 事务和并发控制 事务 锁 乐观并发控制 时间戳排序 并发控制方法的比较 小结 乐观并发控制 锁机制的缺点 维护开销大 会引起死锁 并发度低 乐观策略 基于事实:在大多数应用中,两个客户事务访问同一个对象的可能性很低。 方法 - 访问对象时不作检查操作 - 事务提交时检测冲突 - 若存在冲突,则放弃一些事务 乐观并发控制 事务的三个阶段 工作阶段 - 每个事务拥有所修改对象的临时版本 - 每个事务维护访问对象的两个集合:读集合和写集合 验证阶段 - 在收到closeTransaction请求,判断是否与其它事务存在冲突。 更新阶段 - 提交通过验证的事务 乐观并发控制 事务的验证 事务号 - 每个事务在进入验证阶段前被赋予一个事务号 - 事务号是整数,并按升序分配 - 事务按事务号顺序进入验证阶段 - 事务按事务号提交 冲突规则 - 事务Tv的验证测试 - Ti和Tv之间存在冲突 - 事务Tv对事务Ti而言是可串行化的 验证和更新阶段很短,每次只允许一个事务处于验证和更新阶段。 乐观并发控制 Tv Ti 规则 write read 1. Ti不能读取Tv写的对象 read write 2. Tv不能读取Ti写的对象 write write 3. Ti不能写Tv写的对象, 并且Tv不能写Ti写的对象 任何两个事务都不会在更新阶段重叠时,规则3自动满足。 整个验证和更新阶段被实现成一个临界区,使得每次只有一个客户执行。 乐观并发控制 向后验证 1.检查它的读集是否和其它较早重叠事务的写集是否重叠---要做,规则2 2.检查它的读集是否和其它较早
您可能关注的文档
最近下载
- 中华民族共同体概论课件第八讲共奉中国与中华民族聚力发展.pptx VIP
- 一种碱性磷酸酶标记抗体或抗原的方法.pdf VIP
- 2024-2025部编人教版小学语文1一年级上册(全册)优秀课件.ppt
- 手术室PDCA——提高急诊手术器械物品准备的完善率.pptx VIP
- 宠物行业宠物智能喂食器研发方案.doc VIP
- 老年人徒手肌力评定健康促进课件.pptx VIP
- TPM管理培训课件.pptx VIP
- 中华民族共同体概论大讲堂课件第七讲华夷一体与中华民族空前繁盛(隋唐五代时期).pdf VIP
- 灰库系统钢结构加固施工方案.docx VIP
- 2025至2030中国中医馆行业市场发展分析及前景趋势与投资机会报告.docx
文档评论(0)