数据库访问方法及装置制造方法及图纸

技术编号:16755722 阅读:58 留言:0更新日期:2017-12-09 02:10
本说明书一个或多个实施例提供一种数据库访问方法及装置,该方法可以包括:接收数据库访问请求;在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划;当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。

Database access method and device

The specification of one or more embodiments provide a method and a device to access the database, the method can include receiving a database access request; in the storage space in the storage with historical execution plan, history query corresponding to the database access request plan; when the query to the history of the implementation of the plan the history, implementation plan in response to the database access request.

【技术实现步骤摘要】
数据库访问方法及装置
本说明书一个或多个实施例涉及数据库
,尤其涉及一种数据库访问方法及装置。
技术介绍
在相关技术中,用户可以通过诸如SQL(StructuredQueryLanguage,结构化查询语言)等语言生成数据库访问请求,以发起对数据库的访问。SQL语言是一种描述型语言(非过程型语言),用户在基于SQL语言发起数据库访问请求时,需要通过SQL语言描述其对数据库的数据访问需求,比如查询哪张表、什么样的数据、对数据做哪些操作等。而对于数据库内核而言,在接收到用户发出的数据库访问请求时,需要将数据库访问请求生成为可执行的代码,这部分代码通常称为“执行计划”(或者“查询计划”,也可简称为“计划”)。执行计划从执行和优化方式上大体可分为“解释型”(interpreted)和“编译型”(compiled)两种。对于解释型的执行计划,通过将某些常用操作“函数化”,以及生成一些执行的“模板”,并对基础函数或模板的拼装、组合,即可形成解释型的执行计划。由于解释型执行计划可以通过各种模板或函数的排列组合可以组成任意复杂的执行计划,因而具有使用灵活、易于实现等优势。与解释型执行计划的生成过程不同,编译型执行计划的生成思路是将数据库访问请求直接翻译成代码,然后利用“即时编译(JIT,just-in-timecompilation)”技术将代码动态编译为可以执行的机器代码并动态加载到运行环境中,因而编译型执行计划往往执行效率更高,相比解释型执行计划可能有多达几个数量级的性能提升。然而,虽然编译型执行计划的执行效率更高,但是编译型执行计划的生成过程需要调用编译器的即时编译模块,使得编译型执行计划的生成过程相比于解释型执行计划而言更加耗时,表现为数据库的反馈延迟较大。
技术实现思路
有鉴于此,本说明书一个或多个实施例提供一种数据库访问方法及装置,可以减少数据库访问所需占用的处理资源,提升对执行计划的生成效率,并有助于加快数据库访问。为实现上述目的,提供技术方案如下:根据第一方面,提出了一种数据库访问方法,包括:接收数据库访问请求;在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划;当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。根据第二方面,提出了一种数据库访问装置,包括:接收单元,接收数据库访问请求;查询单元,在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划;执行单元,当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。根据第三方面,提出了一种数据库访问装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现如第一方面所述的方法。由以上技术方案可见,本说明书一个或多个实施例通过存储历史执行计划,并将历史执行计划应用于对数据库访问请求的响应,可以实现对历史执行计划的复用,而无需重复生成相同的执行计划,从而能够减少数据库访问所需占用的处理资源,提升对执行计划的生成效率,并有助于加快数据库访问。附图说明图1是一示例性实施例提供的一种数据库访问系统的架构示意图。图2是一示例性实施例提供的一种数据库访问方法的流程图。图3是一示例性实施例的一种对数据库访问请求进行响应的原理示意图。图4是一示例性实施例的另一种对数据库访问请求进行响应的原理示意图。图5是一示例性实施例提供的一种电子设备的结构示意图。图6是一示例性实施例提供的一种数据库访问装置的框图。具体实施方式本说明书的一个或多个实施例通过对历史执行计划的合理复用,可以避免重复生成相同的执行计划,从而能够减少数据库访问所需占用的处理资源,提升对执行计划的生成效率,并有助于加快数据库访问。为做进一步说明,提供下列实施例:图1是一示例性实施例提供的一种数据库访问系统的架构示意图。如图1所示,该系统可以包括服务器11、网络12、若干电子设备,比如手机13、PC14等。服务器11可以为包含一独立主机的物理服务器,或者该服务器11可以为主机集群承载的虚拟服务器,或者该服务器11可以为云服务器。在运行过程中,服务器11可以承载数据库。手机13、PC14只是用户可以使用的部分类型的电子设备。实际上,用户显然还可以使用诸如下述类型的电子设备:平板设备、笔记本电脑、掌上电脑(PDAs,PersonalDigitalAssistants)、可穿戴设备(如智能眼镜、智能手表等)等,本说明书一个或多个实施例并不对此进行限制。在运行过程中,该电子设备可以运行某一应用的客户端侧的程序,以实现该应用的相关业务功能,比如向服务器11发起数据库访问请求,以实现数据库访问操作。而对于手机13、PC14与服务器11之间进行交互的网络12,可以包括多种类型的有线或无线网络。在一实施例中,该网络12可以包括公共交换电话网络(PublicSwitchedTelephoneNetwork,PSTN)和因特网。下面结合实施例描述服务器11在本说明书的一个或多个实施例中,如何实现高效的数据库访问方案。图2是一示例性实施例提供的一种数据库访问方法的流程图。如图2所示,该方法可以应用于诸如上述图1所示的服务器11;该方法可以包括以下步骤:步骤202,接收数据库访问请求。在一实施例中,服务器11可以采用分布式架构,该数据库访问请求可由该分布式架构中的任一分布式节点接收。在一实施例中,服务器11可以采用非分布式架构,由该服务器11接收该数据库访问请求。步骤204,在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划。在一实施例中,所述相关联的存储空间可以包括:相关联的缓存空间。在一实施例中,所述相关联的存储空间可以包括以下至少之一:本地存储空间、相关联的分布式节点处的存储空间。例如,当服务器11采用分布式架构时,对于接收到数据库访问请求的分布式节点而言,相关联的存储空间可以包括该分布式节点的本地存储空间,也可以包括其他分布式节点处的存储空间。步骤206,当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。在一实施例中,通过查询并执行历史执行计划,可以省去将数据库访问请求生成为执行计划的过程,有助于提升对数据库访问请求的响应效率。在一实施例中,当未查询到所述历史执行计划时,可以生成所述数据库访问请求对应的解释型执行计划,并执行所述解释型执行计划,以响应所述数据库访问请求。由于解释型执行计划相比于编译型执行计划而言耗时较短、延迟较小,因而有助于提升对数据访问请求的响应效率。在其他实施例中,当未查询到所述历史执行计划时,可以生成所述数据库访问请求对应的编译型执行计划,并执行所述编译型执行计划,以响应所述数据库访问请求。在一实施例中,当所述历史执行计划或所述解释型执行计划为本地计划时,可以在本地执行所述历史执行计划或所述解释型执行计划。当服务器11采用分布式架构时,此处的“本地”可以理解为接收到数据库访问请求的分布式节点;当服务器11采用非分布式架构时,此处的“本地”可以理解为该服务器11本身。在一实施例中,当所述历史执行计划或所述解释型执行计划为分布式计划时,可以在本地(即接收到数据库访问请求的分布式节点)执行所述历史执行计划或所述本文档来自技高网
...
数据库访问方法及装置

【技术保护点】
一种数据库访问方法,包括:接收数据库访问请求;在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划;当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。

【技术特征摘要】
1.一种数据库访问方法,包括:接收数据库访问请求;在相关联的存储空间存储的历史执行计划中,查询对应于所述数据库访问请求的历史执行计划;当查询到所述历史执行计划时,执行所述历史执行计划,以响应所述数据库访问请求。2.根据权利要求1所述的方法,所述相关联的存储空间包括:相关联的缓存空间。3.根据权利要求1所述的方法,所述相关联的存储空间包括以下至少之一:本地存储空间、相关联的分布式节点处的存储空间。4.根据权利要求1所述的方法,还包括:当未查询到所述历史执行计划时,生成所述数据库访问请求对应的解释型执行计划;执行所述解释型执行计划,以响应所述数据库访问请求。5.根据权利要求4所述的方法,所述历史执行计划或所述解释型执行计划被按照下述方式执行:当所述历史执行计划或所述解释型执行计划为本地计划时,在本地执行所述历史执行计划或所述解释型执行计划;当所述历史执行计划或所述解释型执行计划为分布式计划时,在本地执行所述历史执行计划或所述解释型执行计划中对应于本地节点的本地子计划;其中,所述历史执行计划或所述解释型执行计划中还包含对应于相关联的分布式节点的关联子计划,所述关联子计划由所述相关联的分布式节点执行。6.根据权利要求4所述的方法,还包括:将所述解释型执行计划存储至所述相关联的存储空间,以作为新的历史执行计划。7.根据权利要求1所述的方法,还包括:获取所述相关联的存储空间中的解释型历史执行计划;根据所述解释型历史执行计划对应的数据库访问请求,生成相应的编译型历史执行计划,以将所述解释型历史执行计划替换为编译型历史执行计划。8.根据权利要求7所述的方法,所述获取所述相关联的存储空间中的解释型历史执行计划,包括:从所述相关联的存储空间中对应于本地节点的本地存储空间,获取所述解释型历史执行计划。9.根据权利要求7所述的方法,所述获取所述相关联的存储空间中的解释型历史执行计划,包括:确定所述相关联的存储空间中的解释型历史执行计划的执行次数和/或执行频率;优先获取所述相关联的存储空间中执行次数和/或执行频率更高的解释型历史执行计划。10.根据权利要求7所述的方法,所述生成相应的编译型历史执行计划,包括:获取所述解释型历史执行计划对应的数据库访问请求包含的待编译函数;当所述相关联的存储空间中存储有所述待编译函数对应的历史编译内容时,引用所述历史编译内容,以生成所述编译型历史执行计划。11.根据权利要求10所述的方法,所述生成相应的编译型历史执行计划,包括:当所述相关联的存储空间中未存储有所述待编译函数对应的历史编译内容时,生成所述待编译函数对应的编译内容,以生成所述编译型历史执行计划。12.根据权利要求11所述的方法,还包括:将所述待编译函数对应的编译内容存储至所述相关联的存储空间,以作为新的历史编译内容。13.根据权利要求10所述的方法,还包括:确定生成所述编译型历史执行计划的过程对所述相关联的存储空间中的历史编译内容的依赖程度;从所述相关联的存储空间中删除依赖程度低于预设依赖程度的历史编译内容。14.根据权利要求13所述的方法,所述依赖程度正相关于所述历史编译内容被引用的次数。15.根据权利要求13所述的方法,所述相关联的存储空间中存储有与所述历史编译内容相关的历史执行计划,其中所述依赖程度负相关于被从所述相关联的存储空间中淘汰且与所述历史编译内容相关的历史执行计划的数量。16.根据权利要求15所述的方法,执行次数和/或执行频率更低的历史执行计划被优先从所述相关联的存储空间中淘汰。17.一种数据库访问装置,包括:接收单元,接收数据库访问请求;查询单元,在相关联的存储空间存储的历史执行...

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

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

1