CN101894142B - 一种避免智能网系统中数据库死锁的方法和装置 - Google Patents
一种避免智能网系统中数据库死锁的方法和装置 Download PDFInfo
- 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
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000002498 deadly effect Effects 0.000 title abstract 4
- 238000012217 deletion Methods 0.000 claims abstract description 33
- 230000037430 deletion Effects 0.000 claims abstract description 33
- 238000003780 insertion Methods 0.000 claims abstract description 32
- 230000037431 insertion Effects 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 22
- 230000009471 action Effects 0.000 claims description 20
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
Abstract
本发明公开了一种避免智能网系统中数据库死锁的方法,包括:为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。本发明还同时公开了一种避免智能网系统中数据库死锁的装置,运用该方法和装置可避免智能网系统中产生的死锁问题,进而保证智能网系统的正常运行。
Description
技术领域
本发明涉及通信领域中的智能网系统,尤其涉及一种避免智能网系统中数据库死锁的方法和装置。
背景技术
智能网已是电信系统发展很成熟的增值业务实现方案,可以根据实际需要快速、灵活、方便且经济地生成各种业务,为运营商带来良好的社会效益和经济效益。在业务运行过程中,智能网系统根据相应的业务逻辑对业务数据库中的数据实时地进行查询、提取、删除等操作。
在数据库的操作中,锁是最常用的并发控制机构,是防止其它事务访问指定的资源,控制且实现并发操作的一种主要手段。当一个用户锁住数据库中的某个对象时,其它用户则就不能再访问该对象。
数据库中比较常见的死锁是交叉互锁,例如:在一个数据库事务中,A表和B表的数据操纵语言(DML)顺序,与另一个数据库事务中A表和B表的DML顺序相反,那么,如果这两个事务同时发起,就会由于A表和B表的相互锁定引起死锁,如图1所示。
目前,在对数据库的实际操作研究中,发现了另一种比较特殊的锁,即:当两个不同的进程同时对同一张表执行插入和删除操作时,即使没有启用事务,也可能会导致数据库发生死锁。究其原因,我们发现在对同一张表进行插入和删除时,会分别产生索引页锁和数据页锁,因此,当两个进程同时进行时,会导致两个进程因争夺锁资源而产生数据库死锁的问题。
同样,为了实时准确地记录业务执行过程中用户的状态信息及消费情况等,智能网系统会及时地将用户的业务信息记录至相应表,即插入至相应表,以便后续进行查询。然而,表空间不可能无限制地增大,对于一些已被查询过的业务信息或过期的业务信息,需要有另外的任务对表中的业务信息进行定时删除,若此时插入和删除两个进程同时发生,数据库则可能发生死锁,尤其在接口扣费等业务产生记录比较频繁的时候,发生死锁的概率更大。死锁的发生对智能网系统的性能将产生很大影响,直接影响用户的通话质量,甚至可能导致整个智能网系统的瘫痪。
发明内容
有鉴于此,本发明的主要目的在于提供一种避免智能网系统中数据库死锁的方法和装置,可避免智能网系统中产生的死锁问题,进而保证智能网系统的正常运行。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种避免智能网系统中数据库死锁的方法,该方法包括:
为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
其中,所述以设定的时间为周期交替将两张表设为插入表或删除表,具体为:设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
其中,所述令标识开关的不同取值对应两张表的不同属性,为:
标识开关的值为0时,原表为插入表,增设的表为删除表;标识开关的值为1时,原表为删除表,增设的表为插入表;或者,
标识开关的值为0时,原表为删除表,增设的表为插入表;标识开关的值为1时,原表为插入表,增设的表为删除表。
其中,所述判断并依据两张表的属性分别对两张表执行对应的插入或删除操作,具体为:
业务运行过程中判断标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
上述方案中,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。
其中,所述标识开关设为operflag;相应的,
所述令标识开关的值交替取值为:令operflag=(operflag+1)%2。
本发明还提供了一种避免智能网系统中数据库死锁的装置,该装置包括:配置模块、设置模块和运行模块;其中,
所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;
所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;
所述运行模块,用于业务运行过程中,判断设置模块中两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
其中,所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
其中,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。
本发明提供的避免智能网系统中数据库死锁的方法和装置,为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。本发明可将复制所得的两张表周期切换为插入表或删除表,保证即使插入和删除两个进程同时进行,也不会对同一张表执行操作,因此有效避免了现有技术中的死锁问题,可保证智能网系统的正常运行。
附图说明
图1为现有数据库中发生交叉互锁的流程示意图;
图2为本发明避免智能网系统中数据库死锁的方法实现流程示意图;
图3为本发明避免智能网系统中数据库死锁的装置结构示意图。
具体实施方式
本发明的基本思想是:为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。
本发明中,通过设置一个任务来管理所述插入表和删除表的切换,实现方法为:设置一个标识开关,由定时器来控制标识开关的值交替取值,例如:交替为0或1,当标识开关的值为0时,第一张表为插入表,第二张表为删除表;当标识开关的值为1时,第一张表为删除表,第二张表为插入表;
所述判断两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作为:判断所述标识开关的值,如果业务运行过程中需执行插入操作,则依据标识开关的值向当前的插入表中插入数据;如果业务运行过程中需执行删除操作,则依据标识开关的值从当前的删除表中删除数据。
下面结合附图及具体实施例对本发明作进一步详细说明。
图2为本发明避免智能网系统中数据库死锁的方法实现流程示意图,如图2所示,该方法的实现步骤如下:
步骤201:为需被执行插入和删除操作的表增设一张空表;
这里,假设需被执行插入和删除操作的表为table,为table增设一张空表,设为table1。
步骤202:设置一个标识开关,由定时器来控制标识开关的值交替为0或1;
具体为:可将标识开关设为operflag,且设置当标识开关operflag=0时,table1为插入表,table为删除表;当标识开关operflag=1时,table1为删除表,table为插入表。
本发明中,在设置标识开关时,需首先将增设的空表设为插入表,原表设为删除表,以上述设置为例,需首先令空表table1为插入表,以防止原表中的最初始数据最终未被删除的情况,从而防止对最终的计费操作造成影响。
其中,所述定时器设定的周期与定时执行删除操作对应的周期相同,可为15分钟,定时周期的长短可以插入的业务数据的多少为依据,如果业务数据较多,考虑到内存的问题,则需对过期的业务数据及时进行删除,因此可设置较小的周期;反之,如果业务数据较少,可设置较大的周期。
在实际应用过程中,可在定时器达到预设的时间时,令当前的标识开关operflag=(operflag+1)%2,其含义为operflag+1被2整除所得的余数。
步骤203:业务运行时判断标识开关的值,依据标识开关的值分别对两张表执行插入或删除操作;
具体为:业务运行时,如需向表中插入数据,系统则首先判断标识开关的值,以步骤202中的例子为例,如果标识开关operflag=0,则向table1中插入数据;如果标识开关operflag=1,则向table中插入数据。同样,如需从表中删除数据,系统则首先判断标识开关的值,如果标识开关operflag=0,则从table中删除数据;如果标识开关operflag=1,则从table1中删除数据。当然,本发明中所述插入和删除操作可以同时进行,插入操作对应插入表,删除操作对应删除表。
这里,由于删除数据时只是删除过期的或早已查询过的部分业务数据,而向表中插入数据的操作比较频繁,可以说是持续进行的,因此不会造成需执行删除操作的表中不存在数据的情况。
下面结合一具体实施例对本发明所述的方法进行详细描述。
在智能网预付费业务(PPS)中,设s1heibailist为用户状态变化表,当用户状态在业务执行过程中发生变化时,需要由各业务流程向s1heibailist中插入用户状态变化记录,即本发明所述的向表中插入数据;任务PPS ActiveCDR.sh定时执行,周期可设为15分钟,用于读取s1heibailist中的记录来生成激活话单和停开机话单,并将已出话单记录删除,即本发明所述的从表中删除数据。在现有技术中,如果向s1heibailist中插入用户状态变化记录的操作和PPS ActiveCDR.sh任务同时进行,数据库很可能发生死锁,本发明则提出如下解决方案,实现步骤如下:
步骤301:为s1heibailist增设一张空表s1heibailist1;
步骤302:设置标识开关operflag;
具体为:设置标识开关operflag,并设当标识开关operflag=0时,s1heibailist1为插入表,s1heibailist为删除表;当标识开关operflag=1时,s1heibailist为插入表,s1heibailist1为删除表,标识开关operflag为0或1的变化周期设为PPS ActiveCDR.sh任务的执行周期,即为所述的15分钟。
步骤303:业务流程中,依据标识开关operflag的值分别对s1heibailist和s1heibailist1执行插入或删除操作;
具体为:业务流程中,如果用户状态发生变化,则首先判断标识开关operflag的值,如果为0,则向s1heibailist1中插入相应的状态变化值;如果为1,则向s1heibailist中插入相应的状态变化值;
同样,如果需执行PPS_ActiveCDR.sh任务,则首先判断标识开关operflag的值,如果为0,则从s1heibailist中读取较早存储的已过期的激活话单和停开机话单,之后将已读取的话单删除;如果为1,则从s1heibailist1中读取相应激活话单和停开机话单,并将已读取的话单删除。
本实施例中还设置一个操作标志位s1tableoperflag,用于标识PPS_ActiveCDR.sh任务中读取话单的操作是否已完成,如果s1tableoperflag=0,则表示读取话单的操作已完成;如果s1tableoperflag=1,则表示读取话单的操作还未完成;相应的,所述步骤303中PPS_ActiveCDR.sh任务中删除已读取话单的操作执行前,还需判断s1tableoperflag的值,如果s1tableoperflag=0,则继续执行删除已读取话单的操作;如果s1tableoperflag=1,则结束当前的PPS_ActiveCDR.sh任务,不再执行删除话单的操作。
这里,设置操作标志位s1tableoperflag的目的为:防止激活话单和停开机话单还未被读取完成,就执行了后续的删除话单的操作,从而导致运营商执行计费操作时,找不到作为计费依据的话单。
为实现上述方法,本发明还提供了一种避免智能网系统中数据库死锁的装置,如图3所示,该装置包括:配置模块、设置模块和运行模块;其中,
所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;
所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;
所述运行模块,用于业务运行过程中,判断设置模块中两张表的属性,依据两张表的属性分别对两张表执行对应的插入或删除操作。
所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
其中,所述设定的周期与定时执行删除操作对应的周期相同。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种避免智能网系统中数据库死锁的方法,其特征在于,该方法包括:
为需被执行插入和删除操作的表增设一张空表;以设定的时间为周期交替将两张表设为插入表或删除表;业务运行过程中,判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
2.根据权利要求1所述的避免智能网系统中数据库死锁的方法,其特征在于,所述以设定的时间为周期交替将两张表设为插入表或删除表,具体为:
设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
3.根据权利要求2所述的避免智能网系统中数据库死锁的方法,其特征在于,所述令标识开关的不同取值对应两张表的不同属性,为:
标识开关的值为0时,原表为插入表,增设的表为删除表;标识开关的值为1时,原表为删除表,增设的表为插入表;或者,
标识开关的值为0时,原表为删除表,增设的表为插入表;标识开关的值为1时,原表为插入表,增设的表为删除表。
4.根据权利要求2或3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述判断两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作,具体为:
业务运行过程中判断标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
5.根据权利要求1、2或3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。
6.根据权利要求3所述的避免智能网系统中数据库死锁的方法,其特征在于,所述标识开关设为operflag;相应的,
所述令标识开关的值交替取值为:令operflag=(operflag+1)%2。
7.一种避免智能网系统中数据库死锁的装置,其特征在于,该装置包括:配置模块、设置模块和运行模块;其中,
所述配置模块,用于为需被执行插入和删除操作的表增设一张空表,并将两张表传送到设置模块;
所述设置模块,用于以设定的时间为周期交替将配置模块传送的两张表设为插入表或删除表;
所述运行模块,用于业务运行过程中,判断设置模块中两张表是插入表还是删除表,依据判断结果分别对两张表执行对应的插入或删除操作。
8.根据权利要求7所述的避免智能网系统中数据库死锁的装置,其特征在于,所述设置模块,具体用于设置一个标识开关,以设定的时间为周期令标识开关的值交替取值,且令标识开关的不同取值对应两张表的不同属性。
9.根据权利要求8所述的避免智能网系统中数据库死锁的装置,其特征在于,所述运行模块,具体用于业务运行过程中判断设置模块中标识开关的值,依据标识开关的值确定两张表的属性,并依据两张表的属性分别对两张表执行对应的插入或删除操作。
10.根据权利要求7、8或9所述的避免智能网系统中数据库死锁的装置,其特征在于,所述以设定的时间为周期中的所述周期与定时执行删除操作对应的周期相同。
Priority Applications (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 | 一种避免智能网系统中数据库死锁的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102109937A CN101894142B (zh) | 2010-06-28 | 2010-06-28 | 一种避免智能网系统中数据库死锁的方法和装置 |
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 Expired - Fee Related 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894142B (zh) * | 2010-06-28 | 2013-11-06 | 中兴通讯股份有限公司 | 一种避免智能网系统中数据库死锁的方法和装置 |
Citations (3)
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)
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 | 中兴通讯股份有限公司 | 一种避免智能网系统中数据库死锁的方法和装置 |
-
2010
- 2010-06-28 CN CN2010102109937A patent/CN101894142B/zh not_active Expired - Fee Related
-
2011
- 2011-02-21 WO PCT/CN2011/071144 patent/WO2012000318A1/zh active Application Filing
Patent Citations (3)
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 |
---|---|---|
CN103646218B (zh) | 数据访问权限和行为权限的定义装置和定义方法 | |
CN103678392A (zh) | 一种数据增量合并的方法及其装置 | |
CN103678494A (zh) | 客户端同步服务端数据的方法及装置 | |
CN105069134A (zh) | 一种Oracle统计信息自动收集方法 | |
CN103440285B (zh) | 大型手机游戏系统及其数据库更新方法 | |
US20230161758A1 (en) | Distributed Database System and Data Processing Method | |
CN101206614B (zh) | 仿真特殊功能寄存器的仿真器 | |
CN110502523A (zh) | 业务数据存储方法、装置、服务器及计算机可读存储介质 | |
CN103544153A (zh) | 一种基于数据库的数据更新方法和系统 | |
CN101556597B (zh) | 一种自适应乐观并发控制方法 | |
CN103927314A (zh) | 一种数据批量处理的方法和装置 | |
CN103678519A (zh) | 一种支持Hive DML增强的混合存储系统及其方法 | |
CN107330028A (zh) | 一种Apache NiFi在源数据录入数据库方面的扩展应用方法和系统 | |
CN105279285A (zh) | 一种关系型数据库与非关系型数据库的同步系统及方法 | |
CN103345501A (zh) | 数据库更新方法和装置 | |
CN103631831B (zh) | 一种数据备份方法及装置 | |
CN101894142B (zh) | 一种避免智能网系统中数据库死锁的方法和装置 | |
CN110515870A (zh) | 一种服务器电源前后级通讯的方法、设备及可读介质 | |
CN110069533A (zh) | 一种基于区块链的事件订阅方法及装置 | |
CN109471879A (zh) | 一种数据排行的辅助方法及装置 | |
CN103645968B (zh) | 一种浏览器状态复原方法和装置 | |
CN101833585A (zh) | 数据库服务器操作控制系统、方法及设备 | |
CN110704468A (zh) | 数据更新方法、装置及控制器 | |
CN103136343A (zh) | 一种共享资源实时交互方法 | |
CN110046075A (zh) | 一种hpl测试方法以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
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 Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131106 |