CN101894142B - 一种避免智能网系统中数据库死锁的方法和装置 - Google Patents

一种避免智能网系统中数据库死锁的方法和装置 Download PDF

Info

Publication number
CN101894142B
CN101894142B CN2010102109937A CN201010210993A CN101894142B CN 101894142 B CN101894142 B CN 101894142B CN 2010102109937 A CN2010102109937 A CN 2010102109937A CN 201010210993 A CN201010210993 A CN 201010210993A CN 101894142 B CN101894142 B CN 101894142B
Authority
CN
China
Prior art keywords
tables
identification switch
value
cycle
delete
Prior art date
Application number
CN2010102109937A
Other languages
English (en)
Other versions
CN101894142A (zh
Inventor
陈西
Original Assignee
中兴通讯股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Priority to CN2010102109937A priority Critical patent/CN101894142B/zh
Publication of CN101894142A publication Critical patent/CN101894142A/zh
Application granted granted Critical
Publication of CN101894142B publication Critical patent/CN101894142B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control

Abstract

本发明公开了一种避免智能网系统中数据库死锁的方法,包括:为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。本发明还同时公开了一种避免智能网系统中数据库死锁的装置,运用该方法和装置可避免智能网系统中产生的死锁问题,进而保证智能网系统的正常运行。

Description

一种避免智能网系统中数据库死锁的方法和装置

技术领域

[0001] 本发明涉及通信领域中的智能网系统,尤其涉及一种避免智能网系统中数据库死锁的方法和装置。

背景技术

[0002] 智能网已是电信系统发展很成熟的增值业务实现方案,可以根据实际需要快速、灵活、方便且经济地生成各种业务,为运营商带来良好的社会效益和经济效益。在业务运行过程中,智能网系统根据相应的业务逻辑对业务数据库中的数据实时地进行查询、提取、删除等操作。

[0003] 在数据库的操作中,锁是最常用的并发控制机构,是防止其它事务访问指定的资源,控制且实现并发操作的一种主要手段。当一个用户锁住数据库中的某个对象时,其它用户则就不能再访问该对象。

[0004] 数据库中比较常见的死锁是交叉互锁,例如:在一个数据库事务中,A表和B表的数据操纵语言(DML)顺序,与另一个数据库事务中A表和B表的DML顺序相反,那么,如果这两个事务同时发起,就会由于A表和B表的相互锁定引起死锁,如图1所示。

[0005]目前,在对数据库的实际操作研究中,发现了另一种比较特殊的锁,即:当两个不同的进程同时对同一张表执行插入和删除操作时,即使没有启用事务,也可能会导致数据库发生死锁。究其原因,我们发现在对同一张表进行插入和删除时,会分别产生索引页锁和数据页锁,因此,当两个进程同时进行时,会导致两个进程因争夺锁资源而产生数据库死锁的问题。

[0006] 同样,为了实时准确地记录业务执行过程中用户的状态信息及消费情况等,智能网系统会及时地将用户的业务信息记录至相应表,即插入至相应表,以便后续进行查询。然而,表空间不可能无限制地增大,对于一些已被查询过的业务信息或过期的业务信息,需要有另外的任务对表中的业务信息进行定时删除,若此时插入和删除两个进程同时发生,数据库则可能发生死锁,尤其在接口扣费等业务产生记录比较频繁的时候,发生死锁的概率更大。死锁的发生对智能网系统的性能将产生很大影响,直接影响用户的通话质量,甚至可能导致整个智能网系统的瘫痪。

发明内容

[0007] 有鉴于此,本发明的主要目的在于提供一种避免智能网系统中数据库死锁的方法和装置,可避免智能网系统中产生的死锁问题,进而保证智能网系统的正常运行。

[0008] 为达到上述目的,本发明的技术方案是这样实现的:

[0009] 本发明提供了一种避免智能网系统中数据库死锁的方法,该方法包括:

[0010] 为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。[0011] 其中,所述以设定的时间为周期交替将两张表设为插入表或删除表,具体为:设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。

[0012] 其中,所述令标识开关的不同取值对应两张表的不同属性,为:

[0013] 标识开关的值为O时,原表为插入表,增设的表为删除表;标识开关的值为I时,原表为删除表,增设的表为插入表;或者,

[0014] 标识开关的值为O时,原表为删除表,增设的表为插入表;标识开关的值为I时,原表为插入表,增设的表为删除表。

[0015] 其中,所述判断并依据两张表的属性分别对两张表执行对应的插入或删除操作,具体为:

[0016] 业务运行过程中判断标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。

[0017] 上述方案中,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。

[0018] 其中,所述标识开关设为operflag ;相应的,

[0019] 所述令标识开关的值交替取值为:令operflag= (operflag+l)%2。

[0020] 本发明还提供了一种避免智能网系统中数据库死锁的装置,该装置包括:配置模块、设置模块和运行模块;其中,

[0021] 所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;

[0022] 所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;

[0023] 所述运行模块,用于业务运行过程中,判断设置模块中两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。

[0024] 其中,所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。

[0025] 所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。

[0026] 其中,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。

[0027] 本发明提供的避免智能网系统中数据库死锁的方法和装置,为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。本发明可将复制所得的两张表周期切换为插入表或删除表,保证即使插入和删除两个进程同时进行,也不会对同一张表执行操作,因此有效避免了现有技术中的死锁问题,可保证智能网系统的正常运行。

附图说明[0028] 图1为现有数据库中发生交叉互锁的流程示意图;

[0029] 图2为本发明避免智能网系统中数据库死锁的方法实现流程示意图;

[0030] 图3为本发明避免智能网系统中数据库死锁的装置结构示意图。

具体实施方式

[0031] 本发明的基本思想是:为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。

[0032] 本发明中,通过设置一个任务来管理所述插入表和删除表的切换,实现方法为:设置一个标识开关,由定时器来控制标识开关的值交替取值,例如:交替为O或1,当标识开关的值为O时,第一张表为插入表,第二张表为删除表;当标识开关的值为I时,第一张表为删除表,第二张表为插入表;

[0033] 所述判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作为:判断所述标识开关的值,如果业务运行过程中需执行插入操作,则依据标识开关的值向当前的插入表中插入数据;如果业务运行过程中需执行删除操作,则依据标识开关的值从当前的删除表中删除数据。

[0034] 下面结合附图及具体实施例对本发明作进一步详细说明。

[0035] 图2为本发明避免智能网系统中数据库死锁的方法实现流程示意图,如图2所示,该方法的实现步骤如下:

[0036] 步骤201:为需被执行插入和删除操作的表增设一张空表;

[0037] 这里,假设需被执行插入和删除操作的表为table,为table增设一张空表,设为tablelο

[0038] 步骤202:设置一个标识开关,由定时器来控制标识开关的值交替为O或I ;

[0039] 具体为:可将标识开关设为operflag,且设置当标识开关operflag=0时,tablel为插入表,table为删除表;当标识开关Operflag=I时,tablel为删除表,table为插入表。

[0040] 本发明中,在设置标识开关时,需首先将增设的空表设为插入表,原表设为删除表,以上述设置为例,需首先令空表tablel为插入表,以防止原表中的最初始数据最终未被删除的情况,从而防止对最终的计费操作造成影响。

[0041] 其中,所述定时器设定的周期与定时执行删除操作对应的周期相同,可为15分钟,定时周期的长短可以插入的业务数据的多少为依据,如果业务数据较多,考虑到内存的问题,则需对过期的业务数据及时进行删除,因此可设置较小的周期;反之,如果业务数据较少,可设置较大的周期。

[0042] 在实际应用过程中,可在定时器达到预设的时间时,令当前的标识开关operflag= (operflag+l)%2,其含义为operflag+Ι被2整除所得的余数。

[0043] 步骤203:业务运行时判断标识开关的值,依据标识开关的值分别对两张表执行插入或删除操作;

[0044] 具体为:业务运行时,如需向表中插入数据,系统则首先判断标识开关的值,以步骤202中的例子为例,如果标识开关operf lag=0,则向tablel中插入数据;如果标识开关operflag=l,则向table中插入数据。同样,如需从表中删除数据,系统则首先判断标识开关的值,如果标识开关operflag=0,则从table中删除数据;如果标识开关Operflag=IJlJ从tablel中删除数据。当然,本发明中所述插入和删除操作可以同时进行,插入操作对应插入表,删除操作对应删除表。

[0045] 这里,由于删除数据时只是删除过期的或早已查询过的部分业务数据,而向表中插入数据的操作比较频繁,可以说是持续进行的,因此不会造成需执行删除操作的表中不存在数据的情况。

[0046] 下面结合一具体实施例对本发明所述的方法进行详细描述。

[0047] 在智能网预付费业务(PPS)中,设slheibailist为用户状态变化表,当用户状态在业务执行过程中发生变化时,需要由各业务流程向slheibailist中插入用户状态变化记录,即本发明所述的向表中插入数据;任务PPS ActiveCTR.sh定时执行,周期可设为15分钟,用于读取slheibailist中的记录来生成激活话单和停开机话单,并将已出话单记录删除,即本发明所述的从表中删除数据。在现有技术中,如果向slheibailist中插入用户状态变化记录的操作和PPS ActiveCDR.sh任务同时进行,数据库很可能发生死锁,本发明则提出如下解决方案,实现步骤如下:

[0048]步骤 301:为 slheibailist 增设一张空表 slheibailistl ;

[0049] 步骤302:设置标识开关operflag ;

[0050] 具体为:设置标识开关operflag,并设当标识开关Operflag=O时,slheibailistl为插入表,slheibailist为删除表;当标识开关Operflag=I时,slheibailist为插入表,slheibailistl为删除表,标识开关operflag为O或I的变化周期设为PPS ActiveCDR.sh任务的执行周期,即为所述的15分钟。

[0051] 步骤303:业务流程中,依据标识开关operflag的值分别对slheibailist和slheibailistl执行插入或删除操作;

[0052] 具体为:业务流程中,如果用户状态发生变化,则首先判断标识开关operflag的值,如果为O,则向slheibailistl中插入相应的状态变化值;如果为1,则向slheibailist中插入相应的状态变化值;

[0053] 同样,如果需执行PPS_ActiveCDR.sh任务,则首先判断标识开关operflag的值,如果为0,则从slheibailist中读取较早存储的已过期的激活话单和停开机话单,之后将已读取的话单删除;如果为1,则从slheibailistl中读取相应激活话单和停开机话单,并将已读取的话单删除。

[0054] 本实施例中还设置一个操作标志位sltableoperflag,用于标识PPS_ActiveO)R.sh任务中读取话单的操作是否已完成,如果Sltableoperflag=O,则表示读取话单的操作已完成;如果Sltableoperflag=I,则表示读取话单的操作还未完成;相应的,所述步骤303中PPS_Active⑶R.sh任务中删除已读取话单的操作执行前,还需判断sltableoperflag的值,如果Sltableoperflag=O,则继续执行删除已读取话单的操作;如果sltableoperflag=l,则结束当前的PPS_ActiveO)R.sh任务,不再执行删除话单的操作。

