面向对象数据库事务管理技术传统数据库事务管理特点及不足传统数据库事务管理由两部分组成:并发控制和恢复
通常用锁协议实现并发控制,用日志协议实现恢复
在工程设计等应用领域需要长事务和协作事务
但事务原子性使得若长事务不能完成,则所有已做的工作均要放弃;而串行性则使得若长事务不结束,其他事务必须等待,造成传统并发控制方法效率极低
OODBS事务管理技术特点OODBS事务管理子系统如图1所示
其中,锁管理器管理锁表,存放单个活动事务管理锁和等待锁
存储子系统与锁管理器实施对象上锁操作,事务结束时释放此锁
死锁管理器检测和解除死锁
系统采用时间溢出技术,即每个申请均有一时间限制,时间溢出则死锁管理器将事务放弃
日志管理记录对象修改日志
相比传统RDBS,OODBS加锁技术的特点有:加锁逻辑单位是对象而不是类;给一个类对象加锁比给一个关系对象加锁需更多信息;当一个类实例被加锁时,其超类也被加锁
数据库中被加锁项大小称为粒度
采用粗粒度锁机制时并发程序开锁代价低,但系统并发行差;采用细粒度锁机制则保证高度并发性,但系统开锁代价大
OODB采用粗粒度加锁机制同样能达到很高的并行性,加锁的一般是对象,但是如果某一事务要访问同一个类的大多数实例,则对整个类加锁,既保证可靠性,又降低系统开锁代价
OODBS恢复机制RDBS支持软故障和硬故障恢复
OODBS采用来自软件故障和用户激活事务夭折的事务恢复,不采用来自磁盘故障的恢复
OODBS采用UNDO日志(更新的对象页事务结束时存入磁盘)
恢复内容主要有以下两种:(1)多媒体日志恢复
通常OODBS把多媒体数据和其描述部分分开,描述部分通过对象标识符引用相应多媒体数据
存储子系统管理一个能动态变化的空闲块链表,里面存储多媒体数据,系统把它作为多媒体数据日志
如果创建多媒体数据事务夭折,则只需置空描述部分引用并将己分配给多媒体数据的空闲块链重新复位
同样如果删除多媒体数据事务夭折,则描述部分根据日志可恢复到原来状态
(2)索引页日志恢复
方法有两种:①分裂索引页的插入操作
系统把当前索引页的一半表项分给新页,除了拷贝到新页的表项外,其他表项都记录在日志中
发生故障时,去掉整个新页即可
②合并索引页的删除操作
系统把当前索引页的表项拷贝到新页,除了从当前页删除的表项外,其他表项都记录在日志中
发生故障时,重新使用当前页即可
虚拟事务OODBS支持两类事务:常规事务和虚拟事务
前者提交时,所有更新结果都永久地记录到数据库中;它夭折时,所有修改相当于没做
后者总是夭折的,即不论此事务以什么方式结束,对对象的改动不会记录到数据库中,用户能通过此类事务对数据库进行复杂变化并观察结果,不必担心不一致性
虚拟事务对象采用两个副本:影子副本(原始对象,不被更新)和当前副本(被更新对象)
长事务管理传统事务模式处理长事务时存在冲突事务间长期等待和系统故障时数据库更新全部撤销两个缺点
OODB中一个长事务可看作一些短事务集合
一个短事务看作并发控制和恢复的基本单位,这样用户能减少锁粒度(把长事务锁变成短事务锁),实现不同长事务并发操作和长事务部分撤销
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。