发明名称 一种自适应乐观并发控制方法
摘要 本发明公开了一种自适应乐观并发控制方法,主要应用在基于主存的多用户并发环境中,该方法包括由乐观并发控制转换为悲观并发控制、由悲观并发控制转换为乐观并发控制两种并发控制转换方法;当系统处在冲突率高的环境中,并发控制策略由乐观并发控制转换为悲观并发控制;当系统处在冲突率低的环境中,并发控制策略由悲观并发控制转换为乐观并发控制,依照本发明的自适应乐观并发控制方法,与单纯的乐观并发控制或悲观并发控制方法相比,避免了在冲突率较高的环境下导致并发性能下降的缺点或在冲突率较低时加锁的开销,可大大提高系统的并发性能。
申请公布号 CN101556597A 申请公布日期 2009.10.14
申请号 CN200910025686.9 申请日期 2009.03.06
申请人 南京航空航天大学 发明人 秦小麟;孙杰;戴华
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 魏学成
主权项 1、一种自适应乐观并发控制方法,其特征在于该方法包括由乐观并发控制转换为悲观并发控制、由悲观并发控制转换为乐观并发控制两种并发控制转换方法;系统默认执行的是乐观并发控制方法,当系统处在冲突率高的环境中,并发控制策略由乐观并发控制转换为悲观并发控制;当系统处在冲突率低的环境中,并发控制策略又由悲观并发控制转换为乐观并发控制,具体步骤如下:(1)乐观并发控制转换为悲观并发控制方法,包括如下步骤:第一步,为系统中的每一个事务Tj分配一个进程;第二步,对共享验证区里的事务结点进行初始化;第三步,进入读阶段,在自己的私有空间内执行事务;第四步,对共享验证区中的事务结点记录时间戳并添加读写集;第五步,申请信号量对共享验证区加锁,当加锁成功则继续下一步骤;否则,进入睡眠状态,等待其他进程唤醒;第六步,对于事务Tj的冲突范围集中的每一个事务Ti,执行第七步至第十一步,当事务Tj的冲突范围集中的每一个事务Ti都执行完毕后转到第十二步;第七步,判断事务Tj的写集与事务Tj的冲突范围集中的每一个事务Ti的写集的交集是否为空,当结果为是,则直接进入第十四步;当结果为否则继续下一步骤;第八步,判断事务Tj的冲突范围集中的事务Ti的完成时间戳是否大于事务Tj的验证时间戳,当结果为是,则直接进入第十四步;当结果为否则继续下一步骤;第九步,将事务Tj的读集与事务Tj的冲突范围集中的事务Ti的写集的交集赋给集合β;第十步,对于集合β中的每个元素α,执行第十一步;当集合β中的每个元素α都遍历完毕,则进入第十二步;第十一步,判断事务Tj在事务Tj的冲突范围集中的事务Ti结束之前是否对集合β中的每个元素α执行了读写操作,当结果为是,则进入第十四步,当结果为否则返回第十步;第十二步,释放信号量,完成对共享验证区的互斥访问;第十三步,进入写阶段并提交事务,成功退出;第十四步,累加系统的冲突量;第十五步,判断累计冲突量是否小于系统的阈值,当结果为是,直接进入第十八步;当结果为否,则进入下一步;第十六步,判断当前的并发策略是否是乐观并发控制方法,当结果为是,则将并发策略转换为悲观并发控制方法;当结果为否,则进入下一步;第十七步,将累计冲突量设为系统阈值;第十八步,释放信号量,返回第二步;(2)悲观并发控制转换为乐观并发控制方法,包括如下步骤:A、使CPU睡眠t秒,0<t<3;B、申请信号量对共享验证区加锁,当加锁成功继续下一步骤;当加锁失败则进入睡眠状态,等待其他进程唤醒;C、依照系统提交速度,减少系统的累计冲突量;D、判断累计冲突量是否大于0,当结果为是,则返回A步骤;当结果为否,则进入下一步骤;E、判断当前的并发策略是否是乐观并发控制,当结果为是,直接进入G步;当结果为否,则将并发策略转换为乐观并发控制,进入下一步骤;F、将累计冲突量设为0;G、释放信号量;H、返回A步骤。
地址 210016江苏省南京市白下区御道街29号