[发明专利]一种避免智能网系统中数据库死锁的方法和装置有效
申请号: | 201010210993.7 | 申请日: | 2010-06-28 |
公开(公告)号: | CN101894142A | 公开(公告)日: | 2010-11-24 |
发明(设计)人: | 陈西 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 蒋雅洁;王黎延 |
地址: | 518057 广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 避免 智能 系统 数据库 死锁 方法 装置 | ||
技术领域
本发明涉及通信领域中的智能网系统,尤其涉及一种避免智能网系统中数据库死锁的方法和装置。
背景技术
智能网已是电信系统发展很成熟的增值业务实现方案,可以根据实际需要快速、灵活、方便且经济地生成各种业务,为运营商带来良好的社会效益和经济效益。在业务运行过程中,智能网系统根据相应的业务逻辑对业务数据库中的数据实时地进行查询、提取、删除等操作。
在数据库的操作中,锁是最常用的并发控制机构,是防止其它事务访问指定的资源,控制且实现并发操作的一种主要手段。当一个用户锁住数据库中的某个对象时,其它用户则就不能再访问该对象。
数据库中比较常见的死锁是交叉互锁,例如:在一个数据库事务中,A表和B表的数据操纵语言(DML)顺序,与另一个数据库事务中A表和B表的DML顺序相反,那么,如果这两个事务同时发起,就会由于A表和B表的相互锁定引起死锁,如图1所示。
目前,在对数据库的实际操作研究中,发现了另一种比较特殊的锁,即:当两个不同的进程同时对同一张表执行插入和删除操作时,即使没有启用事务,也可能会导致数据库发生死锁。究其原因,我们发现在对同一张表进行插入和删除时,会分别产生索引页锁和数据页锁,因此,当两个进程同时进行时,会导致两个进程因争夺锁资源而产生数据库死锁的问题。
同样,为了实时准确地记录业务执行过程中用户的状态信息及消费情况等,智能网系统会及时地将用户的业务信息记录至相应表,即插入至相应表,以便后续进行查询。然而,表空间不可能无限制地增大,对于一些已被查询过的业务信息或过期的业务信息,需要有另外的任务对表中的业务信息进行定时删除,若此时插入和删除两个进程同时发生,数据库则可能发生死锁,尤其在接口扣费等业务产生记录比较频繁的时候,发生死锁的概率更大。死锁的发生对智能网系统的性能将产生很大影响,直接影响用户的通话质量,甚至可能导致整个智能网系统的瘫痪。
发明内容
有鉴于此,本发明的主要目的在于提供一种避免智能网系统中数据库死锁的方法和装置,可避免智能网系统中产生的死锁问题,进而保证智能网系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种避免智能网系统中数据库死锁的方法,该方法包括:
为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。
其中,所述以设定的时间为周期交替将两张表设为插入表或删除表,具体为:
设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
其中,所述令标识开关的不同取值对应两张表的不同属性,为:
标识开关的值为0时,原表为插入表,增设的表为删除表;标识开关的值为1时,原表为删除表,增设的表为插入表;或者,
标识开关的值为0时,原表为删除表,增设的表为插入表;标识开关的值为1时,原表为插入表,增设的表为删除表。
其中,所述判断并依据两张表的属性分别对两张表执行对应的插入或删除操作,具体为:
业务运行过程中判断标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
上述方案中,所述设定的周期与定时执行删除操作对应的周期相同。
其中,所述标识开关设为operflag;相应的,
所述令标识开关的值交替为0或1为:令operflag=(operflag+1)%2。
本发明还提供了一种避免智能网系统中数据库死锁的装置,该装置包括:配置模块、设置模块和运行模块;其中,
所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;
所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;
所述运行模块,用于业务运行过程中,判断设置模块中两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。
其中,所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
其中,所述设定的周期与定时执行删除操作对应的周期相同。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010210993.7/2.html,转载请声明来源钻瓜专利网。