CN104376070B - 更新数据库记录的控制方法和装置 - Google Patents
更新数据库记录的控制方法和装置 Download PDFInfo
- Publication number
- CN104376070B CN104376070B CN201410645604.1A CN201410645604A CN104376070B CN 104376070 B CN104376070 B CN 104376070B CN 201410645604 A CN201410645604 A CN 201410645604A CN 104376070 B CN104376070 B CN 104376070B
- Authority
- CN
- China
- Prior art keywords
- data
- base recording
- updated
- version number
- updated field
- 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.)
- Active
Links
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
- G06F16/2315—Optimistic concurrency control
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种更新数据库记录的控制方法和装置。所述方法包括:获取预更新的一条数据库记录;利用主键定位所述数据库记录;更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;获取所述数据库记录在内存中的版本号以及在数据库中的版本号;当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。采用本发明提供的技术方案,能够避免现有技术的并发控制方法,容易造成死锁,会降低并发效率的问题。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种更新数据库记录的控制方法和装置。
背景技术
数据库是信息***的核心和基础。现在主流的数据库管理***中,都支持多个事务同时执行,这样能够有效提高数据库管理***的运行效率。事务是指在数据库上完成的一个操作。开发多用户数据库应用,常常要要力争最大的并发访问。但是,多用户并发访问数据库时,经常多个事务同时对同一条记录进行更新操作,由于不同事务所需要的处理时间长短不同,会出现长事务的修改操作覆盖掉短事务对记录的修改这一情况。
为了避免长事务的修改操作覆盖掉短事务对记录的修改这一情况的产生,需要引入并发控制机制,现有的技术中,一般利用数据库悲观锁完成并发控制,即,每次对需要进行并发控制的记录,进行读加更新锁。
但是,现有技术中的这种并发控制方法,容易造成死锁,会较大程度上降低并发效率。
发明内容
有鉴于此,本发明提供了一种更新数据库记录的控制方法和装置,用以避免现有技术的并发控制方法,容易造成死锁,会较大程度上降低并发效率的问题。
为实现上述目的,本发明提供如下技术方案:
一种更新数据库记录的控制方法,包括:
获取预更新的一条数据库记录;
利用主键定位所述数据库记录;
更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;
在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
优选的,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
优选的,所述更新所述第一预更新字段之前,还包括:
查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
获取用户输入的与所述第一预更新字段相对应的第一更新数据。
优选的,所述控制内存中所述数据库记录的版本号加1之前,还包括:
读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
优选的,所述更新所述第二预更新字段之前,还包括:
查找所述第二预更新字段;
获取用户输入的与所述第二预更新字段相对应的第二更新数据。
优选的,当所述差值为0时,等待预设时间,直至所述差值为1。
一种更新数据库记录的控制装置,包括:
数据库记录获取单元,用于获取预更新的一条数据库记录;
第一主键定位单元,用于利用主键定位所述数据库记录;
第一预更新字段更新单元,用于更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;
第二主键定位单元,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
数据库记录版本号获取单元,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
第二预更新字段更新单元,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
优选的,还包括:
第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
优选的,还包括:
存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
优选的,还包括:
第二预更新字段查找单元,用于查找所述第二预更新字段;
第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
经由上述的技术方案可知,与现有技术相比,本发明提供了一种更新数据库记录的控制方法和装置。当需要对数据库记录进行更新时,本发明提供的技术方案,获取预更新的一条数据库记录,利用主键定位所述数据库记录,然后更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录,所述第二预更新字段位于所述数据库记录中,然后获取所述数据库记录在内存中的版本号以及在数据库中的版本号,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。本发明提供的技术方案,通过主键与数据库版本号控制的方式,实现并发控制,能够避免长事务的修改操作覆盖掉短事务对记录的修改这一情况,而本发明提供的技术方案,不需要引入数据库悲观锁,因此不会出现死锁造成的并发效率低的情况。因此,本发明提供的技术方案,相对于现有技术中利用数据库悲观锁完成并发控制的方式,能够提高并发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种更新数据库记录的控制方法的流程图;
图2为本发明实施例提供的另外一种更新数据库记录的控制方法的流程图;
图3为本发明实施例提供的一种更新数据库记录的控制装置的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例一
请参阅图1,图1为本发明实施例提供的一种更新数据库记录的控制方法的流程图。如图1所示,该方法包括:
步骤S101,获取预更新的一条数据库记录;
具体的,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
步骤S102,利用主键定位所述数据库记录;
具体的,所述主键为Constraint数据库中唯一标识一条记录的字段信息。
步骤S103,更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;
步骤S104,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;
具体的,所述第二预更新字段位于所述数据库记录中。
步骤S105,获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
步骤S106,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
具体的,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,说明第一预更新字段已经更新成功,则开始更新第二预更新字段。
经由上述的技术方案可知,与现有技术相比,本发明实施例一提供了一种更新数据库记录的控制方法和装置。当需要对数据库记录进行更新时,本发明实施例一提供的技术方案,获取预更新的一条数据库记录,利用主键定位所述数据库记录,然后更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录,所述第二预更新字段位于所述数据库记录中,然后获取所述数据库记录在内存中的版本号以及在数据库中的版本号,当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。本发明实施例一提供的技术方案,通过主键与数据库版本号控制的方式,实现并发控制,能够避免长事务的修改操作覆盖掉短事务对记录的修改这一情况,而本发明实施例一提供的技术方案,不需要引入数据库悲观锁,因此不会出现死锁造成的并发效率低的情况。因此,本发明实施例一提供的技术方案,相对于现有技术中利用数据库悲观锁完成并发控制的方式,能够提高并发效率。
为了更加详细的阐述本发明提供的技术方案,本发明还公开了另外一个具体实施例。
实施例二
请参阅图2,图2为本发明实施例提供的另外一种更新数据库记录的控制方法的流程图。如图2所示,该方法包括:
步骤S201,获取预更新的一条数据库记录;
步骤S202,利用主键定位所述数据库记录;
步骤S203,查找所述第一预更新字段,获取用户输入的与所述第一预更新字段相对应的第一更新数据,更新所述第一预更新字段;
具体的,所述第一预更新字段位于所述数据库记录中。
步骤S204,读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存,控制内存中所述数据库记录的版本号加1;
步骤S205,在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;
具体的,所述第二预更新字段位于所述数据库记录中。
步骤S206,获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
步骤S207,计算所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号的差值;若所述差值0,执行步骤S208;若所述差值为1,执行步骤S209;
步骤S208,等待预设时间,直至所述差值为1;
步骤S209,查找所述第二预更新字段,获取用户输入的与所述第二预更新字段相对应的第二更新数据,更新所述第二预更新字段。
为了更加全面地阐述本发明提供的技术方案,本发明实施例还提供一种更新数据库记录的控制装置。
图3为本发明实施例提供的一种更新数据库记录的控制装置的结构图。如图3所示,该装置包括:
数据库记录获取单元301,用于获取预更新的一条数据库记录;
第一主键定位单元302,用于利用主键定位所述数据库记录;
第一预更新字段更新单元303,用于更新所述第一预更新字段,控制内存中所述数据库记录的版本号加1;
第二主键定位单元304,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
数据库记录版本号获取单元305,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
第二预更新字段更新单元306,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
进一步的,本发明实施例提供的更新数据库记录的控制装置,还包括:
第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
第二预更新字段查找单元,用于查找所述第二预更新字段;
第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种更新数据库记录的控制方法,其特征在于,包括:
获取预更新的一条数据库记录;
利用主键定位所述数据库记录;
更新第一预更新字段,控制内存中所述数据库记录的版本号加1;
在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
2.根据权利要求1所述的方法,其特征在于,通过select语句获取预更新的一条所述数据库记录,所述select语句未加行级锁。
3.根据权利要求1所述的方法,其特征在于,所述更新第一预更新字段之前,还包括:
查找所述第一预更新字段;
获取用户输入的与所述第一预更新字段相对应的第一更新数据。
4.根据权利要求1所述的方法,其特征在于,所述控制内存中所述数据库记录的版本号加1之前,还包括:
读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
5.根据权利要求1所述的方法,其特征在于,所述更新所述第二预更新字段之前,还包括:
查找所述第二预更新字段;
获取用户输入的与所述第二预更新字段相对应的第二更新数据。
6.根据权利要求1所述的方法,其特征在于,当所述差值为0时,等待预设时间,直至所述差值为1。
7.一种更新数据库记录的控制装置,其特征在于,包括:
数据库记录获取单元,用于获取预更新的一条数据库记录;
第一主键定位单元,用于利用主键定位所述数据库记录;
第一预更新字段更新单元,用于更新第一预更新字段,控制内存中所述数据库记录的版本号加1;
第二主键定位单元,用于在更新所述第一预更新字段的过程中,当获取到对第二预更新字段的更新请求时,利用所述主键定位所述数据库记录;所述第二预更新字段位于所述数据库记录中;
数据库记录版本号获取单元,用于获取所述数据库记录在内存中的版本号以及在数据库中的版本号;
第二预更新字段更新单元,用于当所述数据库记录在内存中的版本号,减去所述数据库记录在数据库中的版本号所得到的差值为1时,更新所述第二预更新字段。
8.根据权利要求7所述的装置,其特征在于,还包括:
第一预更新字段查找单元,用于查找所述第一预更新字段,所述第一预更新字段位于所述数据库记录中;
第一更新数据获取单元,用于获取用户输入的与所述第一预更新字段相对应的第一更新数据。
9.根据权利要求7所述的装置,其特征在于,还包括:
存储单元,用于读取数据库中所述数据库记录的版本号,将所述数据库记录的版本号存至内存。
10.根据权利要求7所述的装置,其特征在于,还包括:
第二预更新字段查找单元,用于查找所述第二预更新字段;
第二更新数据获取单元,用于获取用户输入的与所述第二预更新字段相对应的第二更新数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410645604.1A CN104376070B (zh) | 2014-11-12 | 2014-11-12 | 更新数据库记录的控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410645604.1A CN104376070B (zh) | 2014-11-12 | 2014-11-12 | 更新数据库记录的控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104376070A CN104376070A (zh) | 2015-02-25 |
CN104376070B true CN104376070B (zh) | 2018-10-16 |
Family
ID=52554977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410645604.1A Active CN104376070B (zh) | 2014-11-12 | 2014-11-12 | 更新数据库记录的控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104376070B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653632B (zh) * | 2015-12-25 | 2019-05-31 | 北京奇虎科技有限公司 | 一种防止数据库并发的方法和装置 |
CN107292618B (zh) | 2016-04-11 | 2020-04-28 | 阿里巴巴集团控股有限公司 | 数据库中密文数据换密失败的处理方法和装置 |
CN109582666A (zh) * | 2018-09-29 | 2019-04-05 | 阿里巴巴集团控股有限公司 | 数据主键生成方法、装置、电子设备及存储介质 |
CN109446214B (zh) * | 2018-10-22 | 2021-08-06 | 普元信息技术股份有限公司 | 大数据背景下基于乐观锁机制实现主数据版本管理的***及方法 |
CN109862102B (zh) * | 2019-02-25 | 2022-01-28 | 交通银行股份有限公司 | 一种分布式数据多副本并发控制***、服务器及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850938B1 (en) * | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
CN103324716A (zh) * | 2013-06-25 | 2013-09-25 | 四川九洲电器集团有限责任公司 | 一种基于安卓***的应用程序数据库更新方法 |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度*** |
-
2014
- 2014-11-12 CN CN201410645604.1A patent/CN104376070B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6850938B1 (en) * | 2001-02-08 | 2005-02-01 | Cisco Technology, Inc. | Method and apparatus providing optimistic locking of shared computer resources |
CN103324716A (zh) * | 2013-06-25 | 2013-09-25 | 四川九洲电器集团有限责任公司 | 一种基于安卓***的应用程序数据库更新方法 |
CN104050029A (zh) * | 2014-05-30 | 2014-09-17 | 北京先进数通信息技术股份公司 | 一种任务调度*** |
Also Published As
Publication number | Publication date |
---|---|
CN104376070A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104376070B (zh) | 更新数据库记录的控制方法和装置 | |
CN101268439B (zh) | 数据库片段克隆和管理 | |
US9244953B2 (en) | Systems and methods for asynchronous schema changes | |
US8868531B2 (en) | Concurrent access methods for tree data structures | |
US8983982B2 (en) | Mechanism for deprecating object oriented data | |
US9679003B2 (en) | Rendezvous-based optimistic concurrency control | |
CN109923534A (zh) | 对具有未提交事务的数据库记录的多版本并发控制 | |
CN109002330A (zh) | 一种识别uefi os启动项的方法、装置及设备 | |
CN106575297A (zh) | 使用盲更新操作的高吞吐量数据修改 | |
CN104750773A (zh) | 基于重构与更新比较的索引维护 | |
CN104679847B (zh) | 一种构建在线实时更新海量音频指纹库的方法和设备 | |
US20090204570A1 (en) | Method and apparatus for performing multi-stage table updates | |
CN109977274A (zh) | 一种数据查询和验证方法、***、设备及存储介质 | |
JP6877435B2 (ja) | データベース動作方法及び装置 | |
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
CN103838787B (zh) | 一种对分布式数据仓库进行更新的方法和设备 | |
JP2005302038A (ja) | Bツリー中の連続キーの名前を変更する方法およびシステム | |
CN104317944B (zh) | 一种基于公式的时间戳动态调整并发控制方法 | |
CN104951462B (zh) | 用于管理数据库的方法和*** | |
CN107665255A (zh) | 键值数据库数据变更的方法、装置、设备及存储介质 | |
CN109271452A (zh) | Db2数据库数据同步更新方法及设备 | |
US10613988B2 (en) | Purging storage partitions of databases | |
CN103257971B (zh) | 终端和文件管理方法 | |
CN104657164B (zh) | 软件升级处理方法和装置 | |
CN110032543A (zh) | 一种存储文件***的管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |