CN106503007B - 数据库操作方法及装置 - Google Patents
数据库操作方法及装置 Download PDFInfo
- Publication number
- CN106503007B CN106503007B CN201510563745.3A CN201510563745A CN106503007B CN 106503007 B CN106503007 B CN 106503007B CN 201510563745 A CN201510563745 A CN 201510563745A CN 106503007 B CN106503007 B CN 106503007B
- Authority
- CN
- China
- Prior art keywords
- database
- operating instruction
- prediction
- application server
- database operating
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24545—Selectivity estimation or determination
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24547—Optimisations to support specific applications; Extensibility of optimisers
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)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库操作方法及装置。方法包括:在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令;对数据库操作指令进行预测执行,将预测执行结果返回给应用服务器以供应用服务器确定下一个需要执行的数据库操作指令,并在本地记录数据库操作指令以及预测执行产生的预测执行数据;当获取到目标事务中的事务提交指令时,根据内存库中存储的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。本申请可以提高事务执行效率并增大事务吞吐量。
Description
【技术领域】
本申请涉及数据库技术领域,尤其涉及一种数据库操作方法及装置。
【背景技术】
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。一个事务由一系列数据库操作指令构成,例如结构化查询语言(Structured Query Language,SQL)语句,这些数据库操作指令之间存在切分条件以及跳转等逻辑,意味着在一次执行过程中该事务中可能有部分数据库操作指令被跳过不执行。但在现有技术中,由于无法预先获知事务中需要执行的数据库操作指令,因此只能按照执行逻辑边执行边判断,依次执行事务中的语句,以实现对数据库的操作。这种事务执行方式效率较低,事务吞吐量较低。
【发明内容】
本申请的多个方面提供一种数据库操作方法及装置,用以提高事务执行效率并增大事务吞吐量。
本申请的一方面,提供一种数据库操作方法,包括:
在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;
对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及所述预测执行产生的预测执行数据;
当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。
本申请的另一方面,提供一种数据库操作装置,包括:
获取模块,用于在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;
预测执行模块,用于对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及所述预测执行产生的预测执行数据;
控制执行模块,用于当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。
在本申请中,数据库操作装置与应用服务器相互配合,在应用服务器执行目标事务的过程加入预测执行过程,预先获得并记录目标事务需要执行的全部数据库操作指令以及预测执行数据,为真实执行事务提供了条件,之后根据记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行该目标事务,有利于提高执行效率,进而增大事务吞吐量。
【附图说明】
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中数据库应用系统的部署图;
图2为本申请一实施例提供的数据库应用系统的部署图;
图3为本申请一实施例提供的数据库操作方法的流程示意图;
图4为本申请一实施例提供的数据库操作装置的结构示意图。
【具体实施方式】
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为现有技术中数据库应用系统的部署图。如图1所示,该系统包括:应用服务器10和数据库20。其中,数据库20可以为一个,也可以为多个。图1中仅示例性的示出一个数据库20。当需要以事务方式对数据库20进行访问时,应用服务器10执行事务逻辑,依次将事务中的数据库操作指令作用于数据库20上。这种事务执行方式的效率较低,事务吞吐量较低。
针对现有技术存在的缺陷,本申请提供一种新的数据库应用系统,如图2所示。该系统在应用服务器10和数据库20之间增加数据库操作装置30。数据库操作装置30用以执行本申请提供的数据库操作方法,实现一种新的事务执行逻辑,即先对事务进行预测执行,提前获得该事务中需要执行的数据库操作指令,实现执行路径的预测,进而基于预测执行得到的数据库操作指令和预测执行数据在数据库20上实际执行事务,有利于提高事务执行效率,增大事务吞吐量。事务吞吐量是指单位时间内处理事务的数量。
值得说明的是,数据库操作装置30实际上是一种逻辑处理装置,其可以单独部署,位于应用服务器10和数据库20之间,也可以部署于应用服务器10一端实现,或者也可以部署于数据库20一端实现。
下面实施例将具体说明本申请技术方案的方法流程。
图3为本申请一实施例提供的数据库操作方法的流程示意图。如图3所示,该方法包括:
301、在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令。
302、对数据库操作指令进行预测执行,将预测执行结果返回给应用服务器以供应用服务器确定下一个需要执行的数据库操作指令,并在本地记录数据库操作指令以及预测执行产生的预测执行数据。
303、当获取到目标事务中的事务提交指令时,根据本地记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。
首先说明,为便于描述,本实施例将应用服务器需要执行的事务称为目标事务。目标事务主要包括用于对数据库进行操作的操作指令,除数据库操作指令之外还包括一些用于控制目标事务执行状态的控制指令,例如事务开始指令、事务提交指令、事务回滚指令等。这些指令实际上是由数据库语言编写的语句。根据数据库语言的不同,这些指令可以是不同语言编写的语句。举例说明,若采用SQL,则上述数据库操作指令和控制指令实际上是一系列的SQL语句。
具体的,应用服务器控制整个目标事务的执行逻辑,可以按照现有方式执行目标事务。数据库操作装置在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令。
在一可选实施方式中,应用服务器按照现有方式向数据库发送数据库操作指令,以实现对数据库的访问。数据库操作装置可以对应用服务器与数据库之间的通信进行监控,以拦截应用服务器发往数据库的数据库操作指令。
在另一可选实施方式中,对应用服务器的处理逻辑进行稍微修改,将原来向数据库发送数据库操作指令的逻辑改为向数据库操作装置发送。基于此,数据库操作装置可以接收应用服务器主动下发的数据库操作指令。
在此说明,若目标事务是显式事务,则目标事务中的首个指令是事务开始指令,如开始事务(begin transaction),基于此,数据库操作装置在获取应用服务器执行到的数据库操作指令之前,可以拦截应用服务器发往数据库的目标事务中的事务开始指令,根据该事务开始指令,获知需要执行目标事务。或者,数据库操作装置在获取应用服务器执行到的数据库操作指令之前,可以接收应用服务器主动下发的目标事务中的事务开始指令,根据该事务开始指令,获知需要执行目标事务。若目标事务是隐式事务,则目标事务的首个指令就是数据库操作指令,不包括获取事务开始指令的步骤。
数据库操作装置在获取应用服务器执行到的数据库操作指令后,对获取到的数据库操作指令进行预测执行,将预测执行结果返回给应用服务器,以供应用服务器确定下一个需要执行的数据库操作指令。其中,预测执行结果决定着目标事务的执行路径,这里的执行路径是指数据库操作指令之间的跳转逻辑。通过将预测执行结果返回给应用服务器,从而达到由应用服务器控制整个目标事务的执行逻辑的目的。
另外,数据库操作装置还需要在本地记录所获取到的数据库操作指令,以及记录对该数据库操作指令进行预测执行产生的预测执行数据。所述预测执行数据主要是指对数据库操作指令进行预测执行过程中的一些数据。
例如,数据库操作装置可以在本地创建内存库,将所获取到的数据库操作指令以及预测执行数据存入内存库中。
其中,数据库操作指令对数据库的操作主要是访问数据库中的数据,则可以模拟数据库操作指令的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行。基于此,一种对数据库操作指令进行预测执行的方式可以是:在本地创建的内存库中模拟数据库操作指令所需的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行。
进一步,一种在本地创建的内存库中模拟数据库操作指令的数据环境,基于所模拟的数据环境对数据库操作指令进行预测执行的实施方式包括:
将获取到的数据库操作指令拆分为一个读指令和一个写指令,将读指令运行于真正的数据库上,即在数据库中执行该读指令以获取读数据集(ReadSet),将读数据集存入本地内存库中,以模拟数据库操作指令所需的数据环境。然后,将写指令作用于内存库上,以实现对数据库操作指令的预测执行,即在内存库中执行写指令以修改读数据集,例如对读数据集中的有关数据进行更新或查询处理等。其中,执行写指令以修改读数据集可以产生结果数据集(affectRowInMemdb),该结果数据集包括预测执行结果。
在上述预测执行过程中,数据库操作装置可以在本地记录读指令所读取的读数据集以及执行写指令产生的结果数据集。由此可见,所述预测执行数据可以包括读数据集和结果数据集,或者也可以包括读数据集和结果数据集中的部分数据,例如能够对在数据库中实际执行目标事务产生有益效果的一些数据,例如一些数值的各种索引,例如一级索引、二级索引、主键值等。
数据库操作装置对依次获取到的数据库操作指令分别执行上述预测操作,获得各数据库操作指令及其对应的预测执行数据存储到内存库中。
当数据库操作装置获取到目标事务中的事务提交指令(即应用服务器执行到事务提交指令)时,则可以根据本地记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。
由上述可见,数据库操作装置与应用服务器相互配合,在应用服务器执行目标事务的过程加入预测执行过程,预先获得并记录目标事务需要执行的全部数据库操作指令以及预测执行数据,为真实执行事务提供了条件,之后在根据记录的数据库操作指令以及预测执行数据实际执行该目标事务时,可以提前获取有关数据信息并且可以减少指令之间的跳转等,有利于提高执行效率,增大事务吞吐量。
上述根据本地记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务的一种可选实施方式包括:
数据库操作装置向数据库下发本地记录的数据库操作指令,以指示数据库执行本地记录的所述数据库操作指令,并接收数据库返回的数据库操作指令的实际执行结果;然后,将数据库操作指令的实际执行结果与预测执行结果进行比较,若实际执行结果与预测执行结果相同,向数据库下发事务提交指令,以供数据库提交目标事务;若实际执行结果与预测执行结果不相同,向数据库下发事务回滚指令,以供数据库回滚目标事务。
在上述实施方式中,考虑到事务的原子性,通过将实际执行结果与预测执行结果进行比较,可以避免事务执行过程出错,有利于提高事务执行的成功概率。
进一步,在现有技术中,由于无法预先知道事务需要执行的全部数据库操作指令,所以只能按照事务的执行逻辑依次执行数据库操作指令,这会导致应用服务器与数据库之间的频繁交互,这在远程应用场景中将会消耗大量网络资源。但在本实施例中,通过预测执行过程已经预先获得目标事务需要执行的全部数据库操作指令,即本地记录的数据库操作指令,因此在向数据库下发本地记录的数据库操作指令,以指示数据库执行本地记录的所述数据库操作指令的过程中,可以将本地记录的数据库操作指令同时(或者一并)下发到数据库,有利于节约网络资源。另外,对于一些并行的数据库操作指令,数据库还可以并行操作,有利于进一步提高事务执行效率。
进一步,还可以将本地记录的所有数据库操作指令连同本地记录的预测执行数据一并下发给数据库。
进一步,在一种根据内存库中存储的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务的可选实施方式中,数据库操作装置可以根据本地记录的数据库操作指令,判断目标事务是否为单机事务;若判断结果为是,则根据本地记录的所述数据库操作指令以及预测执行数据,以单机事务处理逻辑控制数据库实际执行目标事务;若判断结果为否,则根据本地记录的数据库操作指令以及预测执行数据,以分布式事务处理逻辑控制数据库实际执行目标事务。
其中,基于预测执行过程中获得的数据库操作指令可以识别出目标事务是单机事务还是分布式事务。例如,可以判断本地记录的数据库操作指令的操作对象是否作用于同一物理设备上,若判断结果为是,则可以确定该目标事务为单机事务;若判断结果为否,则可以确定该目标事务为分布式事务。
由于分布式事务的处理逻辑和单机事务的处理逻辑有所不同,单机事务的处理逻辑相对简单,例如不涉及读写加锁等问题,所以所消耗的资源也相对较少。基于此,本实施例通过识别目标事务是否为单机事务,在识别为单机事务时采用单机事务的处理逻辑进行处理,有利于提高处理效率,节约处理成本。
在一可选实施方式中,若数据库操作装置获取到目标事务中的事务回滚指令(即应用服务器执行到事务回滚指令)时,可以直接清空本地内存库,实现回滚操作。在该情况下,由于目标事务并未在数据库中真正执行,所以数据库无需执行回滚操作,可见,在这种情况下,采用本实施例方法也可以提高事务执行效率。
下面以减库存事务为例,详细说明本申请技术方案的工作流程。
减库存事务的SQL代码如下,括号内的文字为注释:
begin transaction(开始事务)
select*from inventory where itemId=?for update(用商品id查看当前库存,并锁定)
if(item.inventory>0)
item.inventory--;
update inventory set item.inventory=$item.inventory where itemId=?
commit;
else
rollback;(如果当前库存大于0,则减少、更新商品库存并提交,否则回滚)
在实际执行过程中,应用服务器负责该减库存事务的整个逻辑,数据库操作装置(或者也可称为执行服务器)只会获取应用服务器执行到的开始事务,需要执行的SQL语句,以及提交/回滚指令。
首先,开始事务后,数据库操作装置在本地创建内存库;
当数据库操作装置获取到select*from inventory where itemId=?for update这条SQL语句时,将这条SQL语句直接在数据库中进行查找,并在本地内存库中记录下这次查询结果(即查询到的待处理数据,也就是当前库存量),并将全部查询结果返回给应用服务器。
值得说明的是,由于该SQL语句是一条查询语句,所以对该语句进行拆分与否其结果都相同,为了简化操作可以不对查询语句进行拆分。
应用服务器收到数据库操作装置返回的查询结果后,判断查询结果是否大于0,若判断结果为是,则将当前库存量减少,并执行更新语句,即update inventory setitem.inventory=$item.inventory where itemId=?;若判断结果为否,则执行回滚语句。
若数据库操作装置收到了rollback语句,则清空本地内存库。在这种情况下,因为事务并没有在数据库中执行,所以无需数据库执行回滚操作。
若数据库操作装置收到了更新语句,即update inventory set item.inventory=?where itemId=?,则将这条SQL语句拆解为一个读数据库指令,即select*frominventory where itemId=?和一个写数据库指令,即update inventory setitem.inventory=?where itemId=?;接着,将select*from inventory where itemId=?这个语句下发到数据库中,获得读数据集,将读数据集中的数据写入本地内存库中;再根据update inventory set item.inventory=?where itemId=?这个语句在本地内存库中进行更新操作,以获得结果数据集,并将结果数据集中的执行结果返回给应用服务器。应用服务器此时执行commit指令。其中,结果数据集和读数据集中的数据构成预测执行数据。
当数据库操作装置获取到commit指令后,基于内存库中存储的SQL语句以及预测执行数据,在数据库中执行该减库存事务,这次事务执行过程是真实执行的。
优选的,数据库操作装置可以一次性将本地内存库中的SQL语句全部提交到数据库中,数据库基于此进行执行,有利于节约传输SQL语句所消耗的网络资源。
这次真实执行也会返回执行结果,可以将预测执行结果与实际执行结果进行比较,如果比较结果为相同,则可以在数据库中提交这次事务,而如果比较结果为不相同,则认为提交是失败的,由于在这种情况下,事务本身其实一直都没有真正的在数据库中执行提交,所以可以简单地回滚整个请求,让应用服务器重新提交即可。
其中,经过上述预测执行,已经获得了所有的需要执行的SQL语句,以及他们对应的预测执行数据,例如全部切分条件,数值的索引等,而这些数据足以让我们提前对事务是否是单机事务做出判断。基于此,可以采用相应的事务处理逻辑进行处理,有利于节约资源。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
图4为本申请一实施例提供的数据库操作装置的结构示意图。如图4所示,该装置包括:获取模块41、预测执行模块42和控制执行模块43。
获取模块41,用于在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令。
预测执行模块42,用于对数据库操作指令进行预测执行,将预测执行结果返回给应用服务器以供应用服务器确定下一个需要执行的数据库操作指令,并在本地记录数据库操作指令以及预测执行产生的预测执行数据。
控制执行模块43,用于当获取到目标事务中的事务提交指令时,根据内存库中存储的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。
在一可选实施方式中,获取模块41具体可用于:拦截应用服务器发往数据库的数据库操作指令;或者,接收应用服务器主动下发的数据库操作指令。
在一可选实施方式中,获取模块41还用于:在获取应用服务器执行到的目标事务中的数据库操作指令之前,拦截应用服务器发往数据库的目标事务中的事务开始指令;或者,接收应用服务器主动下发的目标事务中的事务开始指令。
在一可选实施方式中,预测执行模块42具体用于:
在本地创建的内存库中模拟数据库操作指令所需的数据环境,基于模拟的数据环境对数据库操作指令进行预测执行。
进一步,预测执行模块42具体用于:
将数据库操作指令拆分为读指令和写指令;
在数据库中执行读指令以获取读数据集,将读数据集存入内存库中以模拟数据库操作指令的数据环境;
在内存库中执行写指令以修改读数据集。
在一可选实施方式中,控制执行模块43具体用于:
向数据库下发本地记录的数据库操作指令,以指示数据库执行本地记录的数据库操作指令,并接收数据库返回的数据库操作指令的实际执行结果;
若实际执行结果与预测执行结果相同,向数据库下发事务提交指令,以供数据库提交目标事务;
若实际执行结果与预测执行结果不相同,向数据库下发事务回滚指令,以供数据库回滚目标事务。
考虑到事务的原子性,控制执行模块43通过将实际执行结果与预测执行结果进行比较,可以避免事务执行过程出错,有利于提高事务执行的成功概率。
进一步,控制执行模块43具体用于:在向数据库下发本地记录的数据库操作指令,以指示数据库执行本地记录的数据库操作指令的过程中,将本地记录的数据库操作指令同时下发给数据库,有利于节约网络资源。
在一可选实施方式中,控制执行模块43具体用于:
根据本地记录的数据库操作指令,判断目标事务是否为单机事务;
若判断结果为是,则根据本地记录的数据库操作指令以及预测执行数据,以单机事务处理逻辑控制数据库实际执行目标事务;
若判断结果为否,则根据本地记录的数据库操作指令以及预测执行数据,以分布式事务处理逻辑控制数据库实际执行目标事务。
由于分布式事务的处理逻辑和单机事务的处理逻辑有所不同,单机事务的处理逻辑相对简单,例如不涉及读写加锁等问题,所以所消耗的资源也相对较少。基于此,控制执行模块43通过识别目标事务是否为单机事务,在识别为单机事务时采用单机事务的处理逻辑进行处理,有利于提高处理效率,节约处理成本。
在一可选实施方式中,预测执行模块42还用于:在获取到目标事务中的事务回滚指令时,删除本地记录的数据库操作指令以及预测执行数据,例如清空内存库。
本实施例提供的数据库操作装置,其可以单独部署,位于应用服务器和数据库之间,也可以部署于应用服务器一端实现,或者也可以部署于数据库一端实现。
本实施例提供的数据库操作装置,与应用服务器相互配合,在应用服务器执行目标事务的过程加入预测执行过程,在预测执行过程中,可以提前获得目标事务的执行路径,即真正需要执行的数据库操作指令,并记录预测执行产生的预测执行数据,为真实执行事务提供了条件,之后在根据记录的数据库操作指令以及预测执行数据实际执行该目标事务时,例如基于预测执行数据可以提前获取有关数据信息并且可以减少指令之间的跳转等,因此可以提高执行效率,增大事务吞吐量。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (16)
1.一种数据库操作方法,其特征在于,包括:
在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;
对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及所述预测执行产生的预测执行数据;
当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。
2.根据权利要求1所述的方法,其特征在于,所述在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令,包括:
拦截所述应用服务器发往所述数据库的所述数据库操作指令;或者
接收所述应用服务器主动下发的所述数据库操作指令。
3.根据权利要求1所述的方法,其特征在于,所述对所述数据库操作指令进行预测执行,包括:
在本地创建的内存库中模拟所述数据库操作指令所需的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行。
4.根据权利要求3所述的方法,其特征在于,所述在本地创建的内存库中模拟所述数据库操作指令所需的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行,包括:
将所述数据库操作指令拆分为读指令和写指令;
在所述数据库中执行所述读指令以获取读数据集,将所述读数据集存入所述内存库中以模拟所述数据库操作指令的数据环境;
在所述内存库中执行所述写指令以修改所述读数据集。
5.根据权利要求1所述的方法,其特征在于,所述根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务,包括:
向所述数据库下发本地记录的所述数据库操作指令,以指示所述数据库执行所述数据库操作指令,并接收所述数据库返回的所述数据库操作指令的实际执行结果;
若所述实际执行结果与所述预测执行结果相同,向所述数据库下发所述事务提交指令,以供所述数据库提交所述目标事务;
若所述实际执行结果与所述预测执行结果不相同,向所述数据库下发事务回滚指令,以供所述数据库回滚所述目标事务。
6.根据权利要求5所述的方法,其特征在于,所述向所述数据库下发本地记录的所述数据库操作指令,包括:
将本地记录的所述数据库操作指令同时下发给所述数据库。
7.根据权利要求1所述的方法,其特征在于,所述根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务,包括:
根据本地记录的所述数据库操作指令,判断所述目标事务是否为单机事务;
若判断结果为是,则根据本地记录的所述数据库操作指令以及所述预测执行数据,以单机事务处理逻辑控制所述数据库实际执行所述目标事务;
若判断结果为否,则根据本地记录的所述数据库操作指令以及所述预测执行数据,以分布式事务处理逻辑控制所述数据库实际执行所述目标事务。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
当获取到所述目标事务中的事务回滚指令时,删除本地记录的所述数据库操作指令以及所述预测执行数据。
9.一种数据库操作装置,其特征在于,包括:
获取模块,用于在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;
预测执行模块,用于对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及所述预测执行产生的预测执行数据;
控制执行模块,用于当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。
10.根据权利要求9所述的装置,其特征在于,所述获取模块具体用于:
拦截所述应用服务器发往所述数据库的所述数据库操作指令;或者
接收所述应用服务器主动下发的所述数据库操作指令。
11.根据权利要求9所述的装置,其特征在于,所述预测执行模块具体用于:
在本地创建的内存库中模拟所述数据库操作指令所需的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行。
12.根据权利要求11所述的装置,其特征在于,所述预测执行模块具体用于:
将所述数据库操作指令拆分为读指令和写指令;
在所述数据库中执行所述读指令以获取读数据集,将所述读数据集存入所述内存库中以模拟所述数据库操作指令的数据环境;
在所述内存库中执行所述写指令以修改所述读数据集。
13.根据权利要求9所述的装置,其特征在于,所述控制执行模块具体用于:
向所述数据库下发本地记录的所述数据库操作指令,以指示所述数据库执行所述数据库操作指令,并接收所述数据库返回的所述数据库操作指令的实际执行结果;
若所述实际执行结果与所述预测执行结果相同,向所述数据库下发所述事务提交指令,以供所述数据库提交所述目标事务;
若所述实际执行结果与所述预测执行结果不相同,向所述数据库下发事务回滚指令,以供所述数据库回滚所述目标事务。
14.根据权利要求13所述的装置,其特征在于,所述控制执行模块具体用于:
将本地记录的所述数据库操作指令同时下发给所述数据库。
15.根据权利要求9所述的装置,其特征在于,所述控制执行模块具体用于:
根据本地记录的所述数据库操作指令,判断所述目标事务是否为单机事务;
若判断结果为是,则根据本地记录的所述数据库操作指令以及所述预测执行数据,以单机事务处理逻辑控制所述数据库实际执行所述目标事务;
若判断结果为否,则根据本地记录的所述数据库操作指令以及所述预测执行数据,以分布式事务处理逻辑控制所述数据库实际执行所述目标事务。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述预测执行模块还用于:
在获取到所述目标事务中的事务回滚指令时,删除本地记录的所述数据库操作指令以及所述预测执行数据。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510563745.3A CN106503007B (zh) | 2015-09-08 | 2015-09-08 | 数据库操作方法及装置 |
JP2018511371A JP6795259B2 (ja) | 2015-09-08 | 2016-08-30 | データベーストランザクションを最適化するための方法および装置 |
US15/757,087 US11500869B2 (en) | 2015-09-08 | 2016-08-30 | Method and apparatus for optimizing database transactions |
PCT/CN2016/097268 WO2017041639A1 (zh) | 2015-09-08 | 2016-08-30 | 数据库操作方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510563745.3A CN106503007B (zh) | 2015-09-08 | 2015-09-08 | 数据库操作方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106503007A CN106503007A (zh) | 2017-03-15 |
CN106503007B true CN106503007B (zh) | 2019-07-23 |
Family
ID=58239114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510563745.3A Active CN106503007B (zh) | 2015-09-08 | 2015-09-08 | 数据库操作方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11500869B2 (zh) |
JP (1) | JP6795259B2 (zh) |
CN (1) | CN106503007B (zh) |
WO (1) | WO2017041639A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503027B (zh) * | 2015-09-08 | 2020-02-21 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
CN109766330B (zh) * | 2018-12-29 | 2020-02-14 | 北京三快在线科技有限公司 | 数据分片方法、装置、电子设备及存储介质 |
CN111198913A (zh) * | 2019-12-10 | 2020-05-26 | 北京康沙士信息科技有限公司 | 一种异构数据库网络融合的方法及系统 |
CN111694798B (zh) * | 2020-04-23 | 2023-04-25 | 武汉达梦数据库股份有限公司 | 一种基于日志解析的数据同步方法及数据同步系统 |
CN111930830B (zh) * | 2020-06-22 | 2024-04-16 | 心有灵犀科技股份有限公司 | 一种基于共享数据库的分布式事务数据处理方法及系统 |
CN112214790A (zh) * | 2020-09-17 | 2021-01-12 | 杭州安恒信息技术股份有限公司 | 数据库敏感操作的阻断方法、装置、电子装置和存储介质 |
CN117033083B (zh) * | 2023-09-28 | 2024-01-19 | 武汉吧哒科技股份有限公司 | 数据备份方法、系统及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212481A (zh) * | 2007-12-21 | 2008-07-02 | 华为技术有限公司 | 一种事务控制方法、系统和装置 |
CN102662640A (zh) * | 2012-04-12 | 2012-09-12 | 苏州睿云智芯微电子有限公司 | 双重分支目标缓冲器和分支目标处理系统及处理方法 |
CN103092955A (zh) * | 2013-01-17 | 2013-05-08 | 华为技术有限公司 | 检查点操作方法、装置及系统 |
CN103186733A (zh) * | 2011-12-30 | 2013-07-03 | 中国移动通信集团广东有限公司 | 数据库用户行为管理系统和数据库用户行为管理方法 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04245342A (ja) | 1991-01-30 | 1992-09-01 | Toshiba Corp | 分散型データベースシステム |
US5758144A (en) | 1994-06-24 | 1998-05-26 | International Business Machines Corporation | Database execution cost and system performance estimator |
JP2001142898A (ja) * | 1999-11-16 | 2001-05-25 | Hitachi Ltd | 問合せ処理の実行可否判定方法 |
CA2384259A1 (en) | 2002-04-29 | 2003-10-29 | Ibm Canada Limited-Ibm Canada Limitee | Access concurrency for cached authorization information in relational database systems |
JP3602840B2 (ja) * | 2002-10-22 | 2004-12-15 | 株式会社東芝 | 命令の投機的実行制御装置およびその方法 |
US7698348B2 (en) | 2003-12-19 | 2010-04-13 | Kinaxis Holdings Inc. | Extended database engine providing versioning and embedded analytics |
US7493419B2 (en) * | 2005-12-13 | 2009-02-17 | International Business Machines Corporation | Input/output workload fingerprinting for input/output schedulers |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US8224845B2 (en) * | 2008-01-21 | 2012-07-17 | International Business Machines Corporation | Transaction prediction modeling method |
CN101587447B (zh) | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
JP2010066922A (ja) | 2008-09-09 | 2010-03-25 | Hitachi Ltd | データベース管理方法、データベース管理プログラム、および、データベース管理システム |
CN101739298B (zh) | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
JP2010198581A (ja) | 2009-02-27 | 2010-09-09 | Hitachi Ltd | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
US20120227045A1 (en) | 2009-12-26 | 2012-09-06 | Knauth Laura A | Method, apparatus, and system for speculative execution event counter checkpointing and restoring |
US10803066B2 (en) | 2010-06-29 | 2020-10-13 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators |
CN103136308A (zh) * | 2011-11-23 | 2013-06-05 | 英业达股份有限公司 | 应用系统数据库更新的方法和系统 |
US20130191105A1 (en) * | 2012-01-20 | 2013-07-25 | International Business Machines Coporation | Virtual systems testing |
US20130275685A1 (en) | 2012-04-16 | 2013-10-17 | International Business Machines Corporation | Intelligent data pre-caching in a relational database management system |
WO2013160721A1 (en) | 2012-04-26 | 2013-10-31 | Amadeus S.A.S. | Database system using batch-oriented computation |
US9477707B2 (en) * | 2013-01-29 | 2016-10-25 | Nec Corporation | System and methods for predicting query execution time for concurrent and dynamic database workloads |
US20140223418A1 (en) * | 2013-02-02 | 2014-08-07 | Ca, Inc. | Performance data in virtual services |
US9418129B2 (en) | 2013-03-08 | 2016-08-16 | Oracle International Corporation | Adaptive high-performance database redo log synchronization |
US9195606B2 (en) | 2013-03-15 | 2015-11-24 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
US9165425B2 (en) * | 2013-04-08 | 2015-10-20 | Steelseries Aps | Method and apparatus for configuring a computing environment |
JP6160419B2 (ja) | 2013-10-02 | 2017-07-12 | 富士通株式会社 | 情報処理プログラム、情報処理装置及び情報処理方法 |
US9477481B2 (en) * | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
US9684514B2 (en) * | 2014-09-10 | 2017-06-20 | International Business Machines Corporation | Inference based condition code generation |
US9928064B2 (en) | 2015-11-10 | 2018-03-27 | International Business Machines Corporation | Instruction stream modification for memory transaction protection |
US10733091B2 (en) * | 2016-05-03 | 2020-08-04 | International Business Machines Corporation | Read and write sets for ranges of instructions of transactions |
US10572373B2 (en) * | 2017-04-20 | 2020-02-25 | International Business Machines Corporation | Automated test generation for multi-interface and multi-platform enterprise virtualization management environment |
US10481958B2 (en) * | 2017-12-29 | 2019-11-19 | Intel IP Corporation | Speculative execution tag for asynchronous DRAM refresh |
-
2015
- 2015-09-08 CN CN201510563745.3A patent/CN106503007B/zh active Active
-
2016
- 2016-08-30 JP JP2018511371A patent/JP6795259B2/ja active Active
- 2016-08-30 US US15/757,087 patent/US11500869B2/en active Active
- 2016-08-30 WO PCT/CN2016/097268 patent/WO2017041639A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212481A (zh) * | 2007-12-21 | 2008-07-02 | 华为技术有限公司 | 一种事务控制方法、系统和装置 |
CN103186733A (zh) * | 2011-12-30 | 2013-07-03 | 中国移动通信集团广东有限公司 | 数据库用户行为管理系统和数据库用户行为管理方法 |
CN102662640A (zh) * | 2012-04-12 | 2012-09-12 | 苏州睿云智芯微电子有限公司 | 双重分支目标缓冲器和分支目标处理系统及处理方法 |
CN103092955A (zh) * | 2013-01-17 | 2013-05-08 | 华为技术有限公司 | 检查点操作方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
JP6795259B2 (ja) | 2020-12-02 |
US11500869B2 (en) | 2022-11-15 |
CN106503007A (zh) | 2017-03-15 |
JP2018526746A (ja) | 2018-09-13 |
US20180181618A1 (en) | 2018-06-28 |
WO2017041639A1 (zh) | 2017-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106503007B (zh) | 数据库操作方法及装置 | |
Reyes-Ortiz et al. | Big data analytics in the cloud: Spark on hadoop vs mpi/openmp on beowulf | |
CN106897306B (zh) | 数据库操作方法及装置 | |
CN103890709B (zh) | 基于缓存的键值数据库映射和复制 | |
CN106294772B (zh) | 分布式内存列式数据库的缓存管理方法 | |
KR101732319B1 (ko) | 목표 지향적 빅데이터 비즈니스 분석 프레임워크 | |
CN110292775A (zh) | 获取差异数据的方法及装置 | |
CN103733194A (zh) | 动态组织云计算资源以便于发现 | |
CN101587491A (zh) | 使用运行时可重配置硬件的混合数据库系统 | |
CN110019251A (zh) | 一种数据处理系统、方法及设备 | |
CN107148617A (zh) | 日志协调存储组的自动配置 | |
CN106897123B (zh) | 数据库操作方法及装置 | |
Zhang et al. | CDBTune+: An efficient deep reinforcement learning-based automatic cloud database tuning system | |
CN106855858A (zh) | 数据库操作方法及装置 | |
CN103226748B (zh) | 基于关联存储器的项目管理系统 | |
WO2020092279A1 (en) | Recording lineage in query optimization | |
CN106503027A (zh) | 数据库操作方法及装置 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
KR102523699B1 (ko) | 제조 환경을 위한 연합학습 시스템 | |
Valavala et al. | Automatic database index tuning using machine learning | |
US10191973B1 (en) | Patent analytics using mapreduce clustering | |
CN110442555A (zh) | 一种选择性预留空间的减少碎片的方法及系统 | |
TWI735512B (zh) | 資料庫操作方法及裝置 | |
Rahman et al. | Optimizing and enhancing performance of database engine using data clustering technique | |
TWI805544B (zh) | 資料庫操作方法及裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |