更新数据库记录的控制方法和装置制造方法

文档序号:6634218阅读:113来源:国知局
更新数据库记录的控制方法和装置制造方法
【专利摘要】本发明公开一种更新数据库记录的控制方法和装置。所述方法包括:获取预更新的一条数据库记录;利用主键定位所述数据库记录;更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;获取所述数据库记录在内存中的版本号以及在数据库中的版本号;当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。采用本发明提供的技术方案,能够避免现有技术的并发控制方法,容易造成死锁,会降低并发效率的问题。
【专利说明】更新数据库记录的控制方法和装置

【技术领域】
[0001]本发明涉及软件【技术领域】,尤其涉及一种更新数据库记录的控制方法和装置。

【背景技术】
[0002]数据库是信息系统的核心和基础。现在主流的数据库管理系统中,都支持多个事务同时执行,这样能够有效提高数据库管理系统的运行效率。事务是指在数据库上完成的一个操作。开发多用户数据库应用,常常要要力争最大的并发访问。但是,多用户并发访问数据库时,经常多个事务同时对同一条记录进行更新操作,由于不同事务所需要的处理时间长短不同,会出现长事务的修改操作覆盖掉短事务对记录的修改这一情况。
[0003]为了避免长事务的修改操作覆盖掉短事务对记录的修改这一情况的产生,需要引入并发控制机制,现有的技术中,一般利用数据库悲观锁完成并发控制,即,每次对需要进行并发控制的记录,进行读加更新锁。
[0004]但是,现有技术中的这种并发控制方法,容易造成死锁,会较大程度上降低并发效率。


【发明内容】

[0005]有鉴于此,本发明提供了一种更新数据库记录的控制方法和装置,用以避免现有技术的并发控制方法,容易造成死锁,会较大程度上降低并发效率的问题。
[0006]为实现上述目的,本发明提供如下技术方案:
[0007]一种更新数据库记录的控制方法,包括:
[0008]获取预更新的一条数据库记录;
[0009]利用主键定位所述数据库记录;
[0010]更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I ;
[0011]在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
[0012]获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
[0013]当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
[0014]优选的,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
[0015]优选的,所述更新所述第一预更新字段之前,还包括:
[0016]查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
[0017]获取用户输入的与所述第一预更新字段相对应的第一更新数据。
[0018]优选的,所述控制内存中所述数据库记录的版本号加I之前,还包括:
[0019]读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
[0020]优选的,所述更新所述第二预更新字段之前,还包括:[0021 ] 查找所述第二预更新字段;
[0022]获取用户输入的与所述第二预更新字段相对应的第二更新数据。
[0023]优选的,当所述差值为O时,等待预设时间,直至所述差值为I。
[0024]一种更新数据库记录的控制装置,包括:
[0025]数据库记录获取单元,用于获取预更新的一条数据库记录;
[0026]第一主键定位单元,用于利用主键定位所述数据库记录;
[0027]第一预更新字段更新单元,用于更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I ;
[0028]第二主键定位单元,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
[0029]数据库记录版本号获取单元,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
[0030]第二预更新字段更新单元,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
[0031]优选的,还包括:
[0032]第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
[0033]第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
[0034]优选的,还包括:
[0035]存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
[0036]优选的,还包括:
[0037]第二预更新字段查找单元,用于查找所述第二预更新字段;
[0038]第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
[0039]经由上述的技术方案可知,与现有技术相比,本发明提供了一种更新数据库记录的控制方法和装置。当需要对数据库记录进行更新时,本发明提供的技术方案,获取预更新的一条数据库记录,利用主键定位所述数据库记录,然后更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录,所述第二预更新字段位于所述数据库记录中,然后获取所述数据库记录在内存中的版本号以及在数据库中的版本号,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。本发明提供的技术方案,通过主键与数据库版本号控制的方式,实现并发控制,能够避免长事务的修改操作覆盖掉短事务对记录的修改这一情况,而本发明提供的技术方案,不需要引入数据库悲观锁,因此不会出现死锁造成的并发效率低的情况。因此,本发明提供的技术方案,相对于现有技术中利用数据库悲观锁完成并发控制的方式,能够提高并发效率。

【专利附图】

【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0041]图1为本发明实施例提供的一种更新数据库记录的控制方法的流程图;
[0042]图2为本发明实施例提供的另外一种更新数据库记录的控制方法的流程图;
[0043]图3为本发明实施例提供的一种更新数据库记录的控制装置的结构图。

