当前位置: 首页 > 专利查询>复旦大学专利>正文

一种改进的内存数据库封锁方法技术

技术编号:3998064 阅读:319 留言:0更新日期:2012-04-11 18:40
本发明专利技术属于内存数据库技术领域,具体为改进的内存数据库封锁方法。该方法利用内存数据库中事务短小,数据交集不大的特点,在单写多读封锁机制基础上,引入粗粒度意向锁和封锁粒度转换机制,在事务开始前检查意向锁以及数据交集,并且利用不同粒度的封锁,允许多个读事务与不冲突的单个写事务并行操作,加速了事务执行过程,减少读事务的等待时间,提高事务吞吐量。

【技术实现步骤摘要】

本专利技术属于计算机内存数据库
,具体涉及一种基于传统封锁方式的改进 的内存数据库封锁方法。
技术介绍
在数据库系统中,事务可以一个个地串行执行,即每个时刻只有一个事务运行,其 他事务必须等到这个事务结束之后方能运行。为了充分利用系统资源,发挥数据库共享资 源的特点,应该允许多个事务并行地执行。当多个用户并发地存取数据库时就会产生多个 事务同时存取同一个数据的情况。若对并发操作不加控制,就可能会存取和不正确的数据, 破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。对于内存数据库系统 而言,数据加锁开销与处理开销相当,而且由于内存的存取速度比磁盘块的多,事务的执行 时间相对磁盘数据库则大大缩短;相应的,锁的占有时间也就大大缩短,故细粒度锁的基本 优点与必要性也随之丧失。因此,在内存数据库中一般采用较大粒度锁,如元组级或关系 级,这无疑降低了并发机制的复杂度,减轻了系统负担,从而使系统总体性能提高。目前 在内存数据库系统中普遍采用的是“单写多读”并发控制策略,利用内存数据库事务执行时 间短的特点,通过牺牲一定并发读来提高事务执行效率。这种方式在应对大量并发的短小 事务时效率并不十分理想,本文通过引入粗粒度意向锁和事务自有锁粒度变换两种方式来 改进这种并发控制方式,提高内存数据库在应对高并发短小事务时的整体性能。
技术实现思路
本专利技术的目的在于提出,要解决的问题是,在传 统内存数据库封锁机制中,对于数据交集不大的短小事务之间的并发读支持过低,大量的 实际浪费在读事务等待写事务提交的过程中,降低了内存数据库的事务吞吐率。本专利技术提出的改进的内存数据库封锁方法,是利用粗粒度意向锁和锁粒度转换改 进传统的封锁方式,提高内存数据库的事务事项效率。本专利技术的基本内容如下A,允许事务在内存数据库上加两种粗粒度意向锁标记,一种是数据库级读意向锁 标记,表示事务对数据库中的关系表有读请求意向;另一种是数据库级写意向锁标记,表示 事务对数据库中的关系表有写请求意向;B,事务的封锁粒度根据数据库级意向锁标记自行转变,利用数据交集不重合的特 殊条件对不同的关系表加不同种类的锁标记;c,允许多个读事务与数据交集不重叠的单个写事务并行操作。本专利技术除了数据库级读写锁和表级读写锁两种粒度的锁,还引入另外一种粗粒度 意向锁——数据库级读写意向锁,该锁用于表示事务在数据库级别上的操作意向(读取或 者写入),可以作为其他事务操作数据库上锁之前的重要参考,事务可以根据需要在操作时 加不同类型的锁。在此基础上,为了进一步提高并发度,引入了锁粒度动态变换的机制,即数据库级锁和表级锁可以根据事务对关系共享程度的需求进行锁粒度的动态智能转换。因 为数据库级锁比表级锁开销小,因此当不需要较细的锁粒度时使用数据库级锁。如果一个 或者多个事务在访问数据库时被其他事务的锁阻塞,数据库级锁会被分解为表级锁,并且 再次尝试加锁。当不需要细粒度锁时,表级锁被转化为数据库级锁。过程可以由图1的流 程图来表示。以读事务为例,当事务需要读取某些数据记录时,系统会提前分析事务中涉及 到的数据表,首先对数据库请求数据库级读意向锁,然后检查数据库是否存在全局的写意 向锁,如果存在,则说明有写事务正在更新数据库的某一部分并且尚未结束,此时系统会检 查读事务相关的数据表是否被写事务加锁,如果写事务正在更新相关表,那么读事务不得 不等待写事务完成;如果相关表没有被写事务加锁,则读事务可以并发的上读锁读取数据。 写事务请求加锁的过程基本与此类似。区别是写事务之间是绝对互斥的。不存在两个写事 务同时向数据库写入的情况。附图说明图1是封锁步骤流程图。图2是与传统封锁机制的比较说明图(考察吞吐量和平均反应时间)。图3是与传统封锁机制的比较说明图(考察事务更新率和平均反应时间)。具体实施例方式参照图1的封锁步骤流程示意图,按照以下步骤操作1.读事务封锁过程如下8)分析事务中需要使用的关系表集合TS,可通过事务代码中涉及到的数据库名 和关系表名之间获得。9)在没有申请过数据库级读意向锁的情况,对于内存数据库加读意向锁标记。10)检查内存数据库上是否有数据库级写意向锁标记。11)若3)中检查到有数据库级写意向锁标记,则检查关系表集合TS中的关系表是 否有写锁标记。12)若4)中检查到TS中有关系表具有写锁标记,则本次事务操作被阻塞,等待其 他事务通知其恢复执行。13)若4)中没有检查到TS中有关系表具有写锁标记,则本次事务对TS中的关系 表加读锁标记,封锁过程完成。14)若3)中没有检查到有数据库级写意向锁标记,则本次事务对TS中的关系表加 读锁标记,封锁过程完成。2.写事务封锁过程如下1)分析事务中需要使用的关系表集合TS,可通过事务代码中涉及到的数据库名 和关系表名之间获得。2)检查内存数据库上是否有数据库级写意向锁标记3)若2)中检查到有数据库级写意向锁标记,则本次事务操作被阻塞,等待其他事 务通知其恢复执行。4)若2)中没有检查到有数据库级写意向锁标记,则检查本事务是否申请过数据库写意向锁。5)若4)中没有检查到本事务曾经申请过数据库写意向锁,则多数据库加写意向 锁标记O6)检查是否有数据库读意向锁。7)若6)检查到有数据库读意向锁标记,则检查TS中是否有关系表具有读标记。8)若7)中检查到有关系表具有读标记,则本次事务操作被阻塞,等待其他事务通 知其恢复执行。9)若7)中没有检查到相关表有读标记,则对TS中关系表加写锁标记,本次封锁完 成。10)若6)中没有检查到有数据库级读意向锁标记,则对TS中关系表加写锁标记, 本次封锁完成。3.解锁过程如下1)释放TS中关系表上的锁标记2)释放数据库上的意向锁标记3)通知其他事务开始竞争进入执行利用本方法进行事务封锁,可以很好的用于加速内存数据库事务执行和提高内存 数据库事务吞吐量。参照图2以及图3,在与传统的封锁机制比较之后,可以明显看出,针对 短小的内存数据库事务,改进后的算法可以提高内存数据库系统的整体执行效率,获得了 比较明显的良好效果。图2表明在事务之间数据交集不大的情况下,改进后的封锁协议在 不同的事务并发场合均优于单写多读协议,因为改进后的协议允许不重叠的读事务和写事 务并发执行,加快了系统的整体执行速度。图3中,在固定的事务并发度情况下,不同随着 更新事务所占比例的提升,单写多读协议中读事务需要等待的时间就越长,整体执行效率 就会降低,系统平均反应时间就会增加;利用改进的封锁协议,允许部分读事务和写事务并 行操作,减少了读事务的等待时间,提高了系统效率。权利要求,其特征在于a)允许事务在内存数据库上加两种粗粒度意向锁标记,一种是数据库级读意向锁标记,表示事务对数据库中的关系表有读请求意向;另一种是数据库级写意向锁标记,表示事务对数据库中的关系表有写请求意向;b)事务的封锁粒度根据数据库级意向锁标记自行转变,利用数据交集不重合的特殊条件对不同的关系表加不同种类的锁标记;c)允许多个读事务与数据交集不重叠的单个写事务并行操作。2.根据权利要求1所述的改进的内存数据库封锁方法,其特征在于读事务封锁过程 如下1)分析事务中需要使用的关系表集合TS,这通过事务代码中涉及到的数据库名和关 系表名之间获得;2)在没有申请过数本文档来自技高网...

【技术保护点】
一种改进的内存数据库封锁方法,其特征在于:a)允许事务在内存数据库上加两种粗粒度意向锁标记,一种是数据库级读意向锁标记,表示事务对数据库中的关系表有读请求意向;另一种是数据库级写意向锁标记,表示事务对数据库中的关系表有写请求意向;b)事务的封锁粒度根据数据库级意向锁标记自行转变,利用数据交集不重合的特殊条件对不同的关系表加不同种类的锁标记;c)允许多个读事务与数据交集不重叠的单个写事务并行操作。

【技术特征摘要】

【专利技术属性】
技术研发人员:金城周游弋薛向阳
申请(专利权)人:复旦大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1