[0055] 这里,设置操作标志位sltableoperflag的目的为:防止激活话单和停开机话单还未被读取完成,就执行了后续的删除话单的操作,从而导致运营商执行计费操作时,找不到作为计费依据的话单。

[0056] 为实现上述方法,本发明还提供了一种避免智能网系统中数据库死锁的装置,如图3所示,该装置包括:配置模块、设置模块和运行模块;其中,

[0057] 所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;

[0058] 所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;

[0059] 所述运行模块,用于业务运行过程中,判断设置模块中两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。

[0060] 所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。

[0061] 所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。

[0062] 其中,所述设定的周期与定时执行删除操作对应的周期相同。

[0063] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种避免智能网系统中数据库死锁的方法,其特征在于,该方法包括: 为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
2.根据权利要求1所述的避免智能网系统中数据库死锁的方法,其特征在于,所述以设定的时间为周期交替将两张表设为插入表或删除表,具体为: 设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
3.根据权利要求2所述的避免智能网系统中数据库死锁的方法,其特征在于,所述令标识开关的不同取值对应两张表的不同属性,为: 标识开关的值为O时,原表为插入表,增设的表为删除表;标识开关的值为I时,原表为删除表,增设的表为插入表;或者, 标识开关的值为O时,原表为删除表,增设的表为插入表;标识开关的值为I时,原表为插入表,增设的表为删除表。
4.根据权利要求2或3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作,具体为: 业务运行过程中判断标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
5.根据权利要求1、2或·3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。
6.根据权利要求3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述标识开关设为operflag ;相应的, 所述令标识开关的值交替取值为:令operflag = (operflag+Ι) % 2。
7.—种避免智能网系统中数据库死锁的装置,其特征在于,该装置包括:配置模块、设置模块和运行模块;其中, 所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块; 所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表; 所述运行模块,用于业务运行过程中,判断设置模块中两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
8.根据权利要求7所述的避免智能网系统中数据库死锁的装置,其特征在于,所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
9.根据权利要求8所述的避免智能网系统中数据库死锁的装置,其特征在于,所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
10.根据权利要求7、8或9所述的避免智能网系统中数据库死锁的装置,其特征在于,所述以设定的时间 为周期中的所述周期与定时执行删除操作对应的周期相同。
CN2010102109937A 2010-06-28 2010-06-28 一种避免智能网系统中数据库死锁的方法和装置 CN101894142B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010102109937A CN101894142B (zh) 2010-06-28 2010-06-28 一种避免智能网系统中数据库死锁的方法和装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2010102109937A CN101894142B (zh) 2010-06-28 2010-06-28 一种避免智能网系统中数据库死锁的方法和装置
PCT/CN2011/071144 WO2012000318A1 (zh) 2010-06-28 2011-02-21 一种避免智能网系统中数据库死锁的方法和装置