【具体实施方式】
[0044]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本发明作进一步详细的说明。
[0046]实施例一
[0047]请参阅图1,图1为本发明实施例提供的一种更新数据库记录的控制方法的流程图。如图1所示,该方法包括:
[0048]步骤S101,获取预更新的一条数据库记录;
[0049]具体的,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
[0050]步骤S102,利用主键定位所述数据库记录;
[0051]具体的,所述主键为Constraint数据库中唯一标识一条记录的字段信息。
[0052]步骤S103,更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I ;
[0053]步骤S104,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;
[0054]具体的,所述第二预更新字段位于所述数据库记录中。
[0055]步骤S105,获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
[0056]步骤S106,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
[0057]具体的,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,说明第一预更新字段已经更新成功,则开始更新第二预更新字段。
[0058]经由上述的技术方案可知,与现有技术相比,本发明实施例一提供了一种更新数据库记录的控制方法和装置。当需要对数据库记录进行更新时,本发明实施例一提供的技术方案,获取预更新的一条数据库记录,利用主键定位所述数据库记录,然后更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录,所述第二预更新字段位于所述数据库记录中,然后获取所述数据库记录在内存中的版本号以及在数据库中的版本号,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。本发明实施例一提供的技术方案,通过主键与数据库版本号控制的方式,实现并发控制,能够避免长事务的修改操作覆盖掉短事务对记录的修改这一情况,而本发明实施例一提供的技术方案,不需要引入数据库悲观锁,因此不会出现死锁造成的并发效率低的情况。因此,本发明实施例一提供的技术方案,相对于现有技术中利用数据库悲观锁完成并发控制的方式,能够提高并发效率。
[0059]为了更加详细的阐述本发明提供的技术方案,本发明还公开了另外一个具体实施例。
[0060]实施例二
[0061]请参阅图2,图2为本发明实施例提供的另外一种更新数据库记录的控制方法的流程图。如图2所示,该方法包括:
[0062]步骤S201,获取预更新的一条数据库记录;
[0063]步骤S202,利用主键定位所述数据库记录;
[0064]步骤S203,查找所述第一预更新字段,获取用户输入的与所述第一预更新字段相对应的第一更新数据,更新所述第一预更新字段;
[0065]具体的,所述第一预更新字段位于所述数据库记录中。
[0066]步骤S204,读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存,控制内存中所述数据库记录的版本号加I ;
[0067]步骤S205,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;
[0068]具体的,所述第二预更新字段位于所述数据库记录中。
[0069]步骤S206,获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
[0070]步骤S207,计算所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号的差值;若所述差值0,执行步骤S208 ;若所述差值为1,执行步骤S209 ;
[0071]步骤S208,等待预设时间,直至所述差值为I ;
[0072]步骤S209,查找所述第二预更新字段,获取用户输入的与所述第二预更新字段相对应的第二更新数据,更新所述第二预更新字段。
[0073]为了更加全面地阐述本发明提供的技术方案,本发明实施例还提供一种更新数据库记录的控制装置。
[0074]图3为本发明实施例提供的一种更新数据库记录的控制装置的结构图。如图3所示,该装置包括:
[0075]数据库记录获取单元301,用于获取预更新的一条数据库记录;
[0076]第一主键定位单元302,用于利用主键定位所述数据库记录;
[0077]第一预更新字段更新单元303,用于更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I ;
[0078]第二主键定位单元304,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
[0079]数据库记录版本号获取单元305,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
[0080]第二预更新字段更新单元306,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
[0081]进一步的,本发明实施例提供的更新数据库记录的控制装置,还包括:
[0082]第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
[0083]第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
[0084]存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
[0085]第二预更新字段查找单元,用于查找所述第二预更新字段;
[0086]第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
[0087]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0088]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0089]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或【技术领域】内所公知的任意其它形式的存储介质中。
[0090]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种更新数据库记录的控制方法,其特征在于,包括: 获取预更新的一条数据库记录; 利用主键定位所述数据库记录; 更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I; 在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中; 获取所述数据库记录在内存中的版本号以及在数据库中的版本号; 当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
2.根据权利要求1所述的方法,其特征在于,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
3.根据权利要求1所述的方法,其特征在于,所述更新所述第一预更新字段之前,还包括: 查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中; 获取用户输入的与所述第一预更新字段相对应的第一更新数据。
4.根据权利要求1所述的方法,其特征在于,所述控制内存中所述数据库记录的版本号加I之前,还包括: 读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
5.根据权利要求1所述的方法,其特征在于,所述更新所述第二预更新字段之前,还包括: 查找所述第二预更新字段; 获取用户输入的与所述第二预更新字段相对应的第二更新数据。
6.根据权利要求1所述的方法,其特征在于,当所述差值为O时,等待预设时间,直至所述差值为I。
7.一种更新数据库记录的控制装置,其特征在于,包括: 数据库记录获取单元,用于获取预更新的一条数据库记录; 第一主键定位单元,用于利用主键定位所述数据库记录; 第一预更新字段更新单元,用于更新所述第一预更新字段,控制内存中所述数据库记录的版本号加I ; 第二主键定位单元,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中; 数据库记录版本号获取单元,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号; 第二预更新字段更新单元,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为I时,更新所述第二预更新字段。
8.根据权利要求7所述的装置,其特征在于,还包括: 第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中; 第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
9.根据权利要求7所述的装置,其特征在于,还包括: 存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
10.根据权利要求7所述的装置,其特征在于,还包括: 第二预更新字段查找单元,用于查找所述第二预更新字段; 第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
【文档编号】G06F17/30GK104376070SQ201410645604
【公开日】2015年2月25日 申请日期:2014年11月12日 优先权日:2014年11月12日
【发明者】舒展, 陈炙, 聂砂, 刘海, 李拓, 曲麟智 申请人:中国建设银行股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1