面向对象数据库死锁检测方法研究

面向对象数据库死锁检测方法研究

ID:34393465

大小:197.46 KB

页数:6页

时间:2019-03-05

面向对象数据库死锁检测方法研究_第1页
面向对象数据库死锁检测方法研究_第2页
面向对象数据库死锁检测方法研究_第3页
面向对象数据库死锁检测方法研究_第4页
面向对象数据库死锁检测方法研究_第5页
资源描述:

《面向对象数据库死锁检测方法研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7卷第12期软件学报Vol.7,No.121996年12月JOURNALOFSOFTWAREDec.1996X面向对象数据库死锁检测方法研究郝朝辉麦中凡(北京航空航天大学计算机系北京100083)摘要本文根据面向对象数据库系统中嵌套事务的新的执行特性,提出了一种检测死锁的算法——扩充的边追踪算法,并在一个面向对象数据库原型系统MIDS中予以实现.关键词数据库,面向对象数据库,分布式数据库,事务,并发控制.传统的原子事务(AtomicTransaction)模型可以提供对数据库数据访问的并发控制,即各事务可以按照一定的封锁、时间戳(TimeStam

2、p)、或乐观方法达到可串行化执行的要[1]求.随着用户需求和数据库技术的不断发展,作为对传统事务模型的扩展,嵌套事务模型被越来越多的数据库系统,尤其是面向对象的数据库系统所采用.嵌套事务(NestedTransaction)模型如果一个事务可包含若干个子事务,同时每个子事务又可能由一定数目的子事务组成,[2]则这种事务结构就是嵌套事务.不包含在其它事务中的事务称为顶层事务(Top2levelTransaction).有子事务的事务称为父事务,子事务是其孩子.事务的子嗣(祖先)关系是事务的孩子(父亲)关系的自反传递闭包.非自反的子孙(祖先),称其为事

3、务的后辈(前辈).与原子事务相比,嵌套事务不仅可以提高事务内部的并行性,而且在事务内部也能进行[3]恢复控制,从而可大大提高系统的模块化水平,这正符合面向对象数据库系统的要求.[4]按照ODMG-93标准,嵌套事务有以下不同于传统事务的执行特性:子事务的提交与流产不影响父事务的状态.父事务的流产将导致其子事务全部流产.子事务通过abort_to_top_level方法也可以造成全部嵌套事务的流产.子事务可以访问父事务拥有的数据,而不论其是否已经提交.由于以上要求,嵌套事务模型下的并发控制也较传统事务复杂得多.以封锁方法为例,集中式嵌套事务的封锁规则

4、为一个扩充的两阶段锁协议(2PL)——嵌套事务两阶段锁协议(N2PL).若只考虑读、写两种锁类型,则N2PL协议可概述如下:事务仅当其持有某对象的读锁或写锁时,才能对它进行读操作.事务仅当其持有其对象的写锁时,才能对它进行写操作.如果某对象的写锁持有者都是事务的前辈事务,则事务可以持有该对象的读锁.如果对象的读、写锁持有者都是事务的前辈事务,则事务可以持有该X作者郝朝辉,1969年生,硕士,主要研究领域为系统软件,面向对象数据库.麦中凡,1935年生,教授,主要研究领域为软件工程,数据库,程序设计语言,智能工具.本文通讯联系人:郝朝辉,北京1000

5、36,北京162信箱中国计算机报市场研究部本文1995212213收到修改稿©1994-2009ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net12期郝朝辉等:面向对象数据库死锁检测方法研究—723—对象的写锁.当事务提交时,其父事务将持有提交事务的全部锁,如果父事务已经持有某些锁,则它应持有具有更高访问权限的锁.当事务流产时,它将丢弃所持有的全部锁.对于分布式数据库系统来说,除上述协议外,事务在提交时还应遵从分布式事务提交[2]协

6、议.由于事务在存取数据之前必须先封锁对象,而对象又是一种不可预先抢占的耐用性资[1]源,所以若在资源分配中采用封锁的策略,就有发生死锁的可能.正因如此,死锁处理是每个数据库系统都不能回避的问题.本文下面的章节将对死锁问题进行具体的讨论.第1节讨论传统死锁处理方法,第2节给出了一个分布式数据库嵌套事务死锁检测算法——扩展的边追踪算法(extendededge2chasingalgorithm).接着,我们给出一个使用该算法的实例.1死锁关于死锁,在操作系统中已做过充分研究.一般来说,数据库系统中发生死锁的必要条件是等待条件,事务已经持有分配给它的资源

7、,又去申请并等待另外的资源;非剥夺条件,除非事务释放其占有的资源,否则不强制夺走它所持有的资源;循环等待条件,事务处在互相等待的循环链中.解决死锁的方法可以分为以下3类:即死锁的预防、避免、死锁检测及恢复.为预防死锁,只需使存在死锁的必要条件之一不成立即可.文献[1,5]针对传统事务模型提出了比较详尽的解决方法.但是,对于OODBMS来说,由于事务模型和对象模型的复杂化,其中的大部分方法已不再适用,所以OODBMS采取的主要方法是通过准确预测(或限定)事务要求的资源集合来达到预防死锁的目的,这种方法要求事务在开始其操作前必须得到可能会用到的所有资源

8、,同时其它事务又不会请求对这些资源的使用.由于事务可能会用到相当大的数据资源,因此,显然这种作法会极大地降低系统的并发程度

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。