一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法及装置与流程

2023-02-20 12:06:12 来源:中国专利 TAG:
1.本技术实施例涉及数据处理领域,尤其涉及一种数据处理方法及装置。
背景技术
::2.数据库性能是数据库产品竞争力的关键指标。在“以数据为中心”的数据中心战略转型中,数据库承载了数据中心的状态数据的存储,数据库的性能表现直接关系到数据中心设备的性能表现。在数据通信和工业数据服务等产品中,由于资源和功耗的限制,当前基于冯诺依曼处理器架构的软件优化已无法满足数据业务在资源受限环境下的日益增长性能要求。为了克服这个瓶颈,业界提出了各种硬件加速和异构计算的方法,然而在数据库中,由于事务(transaction)模型的隔离性和原子性要求数据操作在各个阶段或数据集合封锁或冲突检查,限制了硬件的并发能力,使得数据库处理过程中无法兼顾高吞吐的性能指标。技术实现要素:3.本技术实施例提供一种数据处理方法及装置。在该方法中,装置通过预先执行冲突过滤,并以并发模式执行数据库操作,以减少事务失败的概率,提升系统吞吐性能指标。4.第一方面,本技术实施例提供一种数据处理方法。该方法包括:装置获取事务,事务包括n个数据库操作。其中,n为大于1的正整数。接着,装置对n个数据库操作进行冲突检测,得到冲突检测结果。其中,冲突检测结果中包括指示第一数据库操作与第二数据库操作互为冲突操作的结果。其中,第一数据库操作与第二数据库操作属于n个数据库操作。随后,装置基于冲突检测结果,将n个数据库操作划分为m个分组,其中,m个分组中的每个分组中包括多个数据库操作,并且第一数据库操作与第二数据库操作属于不同的分组,以及,m为大于1的正整数。装置并发执行m个分组中的每个分组中的多个数据库操作。这样,本技术实施例中的装置(也可以理解为数据库)通过预先执行冲突过滤,可构造基于不冲突的批量操作,减少失误失败的概率,有益于加速器的并发。5.在一种可能的实现方式中,并发执行m个分组中的每个分组中的多个数据库操作,包括:装置调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作;其中,单一硬件加速器执行单一数据库操作。这样,本技术实施例通过多个硬件并行执行,以提升数据库的处理效率,提高吞吐率,且减少cpu占用,实现软硬件协同工作。6.在一种可能的实现方式中,调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作,包括:装置基于第一分组中包括的x个数据库操作,触发x个硬件加速器;第一分组属于m个分组。装置向x个硬件加速器指示x个数据库操作,使得x个硬件加速器并行执行x个数据库操作。这样,多个加速器可以并行执行,并且,软件可以调用硬件加速器,从而实现软硬件协同。7.在一种可能的实现方式中,向x个硬件加速器指示x个数据库操作,包括:装置向x个硬件加速器指示x个数据库操作中每个数据库操作对应的索引信息,使得x个硬件加速器基于x个数据库操作中每个数据库操作对应的索引信息,执行x个数据库操作。这样,多个加速器可基于索引信息执行并行操作,以对索引信息所指示的数据进行数据库操作。8.在一种可能的实现方式中,调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作,包括:从共享内存中读取x个数据库操作的执行结果;其中,x个数据库操作的执行结果为多个硬件加速器并发执行x个数据库操作后写入的。这样,cpu和硬件加速器可以通过共享内存传输数据。cpu可读取到对应的执行结果。9.在一种可能的实现方式中,调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作,包括:从共享内存中读取x个数据库操作的执行结果之后,基于第二分组中包括的y个数据库操作,触发y个硬件加速器;第二分组属于m个分组;向y个硬件加速器指示y个数据库操作,使得y个硬件加速器并行执行y个数据库操作。这样,本技术实施例通过循环执行多个组,每个组并行执行的方式,可以有效提高系统的处理效率,提升系统吞吐率。10.在一种可能的实现方式中,x个数据库操作的执行结果置于共享内存的环形队列中。这样,本技术实施例通过环形队列可使得硬件和cpu均可以读取到环形队列中的信息。并且,环形队列中的信息首尾相接,可以重复使用。11.在一种可能的实现方式中,调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作,包括:通过第一接口向内存处理器发送第一指示信号,指示信号用于指示内存处理器触发x个硬件加速器。这样,本技术实施例通过预设的接口,可以方便硬件加速器的快速触发和部署。12.在一种可能的实现方式中,并发执行m个分组中的每个分组中的多个数据库操作之前,包括:将n个数据库操作中的删操作的索引信息置于第一队列;将n个数据库操作中的增操作的反向操作的索引信息置于第二队列。这样,本技术实施例中无需标记删除,仅通过队列即可维护删操作,减少删除标记的查询时间,进一步加快处理效率。通过队列维护增操作的反向操作,使得事务回滚情况下,可以基于反向操作完成事务回滚。13.在一种可能的实现方式中,并发执行m个分组中的每个分组中的多个数据库操作,包括:在提交事务之前,按照m个分组的情况,并行执行第一队列中的删操作。这样,本技术实施例中无需标记删除,仅通过队列即可维护删操作,减少删除标记的查询时间,进一步加快处理效率。14.在一种可能的实现方式中,方法还包括:若在并发执行m个分组中的每个分组中的多个数据库操作的过程中,检测到发生操作冲突,基于第二队列中的增操作的反向操作的索引信息,执行增操作的反向操作,完成事务回滚。这样,本技术实施例将事务的版本信息解耦,使得事务信息分离,更好的实现硬件的并行执行。15.在一种可能的实现方式中,方法还包括:事务回滚后,串行执行n个数据库操作。这样,本技术实施例中乐观事务模式和悲观事务模式相结合,可在发生冲突情况下,切换到串行模式继续执行,以提升系统的处理效率。16.在一种可能的实现方式中,对n个数据库操作进行冲突检测,得到冲突检测结果,包括:获取n个数据库操作中的每个数据库操作对应的哈希值;检测n个数据操作对应的哈希值是否存在数值相等的数值;检测到第一数据库操作的哈希值与第二数据库操作的哈希值相等,确定第一数据库操作与第二数据库操互为冲突操作。这样,通过哈希值的判断,可以初步过滤可能发生冲突的数据库操作,使得并行执行过程中,发生冲突的操作不在一起执行。17.在一种可能的实现方式中,基于冲突检测结果,将n个数据库操作划分为m个分组,包括:基于冲突检测结果与预设分组规则,将n个数据库操作划分为m个分组;预设分组规则包括以下至少之一:单一分组中的多个数据库操作的哈希值不相等;单一分组中包含的数据库操作的数量小于或等于硬件加速器的数量;单一分组中包含的数据库操作的执行时间在指定范围内;单一分组中包含的数据库操作的类型为同一类型。这样,通过哈希值,可以预先确定可能发生冲突的操作,以将冲突的操作分在不同的组。并行的数量取决于加速器的数量,以使得硬件的数量足够支持并行数量,以实现软硬件协同。18.第二方面,本技术实施例提供一种数据处理装置。该装置包括:获取模块,用于获取事务,事务包括n个数据库操作;n为大于1的正整数;冲突检测模块,用于对n个数据库操作进行冲突检测,得到冲突检测结果;其中,冲突检测结果指示第一数据库操作与第二数据库操作互为冲突操作;第一数据库操作与第二数据库操作属于n个数据库操作;分组模块,用于基于冲突检测结果,将n个数据库操作划分为m个分组;m个分组中的每个分组中包括多个数据库操作;其中,第一数据库操作与第二数据库操作属于不同的分组;m为大于1的正整数;执行模块,用于并发执行m个分组中的每个分组中的多个数据库操作。19.在一种可能的实现方式中,执行模块,具体用于:调用多个硬件加速器并发执行m个分组中的单一分组中的多个数据库操作;其中,单一硬件加速器执行单一数据库操作。20.在一种可能的实现方式中,执行模块,具体用于:基于第一分组中包括的x个数据库操作,触发x个硬件加速器;第一分组属于m个分组;向x个硬件加速器指示x个数据库操作,使得x个硬件加速器并行执行x个数据库操作。21.在一种可能的实现方式中,执行模块,具体用于:从共享内存中读取x个数据库操作的执行结果;其中,x个数据库操作的执行结果为多个硬件加速器并发执行x个数据库操作后写入的。22.在一种可能的实现方式中,执行模块,具体用于:从共享内存中读取x个数据库操作的执行结果之后,基于第二分组中包括的y个数据库操作,触发y个硬件加速器;第二分组属于m个分组;向y个硬件加速器指示y个数据库操作,使得y个硬件加速器并行执行y个数据库操作。23.在一种可能的实现方式中,x个数据库操作的执行结果置于共享内存的环形队列中。24.在一种可能的实现方式中,执行模块,具体用于:通过第一接口向内存处理器发送第一指示信号,指示信号用于指示内存处理器触发x个硬件加速器。25.在一种可能的实现方式中,执行模块,还用于:将n个数据库操作中的删操作的索引信息置于第一队列;将n个数据库操作中的增操作的反向操作的索引信息置于第二队列。26.在一种可能的实现方式中,执行模块还用于:在提交事务之前,按照m个分组的情况,并行执行第一队列中的删操作。27.在一种可能的实现方式中,执行模块还用于:若在并发执行m个分组中的每个分组中的多个数据库操作的过程中,检测到发生操作冲突,基于第二队列中的增操作的反向操作的索引信息,执行增操作的反向操作,完成事务回滚。28.在一种可能的实现方式中,执行模块还用于:事务回滚后,串行执行n个数据库操作。29.在一种可能的实现方式中,冲突检测模块具体用于:获取n个数据库操作中的每个数据库操作对应的哈希值;检测n个数据操作对应的哈希值是否存在数值相等的数值;检测到第一数据库操作的哈希值与第二数据库操作的哈希值相等,确定第一数据库操作与第二数据库操互为冲突操作。30.在一种可能的实现方式中,分组模块,具体用于:基于冲突检测结果与预设分组规则,将n个数据库操作划分为m个分组;预设分组规则包括以下至少之一:单一分组中的多个数据库操作的哈希值不相等;单一分组中包含的数据库操作的数量小于或等于硬件加速器的数量;单一分组中包含的数据库操作的执行时间在指定范围内;单一分组中包含的数据库操作的类型为同一类型。31.第三方面,本技术实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的方法的指令。32.第四方面,本技术实施例提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。33.第五方面,本技术实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。34.第六方面,本技术实施例提供了一种芯片,包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行第一方面或第一方面的任意可能的实现方式中的方法的指令。附图说明35.图1为示例性示出的数据库结构示意图;36.图2为本技术实施例提供的一种数据库结构示意图;37.图3为示例性示出的冲突检测示意图;38.图4为示例性示出的分组示意图;39.图5为示例性示出的数据库表的建立流程;40.图6为示例性示出的数据处理流程示意图;41.图7为示例性示出的队列示意图;42.图8为示例性示出的硬件加速器调用示意图;43.图9为示例性示出的读取数据的流程示意图;44.图10为示例性示出的数据处理装置的结构示意图。45.图11为示例性示出的装置结构示意图。具体实施方式46.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。47.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。48.本技术实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。49.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。50.在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。51.在说明本技术实施例的方案之前,首先对本技术涉及到的一些技术名词进行简单介绍:52.乐观事务模式:乐观事务模式也可以称为乐观并发控制模式,或者是乐观事务处理模式等,本技术不做限定。其中,在乐观事务模式中,对于并发执行可能冲突的操作,假定其不会真的冲突,允许并发执行,直到真正发生冲突时才去解决冲突,比如让事务回滚。可以理解为,事务采用乐观的形式执行,即先采取并发执行,在遇到冲突后再执行事务回滚。53.悲观事务模式:与乐观事务模式对应的模式为悲观事务模式。悲观事务模式也可以称为悲观事务处理模式或悲观并发控制模式等,本技术不做限定。在该模式中,对于并发执行可能冲突的操作,假定其必定发生冲突,通过让事务等待(锁)或者中止(时间戳排序)的方式使并行的操作串行执行。也就是说,事务执行采用锁的方式,对访问的资源进行保护,实现读写和写写互斥,保证事务获得锁后可以最大可能的能完成事务流程。54.事务:事务也可以称为数据库事务,其为为单一逻辑工作单元的操作集合。例如,一个事务可以包括多个数据库操作。55.数据库操作:数据库操作包括但不限于:ddl(datadefinitionlanguage,数据定义语言)操作和dml(datamanipulationlanguage,数据操纵语言)操作。其中,ddl操作用于更改数据库的结构,例如可用于定义或改变表(table)的结构。dml命令用于管理数据库中的数据,例如包括:insert(增)、delete(删)、update(改)、select(查)等操作。56.图1为示例性示出的数据库结构示意图。请参照图1,数据库中包括客户端和服务端。客户端中包括但不限于高性能应用等。客户端可为用户提供数据库操作界面,用户可在客户端提供的操作界面中输入数据库命令,例如sql(structuredquerylanguage,结构化查询语言)语句等,以触发数据库执行对应的事务,即指示数据库执行相应的数据库操作。如上文所述,一个事务可对应一个数据库集合,数据库集合中可包括多个数据库操作。57.仍参照图1,示例性的,服务端包括软件侧和硬件侧。软件测包括但不限于:查询引擎(queryengine)、执行引擎(executeengine)和存储引擎(storageengine)。硬件侧包括但不限于cpu、内存(图中未示出)等器件(或设备、模块等)。58.在已有技术中,数据库通常采用乐观事务模式,示例性的,cpu可以为多核cpu。cpu可通过多核执行多个数据库操作。如上文所述,乐观事务模式是在发生冲突之后回滚,而由于事务中的数据库操作的乱序性,可能会经常性的发生操作冲突。这样,将导致乐观事务模式下经常发生事务回滚,影响数据库的处理效率。59.本技术实施例提供一种数据处理方法,通过软硬件协同的执行模型,可有效提高事务之间的并发能力。并且通过预先对冲突进行过滤,可有效降低乐观事务模式下的冲突问题。以及,结合乐观模式与悲观模式,可实现乐观模式与悲观模式之间的切换,使得事务在发生冲突后,仍可继续执行,以满足串行化的保序要求,无需人工干预。本技术可以在有限的内存资源且消耗极少的cpu的资源和功耗的情况下,提供高达xmrwops吞吐的性能指标,以满足数据库产品的低内存容量和高吞吐的需求。60.图2为本技术实施例提供的一种数据库结构示意图。请参照图2,数据库包括客户端与服务端。客户端的描述可参照图1中的相关内容,此处不再赘述。示例性的,服务端包括软件侧和硬件侧。其中,软件侧包括但不限于:查询引擎、执行引擎和存储引擎。硬件侧包括但不限于:内存处理器(memoryprocessor,mp)、cpu(centralprocessingunit,中央处理器)、硬件加速器和内存等。需要说明的是,内存处理器、cpu和硬件加速器可以在同一芯片上,也可以为独立器件并通过总线连接,本技术不做限定。进一步需要说明的是,硬件加速器与内存处理器可以是逻辑电路。可选地,在软件侧可以包括与硬件减速器对应的驱动(图中未示出),例如为硬件加速驱动。软件侧的硬件加速驱动可以理解为是硬件加速器的逻辑程序。也就是说,本技术实施例中硬件加速器所执行的步骤可以是硬件加速器运行逻辑程序后执行的。61.示例性的,软件侧的查询引擎、执行引擎和存储引擎等运行于cpu上,即,由cpu支持各引擎执行相应的步骤。62.在本技术实施例中,查询引擎包括但不限于:冲突过滤模块(也可以称为冲突过滤器),冲突过滤模块可用于对接收到的数据库操作(也可以理解为数据库命令,例如dml命令)进行冲突检测。示例性的,查询引擎还可以包括其它模块,例如用于对数据库语音进行解析的解析模块等,本技术不做限定。63.在本技术实施例中,图3为示例性示出的冲突检测示意图,请参照图3,具体的,冲突检测模块可基于每个主键数据库操作(即dml操作,包括但不限于:update、insert、delete等),获取对应的哈希索引的操作接口,并进一步获取每个操作对应的哈希值(hashcode)。举例说明,如图3所示,update操作可映射为lookup(查)操作、insert操作和delete操作。需要说明的是,为了和dml操作区分,本技术实施例中将dml操作的英文表示为大写英文字母,而映射后的哈希索引的操作接口表示为小写的英文字母。可选地,insert操作可以映射为insert操作。delete操作可以映射为lookup操作和delete操作。接着,冲突检测模块获取每个哈希索引的操作接口的哈希值,哈希值的获取方式可参照已有技术,本技术不做限定。64.示例性的,冲突检测模块可检测获取到的哈希值中是否存在冲突的数值,以得到冲突检测结果。可选地,冲突的数值即为相同数值的哈希值,相应的,哈希值所对应的dml操作即为冲突操作。举例说明,冲突检测模块获取到所有哈希值后,可逐一将哈希值与其它哈希值进行比对,以检测是否存在与待比较的哈希值相同的哈希值。一个示例中,如果存在数值相同的哈希值(可以是两个或两个以上),则冲突检测模块确定数值相同的哈希值所对应的dml操作是冲突的。例如,update操作1映射为lookup操作1、insert操作1和detele操作1。delete操作1映射为lookup操作2和detele操作2。冲突检测模块获取到每个操作对应的哈希值为lookup操作1的哈希值为哈希值a、insert操作1的哈希值为哈希值b,detele操作1的哈希值为哈希值c,lookup操作2的哈希值为哈希值d,detele操作2的哈希值为哈希值e。冲突检测容模块将哈希值a与哈希值b~哈希值e(也可以是哈希值d和哈希值e)逐一进行比较,以确定是否存在与哈希值a相同的哈希值。如果哈希值a与其它哈希值不相同,则继续将哈希值b与其他哈希值比较,以此类推,直至所有哈希值比较完成。示例性的,假设哈希值c与哈希值e相同,则冲突检测模块可确定哈希值c所对应的dml操作(即update操作1)与哈希值e所对应的dml操作(即delate操作1)为冲突操作。65.在本技术实施例中,查询引擎还用于维护事务模式状态机,可用于管理数据库的并发处理模式。如上文所述,数据库的并发控制模式包括但不限于:乐观事务模式和悲观事务模式。查询引擎可基于冲突过滤模块的检测机制,切换事务模式状态机的状态(包括乐观事务模式状态和悲观事务模式状态),从而实现数据库并发模式的切换。在本技术实施例中,在初始状态,查询引擎默认将事务模式状态机设置为乐观事务模式。也就是说,数据库默认以乐观事务模式并发执行数据库操作。数据库(具体为硬件加速器)在执行具体操作时,若发生操作冲突,则底层硬件(即硬件加速器,也可能是其它硬件上报的,本技术不做限定)向查询引擎上报错误,用于指示发生冲突。查询引擎可基于底层硬件上报的错误,将事务模式状态机切换为悲观事务模式,则数据库中的各模块按照悲观事务模式串行处理事务,从而实现乐观模式与悲观模式的切换,以对乐观事务模式进行补充,满足串行化执行需求。66.仍参照图2,示例性的,执行引擎包括但不限于混合事务处理模块,混合事务处理模块用于基于查询模块的事务模式状态机所指示的事务模式,调度存储引擎。一个示例中,若查询模块维护的事务模式状态机设置为乐观事务模式,则执行引擎可基于查询引擎的冲突检测结果,将数据库操作(例如dml操作)进行分组,并调用存储引擎基于分组结果,并行执行相应的数据库操作。另一个示例中,若查询模块维护的事务模式状态机设置为悲观事务模式,则执行引擎将事务回滚,并以悲观事务模式,调用存储引擎串行执行相应的数据库操作。67.在本技术实施例中,混合事务处理模块预选设置有分组规则。可选地,分组的规则包括分组规则1,分组规则1包括但不限于:同一组内的任意两个数据库操作不冲突。在本技术实施例中,分组的规则还可以包括分组规则2,分组规则2包括但不限于:将相同类型的数据库操作分为一组。例如可以同一组中的操作可以全为“增操作”,或者同一组中的操作可以全为“删操作”等。可选地,分组的规则还可以包括分组规则3,分组规则3包括但不限于:将执行代价近似的操作分为一组。示例性的,“执行代价”可选地为数据库执行数据操作所消耗的资源。资源可以包括但不限于时间等,本技术不做限定。例如,执行时间较短(例如小于预设阈值,可根据实际需求设置,本技术不做限定)的数据库操作划分在同一组,而执行时间较长(例如大于或等于预设阈值)的数据库操作划分在同一组。68.需要说明的是,本技术实施例中的分组规则可以是包括分组规则1,或者是分组规则1与其他分组规则(例如分组规则2和/或分组规则3,也可以是其他分组规则,可根据实际需求设置,本技术不做限定)的组合。69.在本技术实施例中,单一分组中包括的数据操作数量取决于执行单元的数量。在本技术实施例中,执行单元可选地为存储引擎在乐观事务模式状态时,可用于处理数据库操作的器件的数量。在本技术实施例中,存储引擎在乐观事务模式状态时,执行单元为硬件加速器。相应的,单一分组包括的数据库操作数量可以小于或等于硬件加速器的器件数量(也可以理解为是硬件加速器中的硬件加速单元的数量)。举例说明,若数据库的硬件加速器的数量为32个,相应的,冲突过滤模块可以将接收到的n个操作,基于上文所述的分组规则,将n个操作分为多个(例如m个)组。其中,m个分组中的每个组所包括的数据库操作的数量小于或等于32。70.图4为示例性示出的分组示意图。请参照图4,混合事务处理模块基于冲突检测结果以及分组规则(其中分组规则包括分组规则1、分组规则2和分组规则3)进行分组,得到第一分组、第二分组和第三分组。其中,第一分组中包括10个delete操作(图中的数量仅为示意性举例),第二分组中包括20个insert操作,第三分组中包括32个insert操作。其中,第一分组、第二分组以及第三分组中的数据库操作均属于同一个事务,也就是说,上述多个数据库操作属于事务对应的操作集合。71.仍参照图4,示例性的,第一分组中的操作所对应的哈希值互不相同,第二分组中的操作所对应的哈希值互不相同,且第三分组中的操作做对应的哈希值互不相同,即满足分组规则1的要求。示例性的,第一分组中的数据库操作均为delete操作,第二分组和第三分组中的操作均为insert操作,即满足分组规则2的要求。示例性的,第二分组中的各操作的执行代价均大于预设阈值,第三分组中的各操作的执行代价均小于或等于预设阈值,即满足分组规则3的要求。示例性的,第一分组、第二分组与第三分组中的每个分组中包括的数据库操作的数量小于或等于32。其中,32即为电子设备(即数据库所在设备)中的硬件加速器所包含的硬件加速单元的数量(即32个)。需要说明的是,本技术实施例中的分组结果中,各组包括的数据库操作的类型和数量仅为示意性举例,本技术不做限定。72.需要说明的是,在本技术实施例中,如图3所示,update操作对应为lookup操作、insert操作和delete操作。也就是说,要完成一个update操作,需要先查看数据,然后增加数据,再删除原来的数据,具体操作可参照已有技术,本技术不做赘述。相应的,在分组过程中,执行引擎可将update操作分为delete操作和insert操作,再将update操作对应的delete操作和insert操作进行分组。也就是说,分组中如果包括detele操作,该操作可能是原有语句(即用户输入的删操作对应的数据库语句)指示的数据库操作,也可能是update操作对应的操作,本技术不做限定。73.在本技术实施例中,执行引擎可基于分组结果,确定执行任务(也可以称为执行计划或执行策略等,本技术不做限定),并基于执行任务,调用存储引擎执行。示例性的,执行任务包括但不限于:并行任务或串行任务。其中,并行任务即为乐观事务模式下确定的任务。该任务中包括但不限于:事务中的每个数据库操作所对应的索引信息。举例说明,对于图4中的第二分组,即需要新增数据。相应的,执行引擎(具体可以是混合事务处理模块)可基于每个数据库操作生成对应的索引信息,索引信息用于指示新增数据所写入的空间地址。索引信息的具体生成方式可参照已有技术实施例,本技术不做限定。再举例说明,对于图4中的第一分组,即需要删除数据,则执行引擎可确定需要删除的数据所对应的索引信息。具体确定方式可参照已有技术实施例,本技术不做限定。74.在本技术实施例中,并行任务即包括多个数据库操作所对应的索引信息,以指示存储引擎调用硬件加速器并行执行多个数据库操作。串行任务即包括串行的一个或多个数据库操作对应的索引信息,用于指示存储引擎调用硬件加速器串行执行数据库操作。75.在本技术实施例中,索引信息可以为哈希索引或者是art(adaptiveradixtree,自适应的基数树结构)索引。其中,哈希索引具备读写均衡、可扩展哈希表结构的特点,可适用于主键和点查询。art索引为基数树性结构,支持排序、lpm(libraryofparameterizedmodules,参数化模块库)、自适应节点伸缩、cache友好的特点,可适用于二级索引和范围查询。76.示例性的,执行引擎确定执行任务后,可调用存储引擎执行相应操作。例如,以乐观事务模式为例,仍参照图4,执行引擎确定第一分组中的各数据库操作(也可以理解为事务)所对应的并行任务(例如索引信息)后,可基于与存储引擎之间的索引接口,向存储引擎指示对应的并行任务。该并行任务包括但不限于第一分组中的各数据库操作的索引信息,以向存储引擎指示哪些事务是作为一组并行处理的。存储引擎即可基于执行引擎的指示,调用硬件加速器并行执行相应操作。77.在一种可能的实现方式中,分组步骤也可以由查询引擎执行。查询引擎可基于冲突检测结果进行分组,并将分组结果指示给执行引擎。执行引擎可以基于分组结果,调用存储引擎执行相应操作。也就是说,本技术中的各引擎(或模块)所执行的步骤也可以由其它引擎(或模块)执行,本技术对执行主体不做限定,下文中不再重复说明。78.存储引擎可基于执行引擎的指示(即执行任务),确定每个索引信息所对应的分组,也可以理解为确定哪些索引信息所对应的数据库操作是需要在一起进行并行处理的。79.请继续参照图2,示例性的,存储引擎包括事务解耦模块,事务解耦模块设置有延迟操作队列,可将事务的多版本信息置于延迟队列中,从而将事务(也可以理解是数据库操作)的多版本信息从索引中解耦出来,也就是说,相比于现有技术中通过索引记录事务的多版本信息的方式,本技术实施例中将多版本信息中记录到队列中,从而将多版本信息从索引中解耦出来。这样,存储引擎在调用硬件加速器基于索引信息执行事务时,不会携带多版本信息,可方便后续的批量化处理。在已有技术中,存储引擎需要对删操作所对应的数据的索引信息进行标记,以标记该版本的数据为即将删除的版本。在实际处理中,存储引擎需要根据操作的状态,对索引进行标记,并基于标记对索引指示的数据进行删除等操作。在该过程中,存储引擎需要不断的查找标记,并基于标记执行相应的处理。在本技术实施例中,事务解耦模块通过设置延迟操作队列,可将版本信息设置于队列中,而无需进行删除标记,在执行过程中,存储引擎可直接基于索引在队列中的状态,调用硬件加速器对索引指示的数据(可能为原版本,也可能是副本)执行相应的操作,以减少标记删除流程,从而简化整体流程,提高数据处理效率。举例说明,数据库接收到多个操作,多个操作包括将数据a改为数据b的操作,和将数据b改为数据c的操作,则,数据a、数据b和数据c为同一个数据的多个版本。也可以理解为是数据在不同时间下的状态。示例性的,数据a、数据b和数据c均对应有各自的索引。存储引擎维护的延迟队列中可基于索引,查找到对应的版本的数据,并调用硬件加速器执行相应的操作。80.需要说明的是,本技术实施例中的延迟操作队列遵循先进先出原则。81.在本技术实施例中,延迟队列可以包括第一队列和第二队列。第一队列可以称为提交队列(commitqueue),第二队列可以为失败队列(abortqueue)。其中,提交队列用于存放删操作所对应的索引信息等信息。失败队列可用存放增操作的反向操作对应的索引信息等信息。82.本技术实施例中将删操作置于提交队列中,可使得数据库在提交事务之前,再对提交队列中的所有删操作进行处理,无需以标记删除的方式标记删操作,从而加快删操作的事务处理速度。可以理解为,在本技术实施例中,对于删操作,采用延迟处理的方式,执行引擎完成分组后,可指示存储引擎将删操作置于延迟队列中,并在提交之前再生成并行任务,以指示存储引擎调用硬件加速模块并行执行删操作。而对于增操作,则可在分组后,即生成对应的并行任务,以指示存储引擎调用硬件加速模块执行并行操作,同时,执行引擎指示存储引擎将增操作的反向操作置于失败队列中。83.本技术实施例中将增操作的反向操作置于失败队列中,可使得事务回滚过程中,数据库可基于失败队列中的反向操作,对事务进行回滚。示例性的,增操作的反向操作即为删操作。举例说明,增操作a是在指定地址空间内增加一个数据a,则增操作a的反向操作即为删除数据a。可以理解为,在事务回滚的过程中,需要将已经完成的操作全部恢复到事务执行前的状态,相应的,已经执行的增操作所对应的结果则需要删除。84.在一种可能的实现方式中,为满足不同的事务隔离需求,队列中还可以记录各数据库操作对应的时间信息。可选地,数据库的索引信息与时间信息等信息可以对应记录在队列中。cpu(可以是执行引擎或存储引擎)可设置有回收模块(也可以称为清除模块等,本技术不做限定),回收模块可以基于提交队列中各对象(即每个数据库操作)对应的时间信息,删除符合条件的对象。该条件可选地为时间信息为最老的(或者可以理解为是时间最小的)的数据库操作。也就是说,当cpu检测到提交队列中的任一操作的时间信息为最小的,即可由cpu或者是cpu调用硬件加速器(具体调用方式可参照下文实施例)执行该删操作,并在执行完成后,删除队列中与该删操作对应的信息(包括索引信息和时间信息)等。可以理解为,时间最小的删操作所对应的数据,不会再被其它操作所访问,也就不会造成操作冲突。85.在一种可能的实现方式中,延迟队列也可以由执行引擎维护,本技术不做限定。86.示例性的,存储引擎可基于执行引擎的指示(即执行任务),调用硬件加速器进行并行或串行执行相应的数据库操作。87.请继续参照图2,示例性的,硬件侧包括但不限于:内存处理器、cpu、硬件加速器和内存等。88.在本技术实施例中,内存中可包括共享内存,共享内存的存储空间小于或等于内存的存储空间大小。示例性的,共享内存为预先配置的。在本技术实施例中,硬件加速器、内存处理器均可以直接读取共享内存中的信息与数据。89.在本技术实施例中,软件侧的查询引擎、执行引擎以及存储引擎均运行于cpu。可选地,cpu可以是单核的,也可以是多核的,本技术不做限定。90.在本技术实施例中,硬件加速器可以包括至少一种类型的加速器。例如可以包括第一硬件加速器和第二硬件加速器。其中,第一硬件加速器可以包括多个(例如32个,具体取决于出厂前的硬件设置,本技术不做限定)硬件加速单元,第二硬件加速器可以包括多个硬件加速单元。可选地,第一硬件加速器可以为哈希加速器(accelerator)(简称hashacc),第二硬件加速器可以为art加速器(简称artacc)。91.示例性的,哈希加速器可以用于处理哈希索引(概念可参照上文),art加速器可以用于处理art索引(概念可参照上文)。也就是说,存储引擎可以调用不同类型的硬件加速器以处理对应类型的索引。92.示例性的,内存处理器可选地为一种可编程的加速单元,在本技术实施例中,内存处理器也可以理解为是一种用于调度的协处理器。内存处理器可基于存储引擎的指示,调用硬件加速器。93.在本技术实施例中,内存处理器可为存储引擎(即cpu)提供不同类型的接口,以实现不同调用。例如,内存处理器可提供第一接口、第二接口和第三接口。一个示例中,存储引擎可通过第一接口调用硬件加速器。例如,存储引擎可通过第一接口向内存处理器发送指示信号,用于指示启动硬件加速器以及启动的硬件加速器中的硬件加速单元的数量。如上文所述,硬件加速器可包括多个硬件加速单元,执行引擎可基于硬件加速单元的数量对数据库操作进行分组。在执行过程中,存储引擎可调用与分组中的数据库操作数量相等的硬件加速单元,以使得多个硬件加速单元并行执行分组内的多个数据库操作。示例性的,内存处理器响应于接收到的指示信息,触发硬件加速器启动对应数量的硬件加速单元,也可以理解为是启动对应数量的线程,还可以理解为是触发硬件加速器执行对应的程序逻辑,以执行并行任务。94.另一个示例中,内存处理器可通过第二接口释放cpu。内存处理器指示硬件加速器执行数据库操作后,内存处理器可通过第二接口向cpu发送指示信号,用于指示硬件加速器已经开始执行相应操作。为避免cpu等待,造成资源浪费,内存处理器通过第二接口向cpu发送指示信号,以指示释放cpu。cpu响应于接收到的指示信息,可以执行其它操作,以避免长时间等待,从而提高硬件资源的利用率。可选地,硬件加速器完成并行任务之后,内存处理器可以向cpu发送指示信号,以指示cpu读取共享内存中的执行结果。具体细节将在下文中详细说明。95.在又一个示例中,存储引擎还可以基于第三接口读取共享内存中的数据。96.可以理解为,第一接口与第二接口均为控制通道,用于传输控制信号。第三接口可以为数据通道,可用于传输数据。97.示例性的,各接口所支持的通信协议可以相同或不同。接口中所传输的信息格式满足接口的协议。98.在本技术实施例中,第一接口可以为spawn(调用)接口,第二接口可以为suspend(中止)接口,第三接口可以为accmsgqueque(加速信息队列)接口。99.示例性的,如上文所述,执行引擎可以基于分组结果,确定对应的并行任务。并行任务中包括但不限于索引信息等。执行引擎可向存储引擎指示并行任务。存储引擎可将并行任务所对应的索引信息卸载(即传输)至硬件加速器,以调用硬件加速器基于索引信息并行执行对应的数据库操作。100.需要说明的是,在本技术实施例中,存储引擎可以将并行任务所对应的索引信息输入到共享内存中,硬件加速器可从共享内存中读取对应的索引信息,并执行相应操作,从而实现存储引擎与硬件加速器之间的数据传输。101.结合图2,下面以具体实施例对本技术实施例中的数据处理方法进行详细说明。如上文所述,数据库操作包括ddl操作和dml操作。在dml操作执行之前,数据库需要通过ddl操作创建数据库表。本技术实施例中仅以数据库表的形式为例进行说明,在其他实施例中还可以是其他形式,本技术不做限定。102.图5为示例性示出的数据库表的建立流程,请参照图5,具体包括但不限于:103.s501,服务端获取创建数据请求。104.示例性的,用户可通过数据库的客户端提供的人机交互界面,输入对应的数据库语句,以创建元数据。客户端响应于接收到的用户命令(即数据库语句),向数据库发送创建数据请求,用于指示服务端创建元数据。示例性的,元数据是指定义数据结构的数据。例如,一张数据库表的表头(即列)和数据库表的名称均为该数据库表对应的元数据。可数据库表中的数据即为数据内容。本技术实施例中所述的索引信息用于指示数据内容所存储的空间地址。105.s502,服务端基于创建数据请求,创建元数据。106.示例性的,服务端接收到创建数据请求后,对请求进行解析,以获取创建元数据所需的信息,可以称为schema(模式)信息。信息包括但不限于:表、列、数据类型、主键、外键等信息。107.服务端可基于获取到的schema信息,创建元数据。具体细节可参照已有技术实施例,本技术不做限定。108.s503,服务端保存硬件加速器的元数据。109.示例性的,在本技术实施例中,数据库所在的电子设备如果具有图2中的硬件结构,即设置有硬件加速器,且硬件加速器可支持对数据库操作进行加速,则服务端记录硬件加速器的相关信息。相关信息用于指示硬件加速器所在控件以及应用哪个硬件加速器(例如第一硬件加速器或第二硬件加速器)对s302创建的元数据执行后续的加速操作。110.图6为示例性示出的数据处理流程示意图,请参照图6,具体包括但不限于如下步骤:111.s601,查询引擎对操作进行冲突过滤。112.在本技术实施例中,元数据(例如数据库表)创建完成后,用户通过客户端提供的界面输入数据库语句,以对数据库表进行相应的数据库操作,即dml操作,以对数据库表执行增、删、改、查等数据库操作。113.需要说明的是,图4中的流程是对应于增、删和改操作进行处理时的流程图。对于查操作,也可以理解为是读取数据库表中的数据内容的操作,则可参照图9中的相关描述。114.查询引擎对获取到的所有数据库操作执行冲突检测,具体冲突检测方式可参照图3,此处不再赘述。查询引擎获取到冲突检测结果后,可向执行引擎指示冲突检测结果。115.在本技术实施例中,查询引擎启动后,将事务模式状态机设置为乐观事务模式。可选地,查询引擎可以向执行引擎指示当前内的事务模式,即乐观事务模式,以使得执行引擎可以基于乐观事务模式确定并行任务。116.s602,执行引擎进行分组。117.示例性的,执行引擎基于查询引擎维护的事务模式状态机的状态,确定当前模式为乐观事务模式。则,执行引擎可进一步基于查询引擎指示的冲突检测结果进行分组。118.在本技术实施例中,查询引擎所获取到的数据库操作中,可以包括两个或两个以上数据库操作之间具有依赖性的。当然,获取到的数据库操作中的所有数据库操作也可以是乱序的(即相互之间不具有依赖性)。119.在本技术实施例中,对于具有依赖性的数据库操作,可将其划分到同一分组。对于乱序的数据库操作,则执行引擎可基于冲突检测结果,将数据库操作进行分组,以使得同一组中包括的数据库操作之间互不冲突。具体分组方式可参照上文实施例中以及图4的相关描述,此处不再赘述。也就是说,在本技术实施例中,数据库通过预先对数据库操作进行冲突过滤,可以有效降低乱序操作所造成的冲突问题。120.接着,执行引擎可基于分组结果,确定并行任务。例如,对于增操作,执行引擎可生成索引信息等相关信息。示例性的,对于删操作,执行引擎可确定对应的索引信息等相关信息。举例说明,仍以图4说明,执行引擎可基于分组结果,为第一分组中的各删除数据库操作确定对应的索引信息等其他信息,并确定第一分组中的各删除数据库操作即为一个并行任务。相应的,执行引擎基于分组结果,为第二分组中的各增数据库操作生成索引信息等相关信息。执行引擎可确定第二分组中的各增数据库操作即为一个并行任务。121.需要说明的是,如上文所述,删操作置于提交队列,并在事务提交之前再处理。执行引擎也可以在事务提交之前,再确定与删操作对应的并行任务。本技术不做限定。122.在本技术实施例中,通过预先对各并行任务(也可以理解为是分组)中的多个数据库操作进行冲突过滤,可过滤99%(该数值为实验数值,本技术不做限定)的冲突操作,使得乐观事务模式下的并行操作能够正常执行,有效提升数据处理的效率。123.在一种可能的实现方式中,并行任务与分组结果也可以不对应。举例说明,执行引擎可基于冲突检测结果,将不冲突的操作划分为一组,而冲突的操作则划分到不相同的组。例如执行引擎检测到操作a、操作b和操作c相互冲突,操作d和操作e相同冲突。相应的,执行引擎可以将操作a、操作b和操作c分别置于分组a、分组b和分组c中。操作d置于分组b中,操作e置于分组c中。也就是说,执行引擎可以不根据加速器的数量进行分组,仅根据分组规则1进行分组。在该示例中,执行引擎制定并行计划时,则可基于上文所述的分组规则2和分组规则3制定并行计划。举例说明,执行引擎可以从分组a中选择32个(即符合加速器数量)数据库操作,其中,32个数据库操作满足分组规则2和分组规则3,从而实现并行计划中的数据库操作互补冲突,且数据库操作的执行代价相似,且类型相同。执行引擎还可以将分组a中的其它数据库操作中再选择32个,制定一个并行计划。类似的,执行引擎可以从分组b中选择32个数据库操作,制定一个并行计划。124.在本技术实施例中,数据库的并行任务是基于冲突检测结果构建的,从而可以过滤大多数可能发生操作冲突的问题,也就是说,通过将可能发生操作冲突的操作置于不同的并行任务(即分组)中,可以有效避免并行任务执行过程中的冲突,降低并行执行过程中发生冲突的概率,以提高乐观事务模式的处理效率,也可以理解为是对乐观事务模式的优化,以避免操作冲突导致的经常性事务回滚。125.s603,存储引擎使用延迟队列管理索引信息。126.示例性的,执行引擎可通过与存储引擎之间的索引接口,向存储引擎指示至少一个并行任务。存储引擎可基于并行任务,执行相应的操作。127.具体的,存储引擎可基于并行任务,获取对应的索引信息。索引信息所对应的数据库操作,即为需要并行处理的操作。128.在本技术实施例中,如上文所述,存储引擎可维护有第一队列和第二队列。图7为示例性示出的队列示意图,请参照图7,如图7所示,第一队列(即提交队列)中包括多个索引信息,例如包括索引11~索引15等,以及每个索引所对应的数据库操作对应的时间信息,例如包括时间戳11~时间戳15等。举例说明,索引11可以是图4中的第一分组中的删操作所对应的索引信息,用于指向需要删除的数据(例如数据11)。仍参照图7,第二队列(即失败队列)多个索引信息,例如包括索引21~索引25等,以及每个索引所对应的数据库操作对应的时间信息,例如包括时间戳21~时间戳25等。举例说明,索引21可以是图4中的第二分组中的增操作的反向操作(概念可参照上文)所对应的索引信息,用于指向增操作需要写入数据的空间地址,以在反向操作时删除该空间地址内的数据内容。129.在本技术实施例中,如上文所述,提交队列中的各操作(即索引信息所对应的操作)在满足执行条件时,存储引擎再调用硬件加速器执行相应的操作。在本技术实施例中,提交队列的执行条件为提交时执行。也就是说,提交队列中的各索引所对应的删操作在被提交之前,才会被执行,也可以理解为是,事务准备提交之前,即需要删除对应的数据内容的情况下,存储引擎调用硬件加速器执行相应的删操作。也就是说,在本技术实施例中,数据库通过维护提交队列,可以有效避免标记删除的标记和查询等步骤的时间消耗,可有效提升删操作的执行效率,以提升数据库的整体处理效率。并且,数据库通过维护失败队列,可以在需要事务回滚时,可以获取到对应的索引信息,以基于索引信息进行回滚。该方式,一方面可以使得多版本信息可以保存在队列中,不会丢失。另一方面,多版本信息保存在队列中,无需对索引信息进行额外标记,使得加速器获取到的仅为索引信息,以使得加速器更快、更好的完成并行任务。130.在本技术实施例中,如上文所述,失败队列中的各操作可即时执行,也就是说,无需等待提交即可执行。131.s604,存储引擎调用硬件加速器完成批量操作。132.示例性的,存储引擎可基于执行引擎的指示,按照并行任务,调用硬件加速器执行对应的操作。133.图8为示例性示出的硬件加速器调用示意图。请参照图8,示例性的,cpu(即存储引擎)通过第一接口向内存加速器发送指示信号,用于触发硬件加速器,并将需要执行的任务(即索引信息)卸载到硬件加速器。134.内存加速器响应于从第一接口接收到的指示信号,可确定需要启动硬件加速器、需要启动的硬件加速器的类型以及需要启动的硬件加速单元的数量。示例性的,内存加速器触发第二硬件加速器,启动的第二硬件加速器中的加速单元的数量为32个,也可以理解为触发32个加速线程。其中,每个线程(或加速单元)用于处理一个索引信息。135.如上文所述,需要启动的硬件加速器的类型可以是基于索引信息的类型确定。例如,索引信息的类型为art索引,则调用第二硬件加速器(即art加速器)执行。再例如,索引信息的类型为哈希索引,则调用第一硬件加速器(即哈希加速器)执行。136.本实例中,以需要启动的硬件加速器为第二硬件加速器,并行任务中包括32个数据库操作(即分组中包括32个数据库操作,该数值仅为示意性举例,本技术不做限定)所对应的索引信息为例。137.示例性的,如上文所述,存储引擎可以向硬件加速器传输并行任务。例如,存储引擎可以通过第三接口向共享内存中写入并行任务,并行任务即包括但不限于本次需要并行执行的32个数据库操作所对应的索引信息以及对应的操作(即为增操作,也可以理解为是需要写入的数据),以指示硬件加速器对32个索引信息指示的空间写入对应的数据。138.可选地,存储引擎可以在共享内存中以队列的形式输入并行任务中的信息,本技术不做限定。139.示例性的,第二硬件加速器响应于内存处理器的触发,启动32个硬件加速单元,也可以理解为是启动32个加速线程,每个线程用于处理一个数据库操作,从而实现32个数据库操作的并行处理。140.示例性的,32个硬件加速单元中的每个硬件加速单元按序从共享内存中读取并行任务。举例说明,如图8所示,硬件加速单元1(图中未示出)从共享内存中读取索引11以及操作信息(例如包括增操作以及对应的数据,图中未示出),硬件加速单元2从共享内存中读取索引12以及操作信息,硬件加速单元3从共享内存中读取索引13以及操作信息,以及硬件加速单元4从共享内存中读取索引14以及操作信息。图中仅示出4个索引(即4个加速单元)的操作,实际上可以包括更多的,本技术不再逐一说明。141.仍参照图8,示例性的,各硬件加速单元(例如包括硬件加速单元1~硬件加速单元32)基于获取到的索引信息以及操作信息,在索引信息所指示的空间地址中写入对应的数据,以完成增操作。142.示例性的,硬件加速器每执行完成一个数据库操作,即将执行结果写入到共享内存的环形队列中。示例性的,执行结果包括成功或失败。143.示例性的,在环形队列中,每个执行结果可对应有执行id,该执行id可以是与cpu约定的。例如,cpu向共享内存中写入并行任务时,每个索引信息还可以对应有执行id,执行id可用于标识本次并行任务中的数据库操作。144.示例性的,硬件加速器可将执行结果与对应的执行id写入到环形队列中。需要说明的是,环形队列中的数据格式符合第三接口的通信协议的要求。也就是说,cpu和硬件加速器均可读取或写入环形队列中的数据。145.s605,存储引擎检测是否发生冲突。146.示例性的,存储引擎(即cpu,也可以是执行引擎执行,本技术不做限定)通过第三接口读取共享内存中的环形队列。存储引擎可基于每个结果所对应的执行id,确定每个结果所对应的数据库操作。147.举例说明,增操作1对应的索引11,其所对应的执行id为id1。硬件加速器(例如硬件加速单元1)基于索引21,向对应的空间内写入数据后,在环形队列中写入结果1。结果1包括id1以及成功指示信息,以用于指示id1所对应的数据库操作(即数据库操作1)的执行结果为成功,即已成功向数据库操作对应的索引所指向的空间写入数据。148.再举例说明,增操作2对应索引22,其所对应的执行id为id2。硬件加速单元2基于索引22,向对应的空间内写入数据,并检测到数据写入失败。硬件加速单元2在环形队列中写入结果2。结果2包括id2以及失败指示信息,以用于指示id2所对应的数据库操作(即数据库操作2)的执行结果为失败,即未能成功向数据库操作对应的索引所指向的空间写入数据。149.存储引擎可通过第三接口读取环形队列中的结果。一个示例中,如果读取到任一结果为失败,则确定发生操作冲突,执行s607。150.另一个示例中,存储引擎读取环形队列中的全部结果,且全部结果均为成功,则重复执行s604~s605。即,继续执行其它分组所对应的并行任务,直至增操作均处理完成。151.s606,事务提交。152.示例性的,如上文所述,提交队列中的删操作是在事务提交之前执行的。在事务提交之前,也可以理解为是事务中除删操作以外的操作均处理完成后,存储引擎按照执行引擎的并行任务,从提交队列中提取对应的索引信息,并调用硬件加速器并行完成删操作。具体实现与增操作相同,此处不再赘述。153.示例性的,存储引擎读取环形队列中的所有结果后,删除环形队列中的所有结果所对应的数据库操作在提交队列中的信息。举例说明,并行任务中包括删操作1的索引信息11及操作信息(例如删操作)。存储引擎调用硬件加速器执行删操作,以删除索引信息11指向的空间地址中的数据内容。硬件加速器执行对应的删操作后,向环形队列中写入执行结果。存储引擎从环形队列中读取结果。示例性的,存储引擎读取本次并行任务的所有数据库操作所对应的结果之后,可删除延迟队列中的相关信息。例如,存储引擎删除提交队列中与删操作1对应的信息,例如包括索引信息11及时间信息等。154.示例性的,存储引擎确定本次事务中的所有数据库操作均执行完成后,提交事务,并将事务的执行结果反馈给客户端。可选地,事务的执行结果包括但不限于:执行成功或执行失败。其中,事务执行失败是在数据库切换到悲观事务模式之后执行,仍然失败的情况下发送的。155.示例性的,存储引擎清除失败队列中的信息。156.s607,查询引擎切换到悲观事务模式。157.示例性的,存储引擎检测到发生冲突,可上报给查询引擎。查询引擎将事务模式状态机从乐观事务模式切换到悲观事务模式。158.s608,存储引擎调用硬件加速器执行串行数据操作。159.示例性的,执行引擎检测到查询引擎的状态机切换到悲观事务模式,则可基于当前模式,生成对应的串行任务。也就是说,在悲观事务模式下,数据操作将以串行的方式执行,以防止操作冲突。160.示例性的,执行引擎检测到切换到悲观事务模式后,指示存储引擎将事务回滚。如上文所述,提交队列中的删操作是在事务提交之前处理的,可以理解为提交队列中的删操作基本上不会发生操作冲突。失败队列中保存有增操作的反向操作所对应的信息(包括但不限于索引信息等),则存储引擎(即cpu)或者是存储引擎调用硬件加速器,执行失败队列中的所有已经完成的增操作对应的反向操作,以删除以增加的数据,即,存储引擎或硬件加速器可基于反向操作所对应的索引信息,删除索引信息指向的空间内的数据。161.需要说明的是,提交队列与失败队列中的信息仍然保存。162.示例性的,事务回滚之后,执行引擎生成串行任务。执行引擎可按照上文所述的调用方式,通过内存处理器调用硬件加速器。与上文实施例中不同的是,该示例中,仅需要调用一个硬件加速器中的硬件加速单元,以使其串行完成多个数据库操作。悲观事务模式的具体实现方式可参照已有技术实施例中的描述,此处不再赘述。163.与上文实施例中类似,硬件加速器每执行一个数据库操作,可将执行结果写入到环形队列中。cpu(例如执行引擎)可读取对应的执行结果,其实现方式与上文类似,此处不再赘述。164.示例性的,当事务的所有数据库操作执行完成后,存储引擎提交本次事务。165.在一种可能的实现方式中,悲观事务模式下,若cpu为多核处理器,则存储引擎也可以不调用硬件加速器,而是由cpu执行串行任务,本技术不做限定。166.在另一种可能的实现方式中,也可以是查询引擎执行冲突检测等操作,本技术不做限定。167.图9为示例性示出的读取数据的流程示意图,请参照图9,具体包括:客户端可接收到用户输入的数据库语句,以读取数据库(例如数据库表)中的数据。客户端将查询请求发送至服务端。服务端中的执行引擎接收到该查询请求,可对查询请求进行解析,以获取到对应的索引信息以及确定对应的数据库操作(即查操作)。执行引擎可生成查询任务,并向存储引擎指示该查询任务。查询任务包括但不限于:索引信息和查操作。168.示例性的,存储引擎可基于查询任务,从共享内存中读取对应的数据内容,并将读取到的数据内容反馈给客户端。169.需要说明的是,图9所示为直连读的方式,也就是说,用户可通过客户端输入指令,客户端与服务端进行本地交互。也可以理解为,图9中的交互过程均属于本地交互(或可理解为本地操作)。在另一种可能的实现方式中,用户还可以通过其它终端(例如电脑或平板等,本技术不做限定)与数据库所属设备(例如服务器等)进行通信连接。其中,该通信连接可以是socket(套接字)通信。相应的,终端上同样会部署数据库的客户端。用户在终端的客户端上输入查询指令,客户端与数据库的服务端进行网络通信,以通过通信连接将命令发送给服务端。170.进一步需要说明的是,本发明的技术方案除可应用于数据通信平台的数据库处理过程,还有可能应用于其他具有数据共享存取的计算平台。例如,数据存储平台、图计算平台、流式计算平台等。以数据存储平台为例,应用本技术方案可以完成数据快速读写,进而完成数据存储平台的快速写入和查询。另一方面高效的冲突校验机制可以作为通用数据库或嵌入式数据库的基本模块,减少事务冲突,提升数据库吞吐能力。171.本技术实施例可以根据上述方法示例对装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。172.图10为示例性示出的数据处理装置1000的结构示意图。请参照图10,数据处理装置1000中包括但不限于:获取模块1001、冲突检测模块1002、分组模块1003以及执行模块1004。其中,获取模块1001用于获取事务,事务包括n个数据库操作;n为大于1的正整数。冲突检测模块1002用于对n个数据库操作进行冲突检测,得到冲突检测结果。其中,冲突检测结果指示第一数据库操作与第二数据库操作互为冲突操作。第一数据库操作与第二数据库操作属于n个数据库操作。分组模块1003用于基于冲突检测结果,将n个数据库操作划分为m个分组。m个分组中的每个分组中包括多个数据库操作;其中,第一数据库操作与第二数据库操作属于不同的分组;m为大于1的正整数;执行模块1004用于并发执行m个分组中的每个分组中的多个数据库操作。173.在一个示例中,图10示出了本技术实施例的一种装置1000的示意性框图。装置1000可以包括:处理器1001和收发器/收发管脚1002,可选地,还包括存储器1003。该处理器1001可用于执行前述的实施例的各方法中的数据库所执行的步骤,并控制接收管脚接收信号,以及控制发送管脚发送信号。174.装置1000的各个组件通过总线1004耦合在一起,其中总线系统1004除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都标为总线系统1004。175.可选地,存储器1003可以用于前述方法实施例中的存储指令。176.其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。177.基于相同的技术构思,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包含至少一段代码,该至少一段代码可由计算机执行,以控制计算机用以实现上述方法实施例。178.基于相同的技术构思,本技术实施例还提供一种计算机程序,当该计算机程序被计算机执行时,用以实现上述方法实施例。179.所述程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。180.基于相同的技术构思,本技术实施例还提供一种处理器,该处理器用以实现上述方法实施例。上述处理器可以为芯片。181.结合本技术实施例公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。182.本领域技术人员应该可以意识到,在上述一个或多个示例中,本技术实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。183.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献