Publications (2)

Publication Number Publication Date
CN101894142A CN101894142A (zh) 2010-11-24
CN101894142B true CN101894142B (zh) 2013-11-06

Family

ID=43103334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010102109937A CN101894142B (zh) 2010-06-28 2010-06-28 一种避免智能网系统中数据库死锁的方法和装置

Country Status (2)

Country Link
CN (1) CN101894142B (zh)
WO (1) WO2012000318A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894142B (zh) * 2010-06-28 2013-11-06 中兴通讯股份有限公司 一种避免智能网系统中数据库死锁的方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1967531A (zh) * 2006-06-20 2007-05-23 华为技术有限公司 一种数据系统维护方法及装置
CN101178724A (zh) * 2007-11-28 2008-05-14 金蝶软件(中国)有限公司 临时表管理方法
CN101364230A (zh) * 2008-09-24 2009-02-11 金蝶软件(中国)有限公司 一种并发访问控制方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120304A1 (en) * 2006-11-21 2008-05-22 Calio Robert J Method and system for providing high performance data modification of relational database tables
CN101894142B (zh) * 2010-06-28 2013-11-06 中兴通讯股份有限公司 一种避免智能网系统中数据库死锁的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1967531A (zh) * 2006-06-20 2007-05-23 华为技术有限公司 一种数据系统维护方法及装置
CN101178724A (zh) * 2007-11-28 2008-05-14 金蝶软件(中国)有限公司 临时表管理方法
CN101364230A (zh) * 2008-09-24 2009-02-11 金蝶软件(中国)有限公司 一种并发访问控制方法及装置

