数据库处理事务的方法及装置制造方法及图纸

技术编号:24289730 阅读:31 留言:0更新日期:2020-05-26 20:04
本发明专利技术提供了一种数据库处理事务的方法及装置,其中,该方法包括:先后接收到第一事务的处理指令和第二事务的处理指令;根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和/或是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关;在所述第一事务和所述第二事务不相关的情况下,并行执行所述第一事务的处理指令和所述第二事务的处理指令;在所述第一事务和所述第二事务相关的情况下,执行完所述第一事务的所有处理指令后再执行所述第二事务的处理指令。通过上述方案能够在保证事务隔离的情况下提高硬件数据库处理事务的效率。

The method and device of database transaction

【技术实现步骤摘要】
数据库处理事务的方法及装置
本专利技术涉及计算机
,尤其涉及一种数据库处理事务的方法及装置。
技术介绍
随着数字社会的到来,各种应用场景对海量数据的调取愈发频繁,对数据库加速处理的需求更丰富,人们对数据的即时处理需求大大增加,因此数据库加速的需求迫在眉睫。当前阶段,采用FPGA(FieldProgrammableGateArray,现场可编程门阵列)、ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路)等可定制或专用硬件加速数据库的处理速度是一个趋势,为了更大程度的挖掘专用加速器的能力,自然希望它能够支持多个线程或进程向其发送处理指令和数据。这时数据库中就表现为支持同时处理多个事务,由于不同的事务可能要读取或修改同一个表,保持事务之间的隔离性是保证数据库ACID(Atomicity/Consistency/Isolation/Durability,原子性/一致性/隔离性/持久性)特性的必要条件。保持每个事务之间互相不打扰本质是保证每个事务访问或修改数据库的顺序要按照它们被提交到硬件的先后顺序。现有的通用技术是当CPU(CentralProcessingUnit,中央处理器)运行数据库时候,允许每个事务对在读取表的时候先要对表上锁,以防止别的事务干扰自己的表。常见的锁有共享锁,排他锁等,一个表可以被加上很多共享锁,但只能被加上一个排他锁。这样,保证了每个表对于当前事务来说都是独享的,如果一个事务试图读取一个已经被上了排他锁的表,这个事务就会阻塞。因此不会出现多个事务修改一个表的情况出现,但允许多个表同时读取一个表。遗憾的是,在专用加速硬件数据库端是无法像CPU上那样的直接加锁的,但又必须提供硬件支持,以确定硬件端指令是否可以读或修改硬件内存中的表数据。
技术实现思路
本专利技术提供了一种数据库处理事务的方法及装置,以在保证事务隔离的情况下提高硬件数据库处理事务的效率。为了达到上述目的,本专利技术采用以下方案实现:根据本专利技术实施例的一个方面,提供了一种数据库处理事务的方法,包括:先后接收到第一事务的处理指令和第二事务的处理指令;根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和/或是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关;在所述第一事务和所述第二事务不相关的情况下,并行执行所述第一事务的处理指令和所述第二事务的处理指令;在所述第一事务和所述第二事务相关的情况下,执行完所述第一事务的所有处理指令后再执行所述第二事务的处理指令。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表存在交集的情况下,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令,则确认所述第一事务和所述第二事务不相关,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中至少一个存在修改类型指令,则确认所述第一事务和所述第二事务相关。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集的情况下,确认所述第一事务和所述第二事务不相关。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中至少一个存在修改类型指令的情况下,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表存在交集,则确认所述第一事务和所述第二事务相关,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集,则确认所述第一事务和所述第二事务不相关。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令的情况下,确认所述第一事务和所述第二事务不相关。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:根据所述第一事务的所有处理指令中是否存在修改类型的操作关键词,确认所述第一事务的所有处理指令中是否存在修改类型指令;根据所述第二事务的所有处理指令中是否存在修改类型的操作关键词,确认所述第二事务的所有处理指令中是否存在修改类型指令。在一些实施例中,修改类型的操作关键词包括插入操作关键词、删除操作关键词、及更改操作关键词。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集,确认所述第一事务和所述第二事务是否相关,包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集的情况下,确认所述第一事务和所述第二事务不相关。在一些实施例中,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令的情况下,确认所述第一事务和所述第二事务不相关。在一些实施例中,先后接收到第一事务的处理指令和第二事务的处理指令,包括:先后接收到第一事务的处理指令和第二事务的处理指令,并依据事务标识将第一事务的处理指令和第二事务的处理指令分别存入第一指令缓存队列和第二指令缓存队列。在所述第一事务和所述第二事务不相关的情况下,并行执行所述第一事务的处理指令和所述第二事务的处理指令,包括:在所述第一事务和所述第二事务相关的情况下,利用不同线程并行执行第一指令缓存队列和第二指令缓存队列中的处理指令,以并行处理所述第一事务和所述第二事务。在所述第一事务和所述第二事务相关的情况下,执行完所述第一事务的所有处理指令后再执行所述第二事务的处理指令,包括:在所述第一事务和所述第二事务相关的情况下,执行第一指令缓存队列中的处理指令直到根据所述第一事务的指令结束标识确认所述第一事务的所有处理指令执行完毕后,再执行第二指令缓存队列中的处理指令,以处理所述第二事务。在一些实施例中,先后接收到第一事务的处理指令和第二事务的处理指令,包括:先接收到第一事务的所有处理指令后,再接收到第二事务的处理指令。在一些实施例中,先后接收到第一事务的处理指令和第二事务的处理指令之后,还包括:接收到第本文档来自技高网
...

【技术保护点】
1.一种数据库处理事务的方法,其特征在于,包括:/n先后接收到第一事务的处理指令和第二事务的处理指令;/n根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和/或是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关;/n在所述第一事务和所述第二事务不相关的情况下,并行执行所述第一事务的处理指令和所述第二事务的处理指令;在所述第一事务和所述第二事务相关的情况下,执行完所述第一事务的所有处理指令后再执行所述第二事务的处理指令。/n

【技术特征摘要】
1.一种数据库处理事务的方法,其特征在于,包括:
先后接收到第一事务的处理指令和第二事务的处理指令;
根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和/或是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关;
在所述第一事务和所述第二事务不相关的情况下,并行执行所述第一事务的处理指令和所述第二事务的处理指令;在所述第一事务和所述第二事务相关的情况下,执行完所述第一事务的所有处理指令后再执行所述第二事务的处理指令。


2.如权利要求1所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表存在交集的情况下,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令,则确认所述第一事务和所述第二事务不相关,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中至少一个存在修改类型指令,则确认所述第一事务和所述第二事务相关。


3.如权利要求2所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集的情况下,确认所述第一事务和所述第二事务不相关。


4.如权利要求1所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中至少一个存在修改类型指令的情况下,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表存在交集,则确认所述第一事务和所述第二事务相关,若所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集,则确认所述第一事务和所述第二事务不相关。


5.如权利要求4所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令的情况下,确认所述第一事务和所述第二事务不相关。


6.如权利要求2或4所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集和是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,还包括:
根据所述第一事务的所有处理指令中是否存在修改类型的操作关键词,确认所述第一事务的所有处理指令中是否存在修改类型指令;根据所述第二事务的所有处理指令中是否存在修改类型的操作关键词,确认所述第二事务的所有处理指令中是否存在修改类型指令。


7.如权利要求6所述的数据库处理事务的方法,其特征在于,修改类型的操作关键词包括插入操作关键词、删除操作关键词、及更改操作关键词。


8.如权利要求1所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表是否存在交集,确认所述第一事务和所述第二事务是否相关,包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中所访问数据表不存在交集的情况下,确认所述第一事务和所述第二事务不相关。


9.如权利要求1所述的数据库处理事务的方法,其特征在于,根据所述第一事务的所有处理指令和所述第二事务的所有处理指令中是否存在修改类型指令,确认所述第一事务和所述第二事务是否相关,包括:
在确认所述第一事务的所有处理指令和所述第二事务的所有处理指令中均不存在修改类型指令的情况下,确认所述第一事务和所述第二事务不相关。


10.如权利要求1所述的数据库处理事务的方法,其特征在于,
先后接收到第一事务的处理指令和第二事务的处理指令,包括:
先后接收...

【专利技术属性】
技术研发人员:鄢贵海周康康江树浩
申请(专利权)人:中科驭数北京科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1