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

技术编号:15650000 阅读:46 留言:0更新日期:2017-06-17 02:55
本申请提供一种数据库操作方法及装置。方法包括:获取对待执行事务进行预测执行时产生的预测执行数据,预测执行数据包括待执行事务所需的目标数据的主键值以及目标数据在预测执行时的取值;根据目标数据的主键值,从待执行事务对应的目标分库中加载目标数据的当前取值;在目标数据的当前取值与目标数据在预测执行时的取值不相同时,判断目标数据的当前取值是否影响待执行事务的业务逻辑;若目标数据的当前取值不影响待执行事务的业务逻辑,将目标数据的当前取值作为待执行事务对应的版本数据记录在目标分库上。本申请可以节约多版本并发控制的存储开销,减少数据库所需的磁盘容量。

【技术实现步骤摘要】
数据库操作方法及装置
本申请涉及数据库
,尤其涉及一种数据库操作方法及装置。
技术介绍
单机数据库能够方便的满足用户对于关系查询类的需求,是目前业务应用中最常使用的数据库类型。然而,对于很多应用而言,单机数据库最终都会碰到单机性能上的瓶颈,例如在每秒事务处理量(TransactionPerSecond,TPS)、每秒查询量(QueryPerSecond,QPS)、内存容量、磁盘容量等一系列系统资源上会碰到各类限制。分布式数据库就是为解决这个问题而诞生的,将原来单机数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。在分布式数据库系统中,当运行一个涉及多个分库的事务时,一个分库可能需要从别的分库上获取数据。由于在分布式数据库系统中各分库是异步运行的,运行速度有快有慢,所以当一个运行慢的分库向一个运行快的分库获取所需数据时,为了保证运行慢的分库能够从运行快的分库上获取到所需的数据,一般会采用多版本并发控制(Multi-VersionConcurrencyControl,MVCC)机制。对于同一数据,MVCC机制会针对每批涉及该数据的事务分别在分库上记录相应版本的数据,从而让运行慢的分库能够从运行快的分库上读取相应版本的数据。但是,MVCC机制会增加数据库的存储开销。举例说明,在分布式数据库系统中,处理速度为每秒钟100批事务,假设某个分库因为故障延误了10分钟,则其他分库上需要保存10×60×100=60000个数据版本,这会占用分库上很大磁盘容量。
技术实现思路
本申请的多个方面提供一种数据库操作方法及装置,用以节约多版本并发控制的存储开销,减少数据库所需的磁盘容量。本申请的一方面,提供一种数据库操作方法,包括:获取对待执行事务进行预测执行时产生的预测执行数据,所述预测执行数据包括所述待执行事务所需的目标数据的主键值以及所述目标数据在预测执行时的取值;根据所述目标数据的主键值,从所述待执行事务对应的目标分库中加载所述目标数据的当前取值;在所述目标数据的当前取值与所述目标数据在预测执行时的取值不相同时,判断所述目标数据的当前取值是否影响所述待执行事务的业务逻辑;若所述目标数据的当前取值不影响所述待执行事务的业务逻辑,将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上。本申请的另一方面,提供一种数据库操作装置,包括:获取模块,用于获取对待执行事务进行预测执行时产生的预测执行数据,所述预测执行数据包括所述待执行事务所需的目标数据的主键值以及所述目标数据在预测执行时的取值;加载模块,用于根据所述目标数据的主键值,从所述待执行事务对应的目标分库中加载所述目标数据的当前取值;判断模块,用于在所述目标数据的当前取值与所述目标数据在预测执行时的取值不相同时,判断所述目标数据的当前取值是否影响所述待执行事务的业务逻辑;版本数据处理模块,用于在所述目标数据的当前取值不影响所述待执行事务的业务逻辑时,将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上。在本申请中,预先对待执行事务进行预测执行,预先获得待执行事务所需的目标数据的主键值以及该目标数据在预测执行时的取值,在待执行事务的实际执行过程中,将目标数据在预测执行时的取值与目标数据的当前取值进行比较,只有在目标数据存在冲突但目标数据的当前取值又不影响待执行事务的业务逻辑的情况下,才将目标数据的当前取值作为待执行事务对应的版本数据记录在分库上。本申请一方面实现了记录多版本数据的目的,有利于解决分布式数据库系统中分库之间相互读取数据时无法读取相应版本数据的问题,另一方面,只有在数据存在冲突且还要正常执行待执行事务的情况下才记录版本数据,有利于减少所记录的数据量,节约存储开销,减少数据库所需的磁盘容量。【附图说明】为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中数据库应用系统的部署图;图2为本申请一实施例提供的数据库应用系统的部署图;图3为本申请一实施例提供的数据库操作方法的流程示意图;图4为本申请另一实施例提供的数据库操作装置的结构示意图;图5为本申请又一实施例提供的数据库操作装置的结构示意图。【具体实施方式】为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图1为现有技术中一种数据库应用系统的部署图。如图1所示,该系统包括:应用服务器10和至少两个数据库20。至少两个数据库20构成一分布式数据库系统,每个数据库20作为该分布式数据库系统中的一个分库。在分布式数据库系统中,当运行一个涉及多个分库的事务时,一个分库可能需要从别的分库上获取数据。由于在分布式数据库系统中各分库是异步运行的,运行速度有快有慢,所以当一个运行慢的分库向一个运行快的分库获取所需数据时,为了保证运行慢的分库能够从运行快的分库上获取到所需的数据,一般会采用MVCC机制,即对于同一数据,MVCC机制会针对每批涉及该数据的事务分别在分库上记录相应版本的数据,从而让运行慢的分库能够从运行快的分库上读取相应版本的数据。但是,MVCC机制会增加数据库的存储开销,记录的多版本数据会占用分库上很大磁盘容量。针对现有分布式数据库存在的缺陷,本申请提供一种数据库操作方法,主要原理是:预先对待执行事务进行预测执行,预先获得待执行事务所需的目标数据的主键值以及该目标数据在预测执行时的取值,在待执行事务的实际执行过程中,将目标数据在预测执行时的取值与目标数据的当前取值进行比较,只有在目标数据存在冲突但其当前取值又不影响待执行事务的业务逻辑的情况下,才将目标数据的当前取值作为待执行事务对应的版本数据记录在分库上;而在其它情况下,则禁止在分库上为待执行事务记录相应的版本数据。这样不仅实现了记录多版本数据的目的,有利于解决分布式数据库系统中分库之间相互读取数据时无法读取相应版本数据的问题,而且只有在数据存在冲突且不影响待执行事务的业务逻辑的情况下才记录版本数据,减少所记录的版本数据,节约存储开销,有利于减少数据库所需的磁盘容量。为了实现对待执行事务进行预测执行,本申请提供一种新的数据库应用系统,如图2所示。该系统在应用服务器10和至少两个数据库20之间增加数据库预测执行装置30。数据库预测执行装置30用以预先对待执行事务进行预测执行,提前获得该执行事务中需要实际执行的数据库操作指令,实现执行路径的预测,预先获得待执行事务所需的目标数据的主键值以及该目标数据在预测执行时的取值等预测执行数据。另外,本系统中的数据库预测执行装置30不仅可以对待执行事务进行预测执行,而且可以根据预测执行得到的数据库操作指令和预测执行数据控制数据库20实际执行待执行本文档来自技高网...
数据库操作方法及装置

【技术保护点】
一种数据库操作方法,其特征在于,包括:获取对待执行事务进行预测执行时产生的预测执行数据,所述预测执行数据包括所述待执行事务所需的目标数据的主键值以及所述目标数据在预测执行时的取值;根据所述目标数据的主键值,从所述待执行事务对应的目标分库中加载所述目标数据的当前取值;在所述目标数据的当前取值与所述目标数据在预测执行时的取值不相同时,判断所述目标数据的当前取值是否影响所述待执行事务的业务逻辑;若所述目标数据的当前取值不影响所述待执行事务的业务逻辑,将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上。

【技术特征摘要】
1.一种数据库操作方法,其特征在于,包括:获取对待执行事务进行预测执行时产生的预测执行数据,所述预测执行数据包括所述待执行事务所需的目标数据的主键值以及所述目标数据在预测执行时的取值;根据所述目标数据的主键值,从所述待执行事务对应的目标分库中加载所述目标数据的当前取值;在所述目标数据的当前取值与所述目标数据在预测执行时的取值不相同时,判断所述目标数据的当前取值是否影响所述待执行事务的业务逻辑;若所述目标数据的当前取值不影响所述待执行事务的业务逻辑,将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上。2.根据权利要求1所述的方法,其特征在于,还包括:在所述目标数据的当前取值与所述目标数据在预测执行时的取值相同时,禁止将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上。3.根据权利要求1或2所述的方法,其特征在于,还包括:根据所述目标数据的当前取值执行所述待执行事务,并根据所述待执行事务的执行结果更新所述目标分库中所述目标数据的当前取值。4.根据权利要求3所述的方法,其特征在于,还包括:获取对所述待执行事务进行预测执行时确定的所述待执行事务中需要实际执行的数据库操作指令;所述根据所述目标数据的当前取值执行所述待执行事务,包括:根据所述待执行事务中需要实际执行的数据库操作指令,对所述目标数据的当前取值进行处理,以获得所述待执行事务的执行结果。5.根据权利要求1或2所述的方法,其特征在于,还包括:若所述目标数据的当前取值影响所述待执行事务的业务逻辑,则禁止将所述目标数据的当前取值作为所述待执行事务对应的版本数据记录在所述目标分库上,并将所述待执行事务回滚。6.根据权利要求1或2所述的方法,其特征在于,所述获取对待执行事务进行预测执行产生的预测执行数据之前,还包括:对所述待执行事务进行预测执行,以生成所述预测执行数据。7.根据权利要求1或2所述的方法,其特征在于,所述获取对待执行事务进行预测执行时产生的预测执行数据,包括:接收对所述待执行事务进行预测执行的装置下发的所述预测执行数据。8.一种数据库操作装...

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

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

1