CN111090663A - 事务并发控制方法、装置、终端设备及介质 - Google Patents
事务并发控制方法、装置、终端设备及介质 Download PDFInfo
- Publication number
- CN111090663A CN111090663A CN201911353223.5A CN201911353223A CN111090663A CN 111090663 A CN111090663 A CN 111090663A CN 201911353223 A CN201911353223 A CN 201911353223A CN 111090663 A CN111090663 A CN 111090663A
- Authority
- CN
- China
- Prior art keywords
- target object
- data
- transaction
- version
- target
- 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.)
- Granted
Links
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
-
- 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/21—Design, administration or maintenance of databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于数据库技术领域,尤其涉及一种事务并发控制方法、装置、终端设备及介质。该方法通过获取针对目标对象的写事务,并对记录区中目标对象对应的存储区域进行相应操作;获取针对目标对象的读事务的目标版本信息,据此从日志区中获取与目标版本信息对应的历史版本数据,历史版本数据为目标对象在记录区产生的不同版本的历史数据。本申请在记录区和日志区两个区域中分别进行针对同一目标对象的写事务与读事务,可以使得写事务与读事务并发进行,在记录区进行写事务不会影响读事务对日志区数据的读取,同时,日志区中存储有在记录区出现过了历史版本数据,不影响读事务对历史版本数据的读取,避免了脏读和幻读,可以实现数据的重复读。
Description
技术领域
本申请属于数据库技术领域,尤其涉及一种事务并发控制方法、装置、终端设备及介质。
背景技术
原始的内存数据库数据访问中,采用读写锁的形式,每次读数据时,都会检查是否有写锁,若有,就会等待写结束;同时写进程写数据时,都会把所有的读进程阻塞,优先把数据写完,造成读进程一段时间不能提供服务。而目前的内存数据库已经支持多进程并发的一写多读模式,即一个进程进行读写,其它进程只读,在实现读写进程同时进行的过程中,会出现脏读的问题,为了避免出现脏读,一般内存数据库中采用的事务隔离级别为Readcommitted即一个事务要等另一个事务提交后才能读取数据,但一个事务有可能读到至少两种不同的结果,存在幻读的问题。
发明内容
本申请实施例提供了一种事务并发控制方法、装置、终端设备及介质,可以解决现有的内存数据库并发读写时存在幻读的问题。
第一方面,本申请实施例提供了一种事务并发控制方法,所述事务并发控制方法包括:
获取针对目标对象的写事务;
根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作;
获取针对所述目标对象的读事务;
根据所述读事务,获取所述目标对象的目标版本信息;
根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据,其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
第二方面,本申请实施例提供了一种事务并发控制装置,所述事务并发控制装置包括:
写事务获取模块,用于获取针对目标对象的写事务;
操作模块,用于根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作;
读事务获取模块,用于获取针对所述目标对象的读事务;
版本信息获取模块,用于根据所述读事务,获取所述目标对象的目标版本信息;
版本数据获取模块,用于根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据,其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的事务并发控制方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的事务并发控制方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所述的事务并发控制方法。
本申请实施例与现有技术相比存在的有益效果是:本申请在记录区和日志区两个区域中分别进行针对同一目标对象的写事务与读事务,可以使得写事务与读事务并发进行,在记录区进行写事务不会影响读事务对日志区数据的读取,同时,日志区中存储有在记录区出现过了历史版本数据,不影响读事务对历史版本数据的读取,避免了脏读和幻读,可以实现数据的重复读,例如,写事务将记录区中“a=3”更新为“a=4”,更新完成后,日志区存在历史版本数据“a=3”,读事务可以根据该“a=3”的版本在日志区读取到“a=3”,而不会读取到“a=4”。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一提供的一种事务并发控制方法的流程示意图;
图2是本申请实施例一的事务并发控制方法的插入操作之后记录区和日志区的变化示例图;
图3是本申请实施例一的事务并发控制方法的更新操作之后记录区和日志区的变化示例图;
图4是本申请实施例一的事务并发控制方法的删除操作之后记录区和日志区的变化示例图;
图5是本申请实施例一的事务并发控制方法的原理示例图;
图6是本申请实施例一的事务并发控制方法的日志区分段示例图;
图7是本申请实施例二提供的一种事务并发控制装置的结构示意图;
图8是本申请实施例三提供的一种终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的一种事务并发控制方法可以应用于掌上电脑、桌上型计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、云端服务器、个人数字助理(personal digital assistant,PDA)等终端设备上,上述终端设备中设置有数据库,当有事务对数据库进行访问时运行事务并发控制方法,该数据库可以为内存数据库,本申请实施例对终端设备的具体类型不作任何限制。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
参见图1,是本申请实施例一提供的一种事务并发控制方法的流程示意图,该事务并发控制方法可用于终端设备,如图所示,该事务并发控制方法可以包括以下步骤:
步骤S101,获取针对目标对象的写事务。
其中,写事务可以是指针对终端设备的数据库、存储器、磁盘等进行写入操作的进程,该写事务可以包括插入、修改、删除等操作,所有的写事务都有其针对的数据对象,本申请中事务并发控制方法主要围绕一个数据对象进行说明,称该数据对象为目标对象,目标对象在终端设备的数据库等存储空间中存在自身对应的存储区域,若该存储区域为空,则说明还未写入数据,目标对象对应的数据为无,若该存储区域不为空,则该存储区域中的数据即为目标对象对应的数据。
步骤S102,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作。
本申请的事务并发控制方法将终端设备的数据库等存储空间分为至少两个部分,一部分定义为记录区,一部分定义为日志区,其中,在记录区中写事务可以进行相应操作以修改目标对象对应的存储区域,该记录区中目标对象仅对应一个存储区域,写事务的所有操作都是在该存储区域中开展,例如,写事务的操作包括但不限于插入操作、更新操作和删除操作,插入操作可以是对存储区域插入数据,更新操作可以是修改存储区域的数据,删除操作可以是删除存储区域的数据;另外,针对目标对象的第一次写事务可能是插入操作,即在进行插入操作之前,目标对象对应的存储区域为空,此时目标对象对应的数据为无。
可选的,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为插入操作,则从所述写事务中获取所述目标对象的待插入数据;
将所述待插入数据存储至记录区中所述目标对象对应的存储区域。
其中,写事务可以包括针对目标对象的插入操作指令和待插入数据,例如,待插入数据为“a=3”,将“a=3”插入记录区中目标对象对应的存储区域,当写事务提交(即插入操作完成),记录区中该目标对象对应的存储区域的当前所存储的数据为“a=3”;当然,该待插入数据对应一个版本信息,该版本信息是用于描述对应待插入数据的版本的信息,该版本信息可以是待插入数据自身带有的信息,也可以是伴随写事务的操作生成的,例如,针对目标对象,第一次写事务操作后,记录区中针对该目标对象的数据的版本为1。
可选的,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为更新操作,则从所述写事务中获取所述目标对象的目标数据;
将记录区中所述目标对象对应的存储区域当前所存储的数据更新为所述目标数据。
其中,写事务可以包括针对目标对象的更新操作指令和目标数据,例如,目标数据为“a=4”,将记录区中目标对象对应的存储区域的“a=3”更新为“a=4”,当写事务提交(即更新操作完成),记录区中该目标对象对应的存储区域的当前所存储的数据为“a=4”;当然,该目标数据对应一个版本信息,该版本信息是用于描述对应目标数据的版本的信息,该版本信息可以是目标数据自身带有的信息,也可以是伴随写事务的操作生成的,例如,针对目标对象,第一次写事务操作为插入操作,记录区中针对该目标对象的数据的版本为1,第二次写事务操作为更新操作,该目标对象的数据的版本更新为2。
可选的,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为删除操作,则删除记录区中所述目标对象对应的存储区域当前所存储的数据。
其中,写事务可以包括针对目标对象的删除操作指令,例如,将更新操作后记录区中目标对象对应的存储区域中的“a=4”删除,当写事务提交(即删除操作完成),记录区中该目标对象对应的存储区域的当前所存储的数据为无;当然,即使记录区中该目标对象对应的存储区域的当前所存储的数据为无,该数据依然对应一个版本信息,该版本信息是用于描述对应该数据的版本的信息,该版本信息可以是写事务(删除操作的写事务)中自身带有的信息,也可以是伴随写事务的操作生成的,例如,针对目标对象,第一次写事务插入操作后,记录区中针对该目标对象的数据的版本为1,第二次写事务更新操作后,记录区中针对该目标对象的数据的版本为2,第三次写事务删除操作后,记录区中针对该目标对象的数据的版本为3。
步骤S103,获取针对所述目标对象的读事务。
其中,读事务可以是指针对终端设备的数据库、存储器、磁盘等进行读取操作的进程,所有的读事务都有其针对的数据对象,本申请的事务并行控制方法主要围绕一个数据对象进行说明,称该数据对象为目标对象,一般事务并行指的是一写多读模式,也就是针对该目标对象可以同时存在一个写事务和多个读事务。
由于读事务和写事务针对的目标对象所在区域不同,因此,本申请实施例中对读事务与写事务的先后顺序没有限定,既可以在执行步骤S102过程中执行步骤S103、步骤104和步骤105,也可以在执行步骤S105过程中执行步骤S101和步骤S102,另外,步骤S101和步骤S102可以在没有读事务存在时执行,当然,步骤S103、步骤104和步骤105也可以在没有写事务存在时执行。
步骤S104,根据所述读事务,获取所述目标对象的目标版本信息。
其中,读事务包括但不限于要读取的目标对象的信息和该目标对象的目标版本信息,根据目标对象和目标版本信息即可确定要读取的数据,例如,读取目标对象A的第2个版本。
步骤S105,根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据。
其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
由步骤S102可知,日志区与记录区为数据库中的两个区域,写事务在记录区中进行相应操作,读事务在日志区中进行读取操作;日志区用于存储读事务的目标对象的历史版本数据,该历史版本数据为其目标对象在记录区产生的不同版本的历史数据,可以通过快照技术等实现,另外,该历史数据为读事务产生之前记录区中产生数据,且在记录区中只有写事务提交(即应操作完成)才会产生数据。
可选的,在所述写事务的操作类型为更新操作或删除操作时,在对记录区中所述目标对象对应的存储区域进行相应操作之前,还包括:
获取记录区中所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息;
将所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息进行关联,获得关联数据;
相应的,在对记录区中所述目标对象对应的存储区域进行相应操作之后,还包括:
将所述关联数据存储至所述日志区。
其中,为了将历史数据存入日志区中作为历史版本数据,在写事务对记录区中目标对象对应的存储区域进行相应操作之前,将记录区中目标对象对应的存储区域当前所存储的数据以及该数据的版本信息进行关联记录,在写事务提交(即相应操作完成)之后,该目标对象对应的存储区域当前所存储的数据和该数据的版本信息成为日志区中历史版本数据,例如,写事务为更新操作,写事务中的目标数据为“a=4”,版本号为3,目标对象对应的存储区域当前所存储的数据为“a=3”,版本号为2,在更新操作完成之后,将“a=3”及对应版本号2存入日志区,此时,记录区中目标对象对应的存储区域当前所存储的数据为“a=4”,版本号为3,在更新操作完成之后,读事务能够读取到版本号为2的数据,而且,由于读事务中目标版本信息确定,因此,其读取的信息不会随着时间而变化,不会出现脏读和幻读。
如图2至图4所示,为本申请实施例一的事务并发控制方法的相关操作之后存储变化示例图,记录区和日志区中针对目标对象的存储区域包括但不限于记录ID、删除标记、数据版本、回滚指针、操作类型和字段(col1、col2…)等信息,参见图2为本申请实施例一的事务并发控制方法的插入操作之后记录区和日志区的变化示例图,当写事务的相关操作为插入操作时,记录区中目标对象的存储区域中数据版本填1、操作类型填A,日志区中目标对象的第一存储区域中数据版本填1、操作类型填A、回滚指针填NULL(无在先数据版本),将日志区中目标对象的第一存储区域的首地址存放在记录区的回滚指针(xxx)中,便于实现数据版本回滚;当然,为了将日志区与记录区版本保持同步,因为插入操作前记录区中目标对象的数据为无,所以插入操作后日志区中目标对象的第一存储区域中数据版本可以填0。
参见图3为本申请实施例一的事务并发控制方法的更新操作之后记录区和日志区的变化示例图;当写事务的相关操作为更新操作时,记录区中目标对象的存储区域中数据版本填2、操作类型填U,日志区中目标对象的第二存储区域中数据版本填2、操作类型填U、回滚指针填xxx1(指向日志区中目标对象的第一存储区域),将日志区中目标对象的第二存储区域的首地址存放在记录区的回滚指针(xxx2)中,便于实现数据版本回滚;当然,为了将日志区与记录区版本保持同步,更新操作后日志区中目标对象的第二存储区域中数据版本可以填1,意思是指数据版本为1的历史数据。
参见图4为本申请实施例一的事务并发控制方法的删除操作之后记录区和日志区的变化示例图;当写事务的相关操作为删除操作时,记录区中目标对象的存储区域中数据版本填3、操作类型填U,日志区中目标对象的第三存储区域中数据版本填3、操作类型填U、回滚指针填xxx2(指向日志区中目标对象的第二存储区域),将日志区中目标对象的第三存储区域的首地址存放在记录区的回滚指针(xxx3)中,便于实现数据版本回滚;当然,为了将日志区与记录区版本保持同步,更新操作后日志区中目标对象的第三存储区域中数据版本可以填2,意思是指数据版本为2的历史数据。
参见图5,为本申请实施例一的事务并发控制方法的原理示例图,如图所示,针对目标对象包括一个读写进程、只读进程1和只读进程2,读写进程可以进行读事务和写事务,本申请中读写进程指进行写事务,只读进程仅能够进行读事务;时间顺序为T1、T2、T3、T4、T5和T6,先启动只读进程1,开启T1读事务,由于该目标对象在T1之前没有数据插入,在日志区中不存在该T1读事务的目标版本信息对应的数据,因此,读到的数据为无;再启动读写进程,在读写进程中开启T2写事务,插入数据“a=3”,版本号为1,并在时一定时间后提交(T2提交,即插入操作完成);读写进程中再开启T3写事务,更新数据为“a=4”,版本号为2,同时在T3写事务提交后,只读进程1开启T4读事务,若T4读事务的目标版本信息为1,则只读进程1的T4读事务读到的数据是“a=3”,不会读到“a=4”这个脏数据;读写进程启动T5写事务,删除数据“a”,再启动只读进程2,开启T6读事务,若T6读事务的目标版本信息为2,T6读事务读取到的数据为“a=4”,往后T6读事务读到的数据依然是“a=4”,不会读不到数据,即读写进程的删除并没有影响T6读事务。
可选的,所述日志区包括至少一个段内存,所述将所述关联数据存储至所述日志区包括:
获取所述日志区中所述目标对象对应的段内存;
判断所述目标对象对应的段内存是否有空间存储所述关联数据;
若所述目标对象对应的段内存有空间存储所述关联数据,则将所述关联数据存储至所述目标对象对应的段内存。
日志区通过分段来管理,其中,在日志区中针对目标对象按需申请段内存,每个段内存的大小为128M;针对目标对象可以存在多个段内存,如图6所示,该多个段内存中除了第一个段内存外,每个段内存包括段的描述头和内容区,第一个段内存多了一个全部段的全段描述信息;针对目标对象的段内存,当段内存不够时,且以前的段内存都是有效的,需重新申请一个段内存。
可选的,版本信息为版本号,在获取所述目标对象的目标版本信息之后,还包括:
若所述读事务的数量为多个,则从多个目标版本号中获取最小目标版本号;
获取所述目标对象对应的段内存中所有版本号的最大版本号;
若所述最大版本号小于所述最小目标版本号,则清空所述目标对象对应的段内存中所有数据。
其中,如果版本信息为版本号,而且在进行写事务和读事务时版本号为越来越大,则针对目标对象的段内存,每个段内存都会有一个最大版本号,描述的是这个段内存中目标对象的最大版本,如果这个最大版本号小于正在进行的所有读事务中目标版本号中最小目标版本好,说明这个段内存不会再有读事务访问,这个段内存可以重新利用以写入历史版本数据,有效的清除了无用的历史版本数据,保证了日志区存储空间的可持续使用。
本申请在记录区和日志区两个区域中分别进行针对同一目标对象的写事务与读事务,可以使得写事务与读事务并发进行,在记录区进行写事务不会影响读事务对日志区数据的读取,同时,日志区中存储有在记录区出现过了历史版本数据,不影响读事务对历史版本数据的读取,避免了脏读和幻读,可以实现数据的重复读,例如,写事务将记录区中“a=3”更新为“a=4”,更新完成后,日志区存在历史版本数据“a=3”,读事务可以根据该“a=3”的版本在日志区读取到“a=3”,而不会读取到“a=4”。
对应于上文实施例的事务并发控制方法,图7示出了本申请实施例二提供的事务并发控制装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参见图7,该事务并发控制装置包括:
写事务获取模块71,用于获取针对目标对象的写事务;
操作模块72,用于根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作;
读事务获取模块73,用于获取针对所述目标对象的读事务;
版本信息获取模块74,用于根据所述读事务,获取所述目标对象的目标版本信息;
版本数据获取模块75,用于根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据,其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
可选的,该操作模块72具体用于:
若所述写事务的操作类型为插入操作,则从所述写事务中获取所述目标对象的待插入数据;
将所述待插入数据存储至记录区中所述目标对象对应的存储区域。
可选的,该操作模块72具体用于:
若所述写事务的操作类型为更新操作,则从所述写事务中获取所述目标对象的目标数据;
将记录区中所述目标对象对应的存储区域当前所存储的数据更新为所述目标数据。
可选的,该操作模块72具体用于:
若所述写事务的操作类型为删除操作,则删除记录区中所述目标对象对应的存储区域当前所存储的数据。
可选的,该事务并发控制装置还包括:
当前数据获取模块,用于在所述写事务的操作类型为更新操作或删除操作时,在对记录区中所述目标对象对应的存储区域进行相应操作之前,获取记录区中所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息;
数据关联模块,用于将所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息进行关联,获得关联数据;
数据存储模块,用于在对记录区中所述目标对象对应的存储区域进行相应操作之后,将所述关联数据存储至所述日志区。
可选的,所述日志区包括至少一个段内存,该存储处理模块包括:
段内存获取单元,用于获取所述日志区中所述目标对象对应的段内存;
空间判断单元,用于判断所述目标对象对应的段内存是否有空间存储所述关联数据;
存储处理单元,用于若所述目标对象对应的段内存有空间存储所述关联数据,则将所述关联数据存储至所述目标对象对应的段内存。
可选的,版本信息为版本号,该事务并发控制装置还包括:
第一获取模块,用于在获取所述目标对象的目标版本信息之后,若所述读事务的数量为多个,则从多个目标版本号中获取最小目标版本号;
第二获取模块,用于获取所述目标对象对应的段内存中所有版本号的最大版本号;
数据清空模块,用于若所述最大版本号小于所述最小目标版本号,则清空所述目标对象对应的段内存中所有数据。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图8为本申请实施例三提供的一种终端设备的结构示意图。如图8所示,该实施例的终端设备8包括:至少一个处理器80(图8中仅示出一个)处理器、存储器81以及存储在存储器81中并可在至少一个处理器80上运行的计算机程序82,处理器80执行计算机程序82时实现上述任意各个事务并发控制方法实施例中的步骤。
该终端设备可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是终端设备8的举例,并不构成对终端设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等;又如,RGB相机、机械臂等终端设备实体中需要设置的部件。
所称处理器80可以是中央处理单元(Central Processing Unit,CPU),该处理器80还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81在一些实施例中可以是终端设备8的内部存储单元,例如终端设备8的硬盘或内存。所述存储器81在另一些实施例中也可以是终端设备8的外部存储设备,例如终端设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括终端设备8的内部存储单元也包括外部存储设备。所述存储器81用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
本申请实现上述实施例方法中的全部或部分流程,也可以通过一种计算机程序产品来完成,当所述计算机程序产品在终端设备上运行时,使得所述终端设备执行时实现可实现上述方法实施例中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种事务并发控制方法,其特征在于,所述事务并发控制方法包括:
获取针对目标对象的写事务;
根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作;
获取针对所述目标对象的读事务;
根据所述读事务,获取所述目标对象的目标版本信息;
根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据,其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
2.如权利要求1所述的事务并发控制方法,其特征在于,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为插入操作,则从所述写事务中获取所述目标对象的待插入数据;
将所述待插入数据存储至记录区中所述目标对象对应的存储区域。
3.如权利要求1所述的事务并发控制方法,其特征在于,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为更新操作,则从所述写事务中获取所述目标对象的目标数据;
将记录区中所述目标对象对应的存储区域当前所存储的数据更新为所述目标数据。
4.如权利要求1所述的事务并发控制方法,其特征在于,根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作包括:
若所述写事务的操作类型为删除操作,则删除记录区中所述目标对象对应的存储区域当前所存储的数据。
5.如权利要求1所述的事务并发控制方法,其特征在于,在所述写事务的操作类型为更新操作或删除操作时,在对记录区中所述目标对象对应的存储区域进行相应操作之前,还包括:
获取记录区中所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息;
将所述目标对象对应的存储区域当前所存储的数据以及该数据的版本信息进行关联,获得关联数据;
相应的,在对记录区中所述目标对象对应的存储区域进行相应操作之后,还包括:
将所述关联数据存储至所述日志区。
6.如权利要求5所述的事务并发控制方法,其特征在于,所述日志区包括至少一个段内存,所述将所述关联数据存储至所述日志区包括:
获取所述日志区中所述目标对象对应的段内存;
判断所述目标对象对应的段内存是否有空间存储所述关联数据;
若所述目标对象对应的段内存有空间存储所述关联数据,则将所述关联数据存储至所述目标对象对应的段内存。
7.如权利要求6所述的事务并发控制方法,其特征在于,版本信息为版本号,在获取所述目标对象的目标版本信息之后,还包括:
若所述读事务的数量为多个,则从多个目标版本号中获取最小目标版本号;
获取所述目标对象对应的段内存中所有版本号的最大版本号;
若所述最大版本号小于所述最小目标版本号,则清空所述目标对象对应的段内存中所有数据。
8.一种事务并发控制装置,其特征在于,所述事务并发控制装置包括:
写事务获取模块,用于获取针对目标对象的写事务;
操作模块,用于根据所述写事务,对记录区中所述目标对象对应的存储区域进行相应操作;
读事务获取模块,用于获取针对所述目标对象的读事务;
版本信息获取模块,用于根据所述读事务,获取所述目标对象的目标版本信息;
版本数据获取模块,用于根据所述目标对象的目标版本信息,从日志区中获取与所述目标对象的目标版本信息对应的历史版本数据,其中,所述历史版本数据为所述目标对象在所述记录区产生的不同版本的历史数据。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的事务并发控制方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的事务并发控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911353223.5A CN111090663B (zh) | 2019-12-25 | 2019-12-25 | 事务并发控制方法、装置、终端设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911353223.5A CN111090663B (zh) | 2019-12-25 | 2019-12-25 | 事务并发控制方法、装置、终端设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111090663A true CN111090663A (zh) | 2020-05-01 |
CN111090663B CN111090663B (zh) | 2023-07-07 |
Family
ID=70397098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911353223.5A Active CN111090663B (zh) | 2019-12-25 | 2019-12-25 | 事务并发控制方法、装置、终端设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090663B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984379A (zh) * | 2020-07-14 | 2020-11-24 | 上海金仕达软件科技有限公司 | 读写事务控制方法、系统、终端设备及存储介质 |
CN112231070A (zh) * | 2020-10-15 | 2021-01-15 | 北京金山云网络技术有限公司 | 数据写入、读取方法、装置及服务器 |
CN112380193A (zh) * | 2020-12-09 | 2021-02-19 | 北京海量数据技术股份有限公司 | 数据库中历史数据的处理方法、装置及系统 |
CN112597123A (zh) * | 2020-11-20 | 2021-04-02 | 贝壳技术有限公司 | 数据多版本动态切换方法及装置 |
CN113032344A (zh) * | 2020-08-25 | 2021-06-25 | 广州锦行网络科技有限公司 | 一种远程登录日志记录的清理方法 |
CN113986974A (zh) * | 2021-10-27 | 2022-01-28 | 建信金融科技有限责任公司 | 一种数据库事务管理方法及装置、恢复方法及装置 |
CN114385584A (zh) * | 2021-12-10 | 2022-04-22 | 阿里巴巴(中国)有限公司 | 一种数据写入方法及一种数据读取方法 |
CN114461605A (zh) * | 2022-01-10 | 2022-05-10 | 北京元年科技股份有限公司 | 内存多维数据库的事务数据多版本实现方法、装置及设备 |
CN115827660A (zh) * | 2023-02-14 | 2023-03-21 | 本原数据(北京)信息技术有限公司 | 数据更新方法、装置、电子设备及非易失性存储介质 |
WO2023124421A1 (zh) * | 2021-12-31 | 2023-07-06 | 深圳市兆珑科技有限公司 | 事务并发控制方法、装置、电子设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015101025A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
CN108363806A (zh) * | 2018-03-01 | 2018-08-03 | 上海达梦数据库有限公司 | 数据库的多版本并发控制方法、装置、服务器及存储介质 |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN109684338A (zh) * | 2018-11-20 | 2019-04-26 | 深圳花儿数据技术有限公司 | 一种存储系统的数据更新方法 |
CN110457292A (zh) * | 2019-08-12 | 2019-11-15 | 网易(杭州)网络有限公司 | 游戏地图的管理方法、装置、设备及存储介质 |
-
2019
- 2019-12-25 CN CN201911353223.5A patent/CN111090663B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015101025A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
CN108363806A (zh) * | 2018-03-01 | 2018-08-03 | 上海达梦数据库有限公司 | 数据库的多版本并发控制方法、装置、服务器及存储介质 |
CN109471851A (zh) * | 2018-10-17 | 2019-03-15 | 上海达梦数据库有限公司 | 数据处理方法、装置、服务器和存储介质 |
CN109684338A (zh) * | 2018-11-20 | 2019-04-26 | 深圳花儿数据技术有限公司 | 一种存储系统的数据更新方法 |
CN110457292A (zh) * | 2019-08-12 | 2019-11-15 | 网易(杭州)网络有限公司 | 游戏地图的管理方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
李文昊;李海芳;: "确定性分布式数据库中长事务处理方法研究" * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984379A (zh) * | 2020-07-14 | 2020-11-24 | 上海金仕达软件科技有限公司 | 读写事务控制方法、系统、终端设备及存储介质 |
CN113032344A (zh) * | 2020-08-25 | 2021-06-25 | 广州锦行网络科技有限公司 | 一种远程登录日志记录的清理方法 |
CN112231070A (zh) * | 2020-10-15 | 2021-01-15 | 北京金山云网络技术有限公司 | 数据写入、读取方法、装置及服务器 |
CN112597123A (zh) * | 2020-11-20 | 2021-04-02 | 贝壳技术有限公司 | 数据多版本动态切换方法及装置 |
CN112380193A (zh) * | 2020-12-09 | 2021-02-19 | 北京海量数据技术股份有限公司 | 数据库中历史数据的处理方法、装置及系统 |
CN113986974A (zh) * | 2021-10-27 | 2022-01-28 | 建信金融科技有限责任公司 | 一种数据库事务管理方法及装置、恢复方法及装置 |
CN114385584A (zh) * | 2021-12-10 | 2022-04-22 | 阿里巴巴(中国)有限公司 | 一种数据写入方法及一种数据读取方法 |
WO2023124421A1 (zh) * | 2021-12-31 | 2023-07-06 | 深圳市兆珑科技有限公司 | 事务并发控制方法、装置、电子设备及可读存储介质 |
CN114461605A (zh) * | 2022-01-10 | 2022-05-10 | 北京元年科技股份有限公司 | 内存多维数据库的事务数据多版本实现方法、装置及设备 |
CN115827660A (zh) * | 2023-02-14 | 2023-03-21 | 本原数据(北京)信息技术有限公司 | 数据更新方法、装置、电子设备及非易失性存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111090663B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090663B (zh) | 事务并发控制方法、装置、终端设备及介质 | |
JP5211514B2 (ja) | 更新装置、更新方法および更新プログラム | |
US10261869B2 (en) | Transaction processing using torn write detection | |
US11080260B2 (en) | Concurrent reads and inserts into a data structure without latching or waiting by readers | |
US20190129894A1 (en) | Database Transaction Processing Method, Client, and Server | |
US7849060B2 (en) | System and method for managing log information for transaction | |
KR102287677B1 (ko) | 데이터 액세스 방법, 장치, 기기 및 저장 매체 | |
US8108356B2 (en) | Method for recovering data in a storage system | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
CN113407376B (zh) | 一种数据恢复方法、装置及电子设备 | |
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
CN110019063B (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
US10198352B2 (en) | Efficient pointer swizzling for persistent objects | |
US11983159B2 (en) | Systems and methods for management of a log-structure | |
US9898468B2 (en) | Single pass file system repair with copy on write | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
CN111984379B (zh) | 读写事务控制方法、系统、终端设备及存储介质 | |
CN114443672A (zh) | 一种多版本并发控制方法、装置、设备及存储介质 | |
CN112231105A (zh) | 基于区块链的区块写入方法及系统 | |
CN118349579B (zh) | 一种数据处理方法和数据处理装置 | |
US8966220B2 (en) | Optimizing large page processing | |
CN107967222A (zh) | 一种SPI-Nand查找数据页的方法及装置 | |
CN107562642B (zh) | 检查点淘汰方法和装置 | |
CN117785878A (zh) | 数据库表重命名与查询方法、装置及设备 | |
CN114676165A (zh) | 数据的查询方法、装置、电子设备及计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: No. 210, Liangjing Road, free trade zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Jinshida Software Technology Co.,Ltd. Address before: No. 210, Liangjing Road, free trade zone, Pudong New Area, Shanghai, 200120 Applicant before: Shanghai Kingstar Software Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |