[发明专利]一种数据库中动态多粒度锁的事务冲突判决方法无效
申请号: | 200910305845.0 | 申请日: | 2009-08-20 |
公开(公告)号: | CN101667211A | 公开(公告)日: | 2010-03-10 |
发明(设计)人: | 王非;卢正新;黄本雄;王芙蓉;董晓辉 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市德权律师事务所 | 代理人: | 周发军 |
地址: | 430074湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 动态 粒度 事务 冲突 判决 方法 | ||
技术领域
本发明涉及数据库技术领域,尤其涉及到数据库并发控制过程中对事务的冲突程度进行统计和判决。
背景技术
在基于锁的事务并发控制技术中,数据库经常采用多粒度加锁机制,可以使用库级锁、表级锁、行级锁等不同粒度的锁。其中,粗粒度的表级锁加锁开销小,但是并发能力差,容易造成事务锁冲突;细粒度的行级锁并发能力强,但行级锁的数量较多,加行级锁的开销大。磁盘数据库实现了很多不同的存储引擎,不同的存储引擎支持不同粒度的锁,表级锁的加锁效率相对较高,行级锁并发能力相对较高,用户可以根据实际应用的并发特点,选择最合适的存储引擎,从而达到最好的效率。这种锁粒度的选择是在数据库存储引擎的选择做出的,一旦选择了一种存储引擎,就不能动态的改变了动态多粒度锁机制正是基于这种思想设计的。这种静态的使用多粒度锁的机制不能有效解决具有高突发性的事务流模型。
发明内容
本发明所要解决的技术问题是提供一种考虑锁的相容特性和事务操作开销的事务冲突判决方法。
为解决上述技术问题,本发明根据事务冲突级别,采用锁粒度细化检测算法动态决定在表上是使用粗粒度的表级锁还是细粒度的行级锁;所述事务冲突级别由如下公式计算:TC=a×Nx+b×Ns,其中,TC为事务的冲突级别,Ns为不相容共享锁的数量,Nx是锁等待队列中排他锁的数量,a、b为事务冲突权重系数;
所述Ns的统计具体步骤如下:
a.系统初始化时,初始化每个表上的共享锁计数器Ns为0;
b.当表上一个共享锁加锁请求到达时,检查表锁控制块上是否有加锁请求正在等待;
c.如果有加锁请求等待,检查等待队列中的最后一个加锁请求是否是共享锁,如果是共享锁,Ns保持不变,如果不是共享锁,Ns自增1;
d.如果没有加锁请求等待,检查当前授予锁队列是否还有其它共享锁,如果是,Ns保持不变,如果不是Ns自增1;
e.当一个共享锁的解锁请求到达时,检查锁的授予队列上还有没有其他共享锁存在,如果存在,Ns保持不变,如果不存在,Ns自减1;
所述Nx根据应用,可以分为插入、更新、删除类型互斥锁,可以在表级锁上设置三个计数器Nins、Nupd、Ndel,分别表示插入、更新、删除类型互斥锁的数量,那么Nx=Nins+Nupd+Ndel,其统计具体步骤如下:系统初始化时,初始化Nins、Nupd、Ndel为0;当有互斥锁加锁请求到来时,如果是插入数据型的互斥锁,则Nins自增1,如果是更新数据型的互斥锁,则Nupd自增1,如果是删除数据型的互斥锁,则Ndel自增1;当有互斥锁解锁请求到来时,如果是插入数据型的互斥锁,则Nins自减1,如果是更新数据型的互斥锁,则Nupd自减1,如果是删除数据型的互斥锁,则Ndel自减1;
所述系数b为1,所述系数a是是动态变化的,是与锁等待队列中互斥锁的事务类型和事务数量相关的;a=Ains×Pins+Aupd×Pupd+Adel×Pdel;在以上公式中,Ains、Aupd、Adel分别是插入、更新、删除类型事务的复杂度参数,Ains、Aupd、Adel取值2~10。Pins、Pupd、Pdel分别是互斥锁中插入、更新、删除类型事务的比例,Pins=Nins/(Nins+Nupd+Ndel),Pupd=Nupd/(Nins+Nupd+Ndel),Pdel=Ndel/(Nins+Nupd+Ndel);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910305845.0/2.html,转载请声明来源钻瓜专利网。