数据库操作方法及装置制造方法及图纸

技术编号:15724588 阅读:25 留言:0更新日期:2017-06-29 10:38
本申请提供一种数据库操作方法及装置。一种方法包括:在应用服务器执行目标事务的过程中,依次获取应用服务器执行到的目标事务中的数据库操作指令;对数据库操作指令进行预测执行,将预测执行结果返回给应用服务器以供应用服务器确定下一个需要执行的数据库操作指令,并在本地记录数据库操作指令以及在数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录预测执行产生的预测执行数据;当获取到目标事务中的事务提交指令时,根据本地记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行目标事务。本申请可以提高事务执行效率,提高吞吐量。

【技术实现步骤摘要】
数据库操作方法及装置
本申请涉及数据库
,尤其涉及一种数据库操作方法及装置。
技术介绍
数据库事务(DatabaseTransaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。一个事务由一系列数据库操作指令构成,例如语句。在数据库操作中,为了保证并发读取数据的正确性,提出了事务隔离级别的概念。在标准结构化查询语言(StructuredQueryLanguage,SQL)规范中,定义了4个事务隔离级别,其中,读已提交(ReadCommitted)是多数应用程序优选考虑的隔离级别,它可以避免脏读取,而且具有较好的并发性能,但仍会遇到不可重复读的问题。对于读已提交隔离级别事务面临的不可重复读问题,可以通过forupdate语句临时性的提升读已提交隔离级别事务中某个数据的隔离级别,以保证该数据可重复读取,但这会严重降低系统的并发性能,导致执行效率较低,事务吞吐量较低。
技术实现思路
本申请的多个方面提供一种数据库操作方法及装置,用以保证数据库系统的并发性能,提高事务执行效率并增大事务吞吐量。本申请的一方面,提供一种数据库操作方法,包括:在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录所述预测执行产生的预测执行数据;当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。本申请的另一方面,提供一种数据库操作方法,包括:在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于被加锁的非修改数据库类指令时记录所述预测执行产生的预测执行数据;当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。本申请的又一方面,提供一种数据库操作装置,包括:获取模块,用于在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;预测执行模块,用于对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录所述预测执行产生的预测执行数据;控制执行模块,用于当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。本申请的又一方面,提供一种数据库操作装置,包括:获取模块,用于在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;预测执行模块,用于对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于被加锁的非修改数据库类指令时记录所述预测执行产生的预测执行数据;控制执行模块,用于当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。在本申请中,数据库操作装置与应用服务器相互配合,在应用服务器执行目标事务的过程加入预测执行过程,预先获得并记录目标事务需要执行的全部数据库操作指令,并仅针对属于修改数据库类指令和被加锁的非修改数据库类指令的数据库操作指令,或者仅针对属于被加锁的非修改数据库类指令的数据库操作指令记录预测执行产生的预测执行数据,以适应于读已提交隔离级别下的加锁方案,为真实执行事务提供了条件,之后根据记录的数据库操作指令以及预测执行数据,控制应用服务器对应的数据库实际执行该目标事务,有利于提高执行效率,进而增大事务吞吐量。【附图说明】为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中数据库应用系统的部署图;图2为本申请一实施例提供的数据库应用系统的部署图;图3为本申请另一实施例提供的数据库操作方法的流程示意图;图4为本申请又一实施例提供的数据库操作方法的流程示意图;图5为本申请又一实施例提供的数据库操作装置的结构示意图;图6为本申请又一实施例提供的数据库操作装置的结构示意图。【具体实施方式】为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为现有技术中数据库应用系统的部署图。如图1所示,该系统包括:应用服务器10和数据库20。其中,应用服务器10可以为一个,也可以为多个。数据库20可以为一个,也可以为多个。图1中仅示例性的示出一个应用服务器10和一个数据库20。当需要以事务方式对数据库20进行访问时,应用服务器10执行事务逻辑,依次将事务中的数据库操作指令作用于数据库20上。由于无法预先获知事务中需要执行的数据库操作指令,导致事务执行效率较低,尤其是在配置读已提交隔离级别下通过forupdate语句对数据进行加锁的方案中,其执行效率会更低,事务吞吐量较低。针对现有技术存在的缺陷,本申请提供一种新的数据库应用系统,如图2所示。该系统在应用服务器10和数据库20之间增加数据库操作装置30。数据库操作装置30用以执行本申请提供的数据库操作方法,在读已提交这一隔离级别下的加锁方案中实现一种新的事务执行逻辑,即先对事务进行预测执行,提前获得该事务中需要执行的数据库操作指令,实现执行路径的预测,并且结合读已提交这一隔离级别且加锁的情况,仅仅针对属于修改数据库类指令和被加锁的非修改数据库类指令的数据库操作指令,或者仅仅针对属于被加锁的非修改数据库类指令的数据库操作指令记录对其进行预测执行所产生的预测执行数据,进而基于预测执行得到的数据库操作指令以及预测执行数据在数据库20上实际执行事务,有利于提高事务执行效率,增大事务吞吐量。事务吞吐量是指单位时间内处理事务的数量。值得说明的是,数据库操作装置30实际上是一种逻辑处理装置,其可以单独部署,位于应用服务器10和数据库20之间本文档来自技高网...
数据库操作方法及装置

【技术保护点】
一种数据库操作方法,其特征在于,包括:在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录所述预测执行产生的预测执行数据;当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。

【技术特征摘要】
1.一种数据库操作方法,其特征在于,包括:在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录所述预测执行产生的预测执行数据;当获取到所述目标事务中的事务提交指令时,根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务。2.根据权利要求1所述的方法,其特征在于,所述在所述数据库操作指令属于修改数据库类指令和被加锁的非修改数据库类指令其中之一时记录所述预测执行产生的预测执行数据,包括:在所述数据库操作指令属于被加锁的非修改数据库类指令时,仅记录所述数据库操作指令所操作的数据的主键ID和版本号作为所述预测执行数据。3.根据权利要求1所述的方法,其特征在于,还包括:在所述应用服务器执行所述目标事务之前,配置所述数据库为读已提交隔离级别。4.根据权利要求1所述的方法,其特征在于,所述对所述数据库操作指令进行预测执行,包括:若所述数据库操作指令属于修改数据库类指令,在本地创建的内存库中模拟所述数据库操作指令的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行;若所述数据库操作指令属于非修改数据库类指令,在所述数据库中执行所述数据库操作指令,以对所述数据库操作指令进行预测执行。5.根据权利要求4所述的方法,其特征在于,所述在本地创建的内存库中模拟所述数据库操作指令所需的数据环境,基于所述模拟的数据环境对所述数据库操作指令进行预测执行,包括:将所述数据库操作指令拆分为读指令和写指令;在所述数据库中执行所述读指令以获取读数据集,将所述读数据集存入所述内存库中以模拟所述数据库操作指令的数据环境;在所述内存库中执行所述写指令以修改所述读数据集。6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据本地记录的所述数据库操作指令以及所述预测执行数据,控制所述应用服务器对应的数据库实际执行所述目标事务,包括:向所述数据库下发本地记录的所述数据库操作指令,以指示所述数据库执行所述数据库操作指令,并接收所述数据库返回的所述数据库操作指令的实际执行结果;若所述实际执行结果与所述预测执行结果相同,向所述数据库下发所述事务提交指令,以供所述数据库提交所述目标事务;若所述实际执行结果与所述预测执行结果不相同,向所述数据库下发事务回滚指令,以供所述数据库回滚所述目标事务。7.一种数据库操作方法,其特征在于,包括:在应用服务器执行目标事务的过程中,依次获取所述应用服务器执行到的所述目标事务中的数据库操作指令;对所述数据库操作指令进行预测执行,将预测执行结果返回给所述应用服务器以供所述应用服务器确定下一个需要执行的数据库操作指令,并在本地记录所述数据库操作指令以及在所述数据库操作指令属于被加锁的非修改数据库类指令时记录所述预测执行产生的预测执行数据;当获取到所述目标事务中的事务提交指令时,根据本地记录的所述...

【专利技术属性】
技术研发人员:王晶昱
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1