Also Published As

Publication number Publication date
WO2012000318A1 (zh) 2012-01-05
CN101894142A (zh) 2010-11-24

Similar Documents

Publication Publication Date Title
CN105243067B (zh) 一种实现实时增量同步数据的方法及装置
US10409937B2 (en) Modelling and simulation method
CN106095408B (zh) 一种数据监控和代码自动生成与部署的系统及方法
Hillston A compositional approach to performance modelling
TWI677228B (zh) 向區塊鏈系統中寫入事務資料的方法和裝置
CN101496000B (zh) 通过web聚合的双向多主同步
CN101102577B (zh) 无线通信基站系统前后台数据库表数据增量同步方法
Ghezzi et al. A general way to put time in Petri nets
US8195702B2 (en) Online index builds and rebuilds without blocking locks
CN104252452B (zh) 数据管理的方法及装置
CN103559217B (zh) 一种面向异构数据库的海量组播数据入库实现方法
Reed et al. Metric spaces as models for real-time concurrency
CN103853727A (zh) 提高大数据量查询性能的方法及系统
CN104133822B (zh) 一种对存储器上的文件进行扫描的方法及装置
CN102663103B (zh) 可配置的自动化生成数据库和数据访问的方法
CN102117338B (zh) 一种数据库缓存的方法
CN104090889B (zh) 数据处理方法及系统
US20150261749A1 (en) System and method for deletion of extraneous delete marker objects
CN102651008B (zh) 在关系数据库中组织数据记录的方法和设备
CN101765831B (zh) 数据库不一致的处理方法
CN104239417B (zh) 一种分布式数据库数据分片后动态调整方法及装置
CN104572689A (zh) 数据同步方法、装置及系统
CN101136783A (zh) 一种网管系统配置数据的备份、恢复方法及装置
CN105183764B (zh) 一种数据分页方法及装置
CN101196926A (zh) 一种数据库访问平台及其访问方法

Legal Events

Date Code Title Description
PB01 Publication
C06 Publication
SE01 Entry into force of request for substantive examination
C10 Entry into substantive examination
GR01 Patent grant
C14 Grant of patent or utility model
TR01 Transfer of patent right

Effective date of registration: 20190131

Address after: Delaware

Patentee after: Open Invention Network Co., Ltd.

Address before: 518057 Nanshan District high tech Industrial Park, Shenzhen, Guangdong, Ministry of justice, Zhongxing Road, South China road.

Patentee before: ZTE Corporation

TR01 Transfer of patent right