CN103577561B - 执行计划的存储方法、装置及系统 - Google Patents

执行计划的存储方法、装置及系统 Download PDF

Info

Publication number
CN103577561B
CN103577561B CN201310507367.8A CN201310507367A CN103577561B CN 103577561 B CN103577561 B CN 103577561B CN 201310507367 A CN201310507367 A CN 201310507367A CN 103577561 B CN103577561 B CN 103577561B
Authority
CN
China
Prior art keywords
executive plan
client
caching
database server
sql request
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
Application number
CN201310507367.8A
Other languages
English (en)
Other versions
CN103577561A (zh
Inventor
于巍
文继军
刘辉军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310507367.8A priority Critical patent/CN103577561B/zh
Publication of CN103577561A publication Critical patent/CN103577561A/zh
Priority to EP14856211.9A priority patent/EP3054386B1/en
Priority to PCT/CN2014/075520 priority patent/WO2015058499A1/zh
Priority to US15/136,472 priority patent/US20160239542A1/en
Application granted granted Critical
Publication of CN103577561B publication Critical patent/CN103577561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种执行计划的存储方法、装置及系统,涉及数据库领域,可以提高执行计划的缓存命中率,减少系统开销。所述方法包括:客户端将SQL请求及生成的位置信息发送给数据库服务器,数据库服务器根据接收到的SQL请求及位置信息,生成并执行SQL请求对应的执行计划,并且将该执行计划保存至位置信息指示的缓存中。本发明实施例适用于在客户端或数据库服务器的缓存中保存SQL请求对应的执行计划。

Description

执行计划的存储方法、装置及系统
技术领域
本发明涉及数据库领域,特别涉及一种执行计划的存储方法、装置及系统。
背景技术
数据库中的执行计划是指对SQL(Structured query language,结构化查询语言)请求的执行过程的描述。数据库服务器每次执行客户端发起的SQL请求时,都需要对SQL请求进行解析并生成对应的执行计划,并将执行计划保存在数据库服务器的内存中。目前数据库服务器在进行执行计划的保存时,会针对不同的客户端分别配置缓存区,以保存不同的客户端对应的执行计划。
然而通过目前这种执行计划的存储方式进行执行计划保存时,数据库服务器为不同的客户端分别配置缓存区。由于当客户端所分配的缓存区饱和后,利用率低的执行计划所占用的缓存会被释放,以使得该客户端利用率高的执行计划缓存在所分配的缓存区中,即上述利用率低的执行计划无法被保存在缓存中,当客户端再次发起该SQL请求时,数据库服务器需要重新解析该SQL请求并生成对应的执行计划,从而造成执行计划的缓存命中率较低,增加了系统开销。
发明内容
本发明实施例提供一种执行计划的存储方法、装置及系统,可以提高执行计划的缓存命中率,减少系统开销。第一方面,本发明实施例提供一种执行计划的存储方法,包括:
客户端接收结构化查询语言SQL请求;
所述客户端检测在所述客户端的缓存中是否存在所述SQL请求对应的执行计划;
若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端生成位置信息,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
所述客户端将所述位置信息及所述SQL请求发送给所述数据库服务器,以使得所述数据库服务器生成所述SQL请求对应的执行计划,并将所述执行计划保存到所述位置信息指示的缓存中。
在第一方面的第一种实现方式中,还包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述客户端将所述执行计划发送给所述数据库服务器,以使得所述数据库服务器执行所述执行计划。
结合第一方面或者第一方面的第一种实现方式,在第一方面的第二种实现方式中,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述客户端将所述执行计划发送给所述数据库服务器,以使得所述数据库服务器执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的多个执行计划,则所述客户端从所述多个执行计划中选择任意一个执行计划发送给所述数据库服务器。
结合第一方面或者第一方面的第一种实现方式,或者第一方面的第二种实现方式,在第一方面的第三种实现方式中,在所述客户端将所述执行计划发送给所述数据库服务器之前,所述方法还包括:
所述客户端通过图形化界面显示所述执行计划的参数信息;
所述客户端根据参数信息修改指令调整所述执行计划的参数信息,并将调整后的执行计划保存在所述客户端的缓存中;
所述客户端将所述执行计划发送给所述数据库服务器的步骤包括:
所述客户端将所述调整后的执行计划发送给所述数据库服务器。
结合第一方面或者第一方面的第一种实现方式,或者第一方面的第二种实现方式,或者第一方面的第三种实现方式,在第一方面的第四种实现方式中,在所述客户端将所述位置信息及所述SQL请求发送给所述数据库服务器之后,所述方法还包括:
若所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存,所述客户端接收所述数据库服务器发送的所述SQL请求对应的执行计划,并保存在所述客户端的缓存中。
结合第一方面或者第一方面的第一种实现方式,或者第一方面的第二种实现方式,或者第一方面的第三种实现方式,或者第一方面的第四种实现方式,在第一方面的第五种实现方式中,所述若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端生成位置信息,具体包括:
若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端根据所述SQL请求,进行哈希运算生成所述位置信息。第二方面,本发明实施例提供一种执行计划的存储装置,包括:
接收单元,用于接收结构化查询语言SQL请求;
检测单元,用于检测在所述客户端的缓存中是否存在所述接收单元接收的所述SQL请求对应的执行计划;
生成单元,用于当所述客户端的缓存中不存在所述检测单元检测的所述SQL请求对应的执行计划时,生成位置信息,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
发送单元,用于将所述位置信息及所述SQL请求发送给所述数据库服务器。
在第二方面的第一种实现方式中,所述发送单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划时,将所述执行计划发送给所述数据库服务器,以使得所述数据库服务器执行所述执行计划。
结合第二方面或者第二方面的第一种实现方式,在第二方面的第二种实现方式中,所述发送单元,还用于当所述客户端的缓存中存在所述SQL请求对应的多个执行计划时,则从所述多个执行计划中选择任意一个执行计划发送给所述数据库服务器。
结合第二方面或者第二方面的第一种实现方式,或者第二方面的第二种实现方式,在第二方面的第三种实现方式中,还包括:
显示单元,用于通过图形化界面显示所述检测单元检测到的所述执行计划的参数信息;
调整单元,用于根据参数信息修改指令调整所述显示单元显示的所述执行计划的参数信息;
保存单元,用于将调整后的执行计划保存在所述客户端的缓存中;
所述发送单元,还用于将所述调整单元调整后的执行计划发送给所述数据库服务器。
结合第二方面或者第二方面的第一种实现方式,或者第二方面的第二种实现方式,或者第二方面的第三种实现方式,在第二方面的第四种实现方式中,
所述接收单元,还用于当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,接收所述数据库服务器发送的所述SQL请求对应的执行计划;
所述保存单元,还用于将所述接收单元接收的所述执行计划保存在所述客户端的缓存中。
结合第二方面或者第二方面的第一种实现方式,或者第二方面的第二种实现方式,或者第二方面的第三种实现方式,或者第二方面的第四种实现方式,在第二方面的第五种实现方式中,
所述生成单元,还用于当所述客户端的缓存中不存在所述SQL请求对应的执行计划时,根据所述SQL请求,进行哈希运算生成所述位置信息。
第三方面,本发明实施例提供一种执行计划的存储方法,包括:
数据库服务器接收客户端发送的位置信息及结构化查询语言SQL请求,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为客户端的缓存和/或数据库服务器的缓存;
所述数据库服务器获取所述SQL请求对应的执行计划;
所述数据库服务器根据所述位置信息获取所述执行计划的缓存位置;
若所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存,所述数据库服务器将所述执行计划发送给所述客户端进行保存。
在第三方面的第一种实现方式中,在所述数据库服务器接收客户端发送的位置信息及结构化查询语言SQL请求之前,所述方法还包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划。
结合第三方面或者第三方面的第一种实现方式,在第三方面的第二种实现方式中,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的多个执行计划,所述数据库服务器接收所述客户端发送的从所述多个执行计划中选择的任意一个执行计划,并且执行所述执行计划。
结合第三方面或者第三方面的第一种实现方式,或者第三方面的第二种实现方式,在第三方面的第三种实现方式中,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,并且所述客户端通过图形化界面对所述执行计划进行参数调整,所述数据库服务器接收所述客户端发送的调整后的执行计划,并且执行所述执行计划。
结合第三方面或者第三方面的第一种实现方式,或者第三方面的第二种实现方式,或者第三方面的第三种实现方式,在第三方面的第四种实现方式中,在所述数据库服务器根据所述指定信息获取所述执行计划的缓存位置之后,所述方法还包括:
若所述位置信息指定所述执行计划的缓存位置为所述数据库服务器的缓存,所述数据库服务器将所述执行计划保存在所述数据库服务器的缓存中。
第四方面,本发明实施例提供一种执行计划的存储装置,包括:
接收单元,用于接收客户端发送的位置信息及结构化查询语言SQL请求,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为客户端的缓存和/或数据库服务器的缓存;
获取单元,用于根据所述接收单元接收的所述SQL请求,获取所述SQL请求对应的执行计划;
所述获取单元,还用于根据所述位置信息获取所述执行计划的缓存位置;
发送单元,用于当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,所述数据库服务器将所述执行计划发送给所述客户端进行保存。
在第四方面的第一种实现方式中,所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划时,接收所述客户端发送的所述执行计划;
所述装置还包括:
执行单元,用于执行所述接收单元接收的所述执行计划。
结合第四方面或者第四方面的第一种实现方式,在第四方面的第二种实现方式中,所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的多个执行计划时,接收所述客户端发送的从所述多个执行计划中选择的任意一个执行计划;
所述执行单元,还用于执行所述接收单元接收的所述任意一个执行计划。
结合第四方面或者第四方面的第一种实现方式,或者第四方面的第二种实现方式,在第四方面的第三种实现方式中,所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划,并且所述客户端通过图形化界面对所述执行计划进行参数调整时,接收所述客户端发送的调整后的执行计划;
所述执行单元,还用于执行所述接收单元接收的所述调整后的执行计划。
结合第四方面或者第四方面的第一种实现方式,或者第四方面的第二种实现方式,或者第四方面的第三种实现方式,在第四方面的第四种实现方式中,所述装置还包括:
保存单元,用于当所述位置信息指定所述执行计划的缓存位置为所述数据库服务器的缓存时,所述数据库服务器将所述执行计划保存在所述数据库服务器的缓存中。
第五方面,本发明实施例提供一种执行计划的存储系统,包括:至少一个客户端和数据库服务器;
所述客户端,用于接收结构化查询语言SQL请求,检测在所述客户端的缓存中是否存在所述SQL请求对应的执行计划;
所述客户端,还用于当所述客户端的缓存中不存在所述SQL请求对应的执行计划时,生成位置信息,并且将所述位置信息及所述SQL请求发送给所述数据库服务器,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
所述数据库服务器,用于接收客户端发送的所述位置信息及所述SQL请求,并根据所述位置信息及所述SQL请求,获取所述SQL请求对应的执行计划;
所述数据库服务器,还用于根据所述位置信息获取所述执行计划的缓存位置,当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,将所述执行计划发送给所述客户端进行保存。
本发明实施例提供的执行计划的存储方法、装置及系统,客户端将SQL请求及生成的位置信息发送给数据库服务器,数据库服务器根据接收到的SQL请求及位置信息,生成并执行SQL请求对应的执行计划,并且将该执行计划保存至位置信息指示的缓存中。与现有技术相比,本发明实施例通过将客户端执行过的执行计划保存在该客户端的缓存中,可以避免部分执行计划无法被保存在缓存中,从而提高了执行计划的缓存命中率,进而降低了系统开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种执行计划的存储方法流程图;
图2为本发明实施例一提供的一种执行计划的存储结构示意图;
图3为本发明实施例一提供的一种基站结构示意图;
图4为本发明实施例二提供的一种执行计划的存储方法流程图;
图5为本发明实施例二提供的一种执行计划的存储结构示意图;
图6为本发明实施例二提供的一种基站结构示意图;
图7为本发明实施例三提供的一种执行计划的存储系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。
实施例一
本发明实施例提供一种执行计划的存储方法,可以应用于如图7所示的系统中,该系统包括至少一个客户端和数据库服务器,客户端可以将SQL请求与生成的位置信息发送给数据库服务器,还可以接收数据库服务器发送的SQL请求对应的执行计划,并将该执行计划保存在客户端的缓存中;数据库服务器可以接收客户端发送的SQL请求与位置信息,还可以将生成的SQL请求对应的执行计划发送给客户端。其中,客户端的缓存及数据库服务器的缓存中均可以保存SQL请求对应的执行计划。
基于该系统,本发明实施例提供的执行计划的存储方法,如图1所示,可应用于客户端侧,所述方法包括:
101客户端接收结构化查询语言SQL请求
其中,SQL请求为一种数据库查询语言,用于在数据库系统中存取数据,以及查询、更新和管理数据库系统。用户可以通过DOS(Disk Operating System,磁盘操作系统)命令或者C++(C with Classes,带类的C)语言输入需要执行的SQL语句。
102、客户端检测在客户端的缓存中是否存在SQL请求对应的执行计划。
其中,SQL请求对应的执行计划为SQL请求在数据库系统中对应的具体执行过程。上述客户端的缓存中保存有已经执行并且指定进行保存的执行计划。指定进行保存的执行计划具体可以为用户指定的,也可以为数据库服务器中预先配置的,本发明实施例不做限定。
可选地,步骤102具体可以包括:对客户端的缓存中保存的各个执行计划进行逐个查找,直到查找到所述SQL请求对应的执行计划。优选地,步骤102具体还可以包括:客户端首先建立哈希表Hash表,并在Hash表中保存各个执行计划在客户端的缓存中的位置信息,然后在Hash表中查找所述SQL请求对应的执行计划在客户端的缓存中的位置信息,最后通过所述位置信息在客户端的缓存中查找所述SQL请求对应的执行计划,从而提升了SQL请求对应的执行计划的查找效率。
103a、若客户端的缓存中不存在SQL请求对应的执行计划,客户端根据SQL请求,进行哈希运算生成位置信息。
其中,位置信息用于指示与SQL请求对应的执行计划的缓存位置,所述缓存位置为客户端的缓存和/或数据库服务器的缓存。对于本发明实施例,位置信息具体可以为提示Hints指定。此时,当Hints指定具体为PlanCacheServer时,指定执行计划保存到数据库服务器;当Hints指定具体为PlanCacheClient时,指定执行计划保存到客户端;当Hints指定具体为PlanCacheAll时,指定执行计划保存到数据库服务器和客户端。若客户端没有生成位置信息,则数据库服务器默认位置信息为PlanCacheAll,即指定将执行计划保存到数据库服务器和客户端。
对于本发明实施例,客户端根据SQL请求,可以进行哈希运算或者其他运算生成位置信息,本发明实施例不做限定。
通过SQL请求对应的位置信息,可以实现根据用户的需求来确定执行计划的缓存位置,并且实现了在客户端保存该客户端已经执行的执行计划,避免由于数据库服务器的缓存空间有限,部分执行计划无法永久保存在数据库服务器中,从而造成执行计划的缓存命中率较低的问题。
步骤103a之后还包括步骤104a、客户端将位置信息及SQL请求发送给数据库服务器。
进一步地,以使得数据库服务器生成SQL请求对应的执行计划,并根据位置信息获取执行计划的缓存位置后,保存执行计划。
其中,数据库服务器生成SQL请求对应的执行计划的步骤可以包括:数据库服务器解析客户端发送的SQL请求,并生成SQL请求对应的执行计划。由于数据库服务器解析SQL请求并生成执行计划的过程很耗时,所以通过将全部执行过的执行计划保存在客户端的缓存和/或数据库服务器的缓存中,可以提高执行计划的缓存命中率,避免由于当前数据库服务器无法对全部执行过的执行计划进行保存,造成数据库服务器对执行过的SQL请求重新解析并生成对应的执行计划,从而降低系统的开销。
对于本发明实施例,执行计划的缓存位置具体可以为数据库服务器的缓存或客户端的缓存。由于客户端执行过的执行计划所占用的缓存较少,本发明实施例通过将客户端执行过的全部执行计划或者部分执行计划保存在该客户端的缓存中,不会造成客户端的缓存和数据库服务器的缓存饱和,与目前将所有客户端执行过的全部执行计划保存在数据库服务器的缓存时,由于数据库服务器的缓存饱和,造成部分执行计划无法进行保存相比,提高了执行计划的缓存命中率;同时,客户端重启后,客户端的缓存中保存的执行计划仍会继续保存在客户端的缓存中,从而避免保存在数据库服务器中的执行计划在数据库服务器重启时丢失。
与步骤103a并列的步骤103b、若客户端的缓存中存在SQL请求对应的执行计划,客户端将执行计划发送给数据库服务器。
进一步地,以使得数据库服务器执行SQL请求对应的执行计划。对于本发明实施例,当客户端的缓存中保存有已经执行过的执行计划时,数据库服务器可以直接执行该执行计划,不需要再次解析该执行计划对应的SQL请求以生成该执行计划,从而提高了SQL请求的执行效率。
具体地,若客户端的缓存中存在SQL请求对应的多个执行计划,则客户端从多个执行计划中选择任意一个执行计划发送给数据库服务器。
其中,SQL请求通常对应一个执行计划,但部分复杂的SQL请求会对应有多个不同的执行计划。若客户端的缓存中保存有SQL请求对应的多个执行计划,此时,客户端在多个执行计划中任意选择一个执行计划发送给数据库服务器。优选地,客户端可以从多个执行计划中选择常用的或者执行时间较短的执行计划发送给数据库服务器。
可选地,步骤103b之前还可以包括:客户端通过图形化界面显示所述执行计划的参数信息,然后客户端根据参数信息修改指令调整所述执行计划的参数信息,并将调整后的执行计划保存在所述客户端的缓存中。此时客户端将所述调整后的执行计划发送给所述数据库服务器。
其中,图形化界面具体为在客户端的屏幕上,通过文本框及箭头显示执行计划的具体信息,并显示执行计划对应的各个参数信息,以便用户更加直观快速地进行参数修改。对于本发明实施例,未调整执行计划的参数信息时,数据库服务器执行该执行计划的过程为系统默认的过程,并非最优过程,所以通过调整执行计划的参数信息,可以提高执行计划在数据库服务器中的执行速度。调整后的执行计划作为SQL请求对应的新增的执行计划保存在客户端的缓存中,不替换调整前的执行计划。
步骤104a之后还包括步骤105a、若位置信息指定执行计划的缓存位置为客户端的缓存,客户端接收数据库服务器发送的SQL请求对应的执行计划,并保存在客户端的缓存中。
对于本发明实施例,由于可以将执行过的执行计划保存在客户端的缓存中,因此用户可以通过将客户端的缓存中保存的执行计划进行复制、导入、导出等操作,可以实现在不同的客户端间共享执行计划。具体地,客户端将缓存中的执行计划复制并以文件形式进行保存,此时其他客户端可以获取该执行计划的文件,并恢复在当前客户端的缓存中,从而实现不同客户端间共享执行计划。
进一步地,作为图1所示方法的具体实现,本发明实施例提供了一种执行计划的存储装置,如图2所示,所述装置的实体可以为客户端,所述装置包括:接收单元21、检测单元22、生成单元23、发送单元24。
接收单元21,用于接收结构化查询语言SQL请求。
检测单元22,用于检测在客户端的缓存中是否存在接收单元21接收的SQL请求对应的执行计划。
生成单元23,用于当客户端的缓存中不存在检测单元22检测的SQL请求对应的执行计划时,生成位置信息。
其中,位置信息用于指示与SQL请求对应的执行计划的缓存位置,缓存位置为客户端的缓存和/或数据库服务器的缓存。
发送单元24,用于将位置信息及SQL请求发送给数据库服务器。
发送单元24,还用于当客户端的缓存中存在SQL请求对应的执行计划时,将执行计划发送给数据库服务器。
发送单元24,还用于当客户端的缓存中存在SQL请求对应的多个执行计划时,从多个执行计划中选择任意一个执行计划发送给数据库服务器。
可选地,所述装置还可以包括:显示单元25、调整单元26、保存单元27。
显示单元25,用于通过图形化界面显示检测单元22检测到的执行计划的参数信息。
调整单元26,用于根据参数信息修改指令调整显示单元25显示的执行计划的参数信息。
保存单元27,用于将调整后的执行计划保存在客户端的缓存中。
发送单元24,还用于将调整单元26调整后的执行计划发送给数据库服务器。
接收单元21,还用于当位置信息指定执行计划的缓存位置为客户端的缓存时,接收数据库服务器发送的SQL请求对应的执行计划。
保存单元27,还用于将接收单元21接收的执行计划保存在客户端的缓存中。
生成单元23,还用于当客户端的缓存中不存在SQL请求对应的执行计划时,根据SQL请求,进行哈希运算生成位置信息。
再进一步地,所述执行计划的存储装置的实体可以为客户端,如图3所示,所述客户端可以包括:接收器31、处理器32、发送器33。
接收器31,用于接收结构化查询语言SQL请求。
处理器32,用于检测在客户端的缓存中是否存在SQL请求对应的执行计划。
处理器32,还用于当客户端的缓存中不存在SQL请求对应的执行计划时,生成位置信息。
所述位置信息用于指示与SQL请求对应的执行计划的缓存位置,缓存位置为客户端的缓存和/或数据库服务器的缓存。
发送器33,用于将位置信息及SQL请求发送给数据库服务器。
发送器33,还用于当客户端的缓存中存在SQL请求对应的执行计划时,将执行计划发送给数据库服务器。
发送器33,还用于当客户端的缓存中存在SQL请求对应的多个执行计划时,从多个执行计划中选择任意一个执行计划发送给数据库服务器。
处理器32,还用于通过图形化界面显示执行计划的参数信息。
处理器32,还用于根据参数信息修改指令调整执行计划的参数信息。
处理器32,还用于将调整后的执行计划保存在客户端的缓存中。
发送器33,还用于将执行计划发送给数据库服务器。
接收器31,用于当指定信息指定执行计划的缓存位置为客户端的缓存时,接收数据库服务器发送的SQL请求对应的执行计划。
处理器32,还用于将执行计划保存在客户端的缓存中。
处理器32,还用于当客户端的缓存中不存在SQL请求对应的执行计划时,根据SQL请求,进行哈希运算生成位置信息。
需要说明的是,本发明实施例中提供的执行计划的存储装置中各功能单元所对应的其他相应描述,可以参考图1中的对应描述,在此不再赘述。
本发明实施例提供的执行计划的存储方法及装置,客户端将SQL请求及生成的位置信息发送给数据库服务器,数据库服务器根据接收到的SQL请求及位置信息,生成并执行SQL请求对应的执行计划,并且将该执行计划保存至位置信息指示的缓存中。与现有技术相比,本发明实施例通过将客户端执行过的执行计划保存在该客户端的缓存中,可以避免部分执行计划无法被保存在缓存中,从而提高了执行计划的缓存命中率,进而降低了系统开销。
实施例二
本发明实施例提供一种执行计划的存储方法,可以应用于如图7所示的系统中,该系统包括至少一个客户端和数据库服务器,客户端可以将SQL请求与生成的位置信息发送给数据库服务器,还可以接收数据库服务器发送的SQL请求对应的执行计划,并将该执行计划保存在客户端的缓存中;数据库服务器可以接收客户端发送的SQL请求与位置信息,还可以将生成的SQL请求对应的执行计划发送给客户端。其中,客户端的缓存及数据库服务器的缓存中均可以保存SQL请求对应的执行计划。
基于该系统,本发明实施例提供的执行计划的存储方法,如图4所示,可应用于数据库服务器侧,所述方法包括:
401、数据库服务器接收客户端发送的位置信息及结构化查询语言SQL请求。
可选地,步骤401之前还可以包括:若客户端的缓存中存在客户端发送的SQL请求对应的执行计划,数据库服务器接收客户端发送的执行计划后,直接执行该执行计划,不需要再次解析该执行计划对应的SQL请求以生成该执行计划,从而提高了SQL请求的执行效率。
具体地,若客户端的缓存中存在SQL请求对应的多个执行计划,数据库服务器接收客户端发送的从多个执行计划中选择的任意一个执行计划,并且执行该执行计划。
其中,SQL请求通常对应一个执行计划,但部分复杂的SQL请求会对应有多个不同的执行计划。若客户端的缓存中保存有SQL请求对应的多个执行计划,此时,客户端在多个执行计划中选择任意的一个执行计划发送给数据库服务器。优选地,数据库服务器接收客户端发送的,从多个执行计划中选择的常用的或者执行时间较短的一个执行计划。
可替换地,若客户端的缓存中存在SQL请求对应的执行计划,并且客户端通过图形化界面对执行计划进行参数调整,数据库服务器接收客户端发送的调整后的执行计划,并且执行该执行计划。
其中,图形化界面具体为在客户端的屏幕上,通过文本框及箭头显示执行计划的具体信息,并显示执行计划对应的各个参数信息,以便用户更加直观快速地进行参数修改。对于本发明实施例,未调整执行计划的参数信息时,数据库服务器执行该执行计划的过程为系统默认的过程,并非最优过程,所以通过调整执行计划的参数信息,可以提高执行计划在数据库服务器中的执行速度。调整后的执行计划作为SQL请求对应的新增的执行计划保存在客户端的缓存中,不替换调整前的执行计划。
对于本发明实施例中的数据库服务器具体可以为数据库数据库服务器,数据库数据库服务器可以为用户提供查询、更新和管理等服务。
402、数据库服务器获取SQL请求对应的执行计划。
本实施例中,步骤402具体可以为,数据库服务器查找缓存中是否存在该SQL请求对应的执行计划,若数据库服务器的缓存中存在该SQL请求对应的执行计划,数据库服务器直接获取该执行计划,以便数据库服务器执行该SQL请求对应的执行计划;若数据库服务器的缓存中不存在该SQL请求对应的执行计划,数据库服务器对该SQL请求进行解析,并生成该SQL请求对应的执行计划,以便数据库服务器执行该SQL请求对应的执行计划。
403、数据库服务器根据位置信息获取执行计划的缓存位置。
其中,位置信息用于指示与SQL请求对应的执行计划的缓存位置,缓存位置为客户端的缓存和/或数据库服务器的缓存。对于本发明实施例,位置信息具体可以为Hints指定。此时,当Hints指定具体为PlanCacheServer时,指定执行计划保存到数据库服务器的缓存中;当Hints指定具体为PlanCacheClient时,指定执行计划保存到客户端的缓存中;当Hints指定具体为PlanCacheAll时,指定执行计划保存到数据库服务器的缓存中和客户端的缓存中。若客户端没有生成SQL请求中需要携带的位置信息,则数据库服务器默认位置信息为PlanCacheAll,即指定执行计划保存到数据库服务器的缓存中和客户端的缓存中。
对于本发明实施例,客户端根据SQL请求,可以进行哈希运算或者其他运算生成位置信息,本发明实施例不做限定。
通过SQL请求对应的位置信息,可以实现根据用户的需求来确定执行计划的缓存位置,并且实现了在客户端保存该客户端已经执行的执行计划,避免由于数据库服务器的缓存空间有限,部分执行计划无法永久保存在数据库服务器中,从而造成执行计划的缓存命中率较低的问题。
404a、若位置信息指定执行计划的缓存位置为客户端的缓存,数据库服务器将执行计划发送给客户端进行保存。
对于本发明实施例,由于客户端的缓存中足够存放该客户端的全部执行计划,并且客户端的缓存中保存的执行计划不会因为客户端重新启动而丢失,数据库服务器通过将该执行计划发送给客户端进行保存,可以保证全部执行计划永久保存在该客户端的缓存中,从而提高执行计划的缓存命中率;同时,由于客户端的全部执行计划能够永久存放在客户端的缓存中,所以数据库服务器再次接收该SQL请求时,不需要再次解析SQL请求并生成该SQL请求对应的执行计划,从而可以降低系统开销。
与步骤404a并列的步骤404b、若位置信息指定执行计划的缓存位置为数据库服务器的缓存,数据库服务器将执行计划保存在数据库服务器的缓存中。
与步骤404a和步骤404b并列的步骤404c、若位置信息指定执行计划的缓存位置为客户端的缓存和数据库服务器的缓存,数据库服务器将执行计划发送给客户端进行保存,并且将执行计划保存在数据库服务器的缓存中。
对于本发明实施例,将某一个客户端的SQL请求对应的执行计划同时保存在客户端的缓存和数据库服务器的缓存中,能够提高该SQL请求对应的执行计划的缓存命中率,同时,通过将该SQL请求对应的执行计划保存在数据库服务器的缓存中,从而使得当其他客户端发送该SQL请求给数据库服务器时,数据库服务器也能够直接查找到该SQL请求对应的执行计划并进行执行,从而提高了执行计划的执行效率。
进一步地,作为图4所示方法的具体实现,本发明实施例提供了一种执行计划的存储装置,如图5所示,所述装置的实体可以为数据库服务器,所述装置包括:接收单元51、获取单元52、发送单元53。
接收单元51,用于接收客户端发送的位置信息及结构化查询语言SQL请求。
其中,位置信息用于指示与SQL请求对应的执行计划的缓存位置,缓存位置为客户端的缓存和/或数据库服务器的缓存。
获取单元52,用于根据接收单元51接收的SQL请求,获取SQL请求对应的执行计划。
获取单元52,还用于根据位置信息获取执行计划的缓存位置。
发送单元53,用于当位置信息指定执行计划的缓存位置为客户端的缓存时,数据库服务器将执行计划发送给客户端进行保存。
接收单元51,还用于当客户端的缓存中存在SQL请求对应的执行计划时,接收客户端发送的执行计划。
可选地,所述装置还可以包括:执行单元54。
执行单元54,用于执行接收单元51接收的执行计划。
接收单元51,还用于当客户端的缓存中存在SQL请求对应的多个执行计划时,接收客户端发送的从多个执行计划中选择的任意一个执行计划。
执行单元54,还用于执行接收单元51接收的该任意一个执行计划。
接收单元51,还用于当客户端的缓存中存在SQL请求对应的执行计划,并且客户端通过图形化界面对执行计划进行参数调整时,接收客户端发送的调整后的执行计划。
执行单元54,还用于执行接收单元51接收的调整后的执行计划。
可选地,所述装置还可以包括保存单元55。
保存单元55,用于当位置信息指定执行计划的缓存位置为数据库服务器的缓存时,数据库服务器将执行计划保存在数据库服务器的缓存中。
再进一步地,所述执行计划的存储装置的实体可以为数据库服务器,如图6所示,所述数据库服务器可以包括:接收器61、处理器62、发送器63。
接收器61,用于接收客户端发送的位置信息及结构化查询语言SQL请求。
其中,位置信息用于指示与SQL请求对应的执行计划的缓存位置,缓存位置为客户端的缓存和/或数据库服务器的缓存。
处理器62,用于根据SQL请求,获取SQL请求对应的执行计划。
处理器62,还用于根据位置信息获取执行计划的缓存位置。
发送器63,用于当位置信息指定执行计划的缓存位置为客户端的缓存时,数据库服务器将执行计划发送给客户端进行保存。
接收器61,还用于当客户端的缓存中存在SQL请求对应的执行计划时,接收客户端发送的执行计划。
处理器62,还用于执行该执行计划。
接收器61,还用于当客户端的缓存中存在SQL请求对应的多个执行计划时,接收客户端发送的从多个执行计划中选择的任意一个执行计划。
处理器62,还用于执行该任意一个执行计划。
接收器61,还用于当客户端的缓存中存在SQL请求对应的执行计划,并且客户端通过图形化界面对执行计划进行参数调整时,接收客户端发送的调整后的执行计划。
处理器62,还用于执行调整后的执行计划。
处理器62,还用于当位置信息指定执行计划的缓存位置为数据库服务器的缓存时,数据库服务器将执行计划保存在数据库服务器的缓存中。
需要说明的是,本发明实施例中提供的执行计划的存储装置中各功能单元所对应的其他相应描述,可以参考图4中的对应描述,在此不再赘述。
本发明实施例提供的执行计划的存储方法及装置,客户端将SQL请求及生成的位置信息发送给数据库服务器,数据库服务器根据接收到的SQL请求及位置信息,生成并执行SQL请求对应的执行计划,并且将该执行计划保存至位置信息指示的缓存中。与现有技术相比,本发明实施例通过将客户端执行过的执行计划保存在该客户端的缓存中,可以避免部分执行计划无法被保存在缓存中,从而提高了执行计划的缓存命中率,进而降低了系统开销。
实施例三
本发明实施例提供一种执行计划的存储系统,如图7所示,所述系统包括:至少一个客户端71和数据库服务器72。
客户端71,用于首先获取结构化查询语言SQL请求,然后在缓存中检测是否存在SQL请求对应的执行计划,当缓存中不存在SQL请求对应的执行计划时,生成位置信息,并且将位置信息及SQL请求发送给数据库服务器72。
数据库服务器72,用于首先接收客户端71发送的位置信息及SQL请求,然后根据SQL请求,获取SQL请求对应的执行计划,最后根据位置信息获取执行计划的缓存位置,若位置信息指定执行计划的缓存位置为客户端71的缓存,将执行计划发送给客户端71进行保存。
本发明实施例提供的执行计划的存储系统,客户端将SQL请求及生成的位置信息发送给数据库服务器,数据库服务器根据接收到的SQL请求及位置信息,生成并执行SQL请求对应的执行计划,并且将该执行计划保存至位置信息指示的缓存中。与目前数据库服务器进行执行计划的保存时,通过为不同客户端在数据库服务器中分别配置缓存区,以保存不同的客户端对应的执行计划相比,本发明实施例通过将客户端执行过的执行计划保存在该客户端的缓存中,可以避免部分执行计划无法被保存在缓存中,从而提高了执行计划的缓存命中率,进而降低了系统开销。
本发明实施例提供的方法、装置及系统还可以用于解决单机数据库、双机数据库及集群数据库中存在的一些问题。
例如,在单机数据库的场景下,单机数据库服务器的缓存中不足以存放各个客户端对应的全部执行计划,通过本发明实施例提供的方法,可以将需要在单机数据库服务器的缓存中保存的执行计划保存在单机数据库服务器对应的各个客户端的缓存中,从而减小了单机数据库服务器的缓存中执行计划所占用的缓存空间。
在双机数据库的场景下,由于双机数据库服务器将执行计划随机的保存在两个数据库中的某一个数据库中,当客户端发起某一个SQL请求时,双机数据库服务器就需要查找两个数据库中的全部执行计划,因此在双机数据库场景下,对SQL请求对应的执行计划的查找复杂度较高。通过本发明实施例提供的方法,可以将执行过的SQL请求对应的执行计划保存在客户端的缓存中,当客户端发起一个SQL请求时,可以直接从客户端的缓存中获取该请求对应的执行计划,从而避免双机数据库服务器查找两个数据库中的全部执行计划,进而降低双机数据库服务器的查找复杂度。
同样的,在集群数据库的场景下,由于集群数据库服务器将执行计划随机的保存在多个数据库中的某一个数据库中,当客户端发起某一个SQL请求时,集群数据库服务器就需要查找各个数据库中的全部执行计划,因此在集群数据库场景下的SQL请求对应的执行计划的查找复杂度高。通过本发明实施例提供的方法,可以将执行过的SQL请求对应的执行计划保存在客户端的缓存中,当客户端发起一个SQL请求时,可以直接从客户端的缓存中获取该请求对应的执行计划,从而避免集群数据库服务器查找各个数据库中的全部执行计划,进而降低集群数据库服务器的查找复杂度。
本发明实施例提供的执行计划的存储装置可以实现上述提供的方法实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。本发明实施例提供的执行计划的存储方法、装置及系统可以适用于提高执行计划的缓存命中率,减少系统开销,但不仅限于此。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (23)

1.一种执行计划的存储方法,其特征在于,包括:
客户端接收结构化查询语言SQL请求;
所述客户端检测在所述客户端的缓存中是否存在所述SQL请求对应的执行计划;
若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端生成位置信息,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
所述客户端将所述位置信息及所述SQL请求发送给所述数据库服务器,以使得所述数据库服务器生成所述SQL请求对应的执行计划,并将所述执行计划保存到所述位置信息指示的缓存中。
2.根据权利要求1所述的执行计划的存储方法,其特征在于,还包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述客户端将所述执行计划发送给所述数据库服务器,以使得所述数据库服务器执行所述执行计划。
3.根据权利要求2所述的执行计划的存储方法,其特征在于,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述客户端将所述执行计划发送给所述数据库服务器,以使得所述数据库服务器执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的多个执行计划,则所述客户端从所述多个执行计划中选择任意一个执行计划发送给所述数据库服务器。
4.根据权利要求2所述的执行计划的存储方法,其特征在于,在所述客户端将所述执行计划发送给所述数据库服务器之前,所述方法还包括:
所述客户端通过图形化界面显示所述执行计划的参数信息;
所述客户端根据参数信息修改指令调整所述执行计划的参数信息,并将调整后的执行计划保存在所述客户端的缓存中;
所述客户端将所述执行计划发送给所述数据库服务器的步骤包括:
所述客户端将所述调整后的执行计划发送给所述数据库服务器。
5.根据权利要求1所述的执行计划的存储方法,其特征在于,在所述客户端将所述位置信息及所述SQL请求发送给所述数据库服务器之后,所述方法还包括:
若所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存,所述客户端接收所述数据库服务器发送的所述SQL请求对应的执行计划,并保存在所述客户端的缓存中。
6.根据权利要求1所述的执行计划的存储方法,其特征在于,所述若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端生成位置信息,具体包括:
若所述客户端的缓存中不存在所述SQL请求对应的执行计划,所述客户端根据所述SQL请求,进行哈希运算生成所述位置信息。
7.一种执行计划的存储方法,其特征在于,包括:
数据库服务器接收客户端发送的位置信息及结构化查询语言SQL请求,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为客户端的缓存和/或所述数据库服务器的缓存;
所述数据库服务器获取所述SQL请求对应的执行计划;
所述数据库服务器根据所述位置信息获取所述执行计划的缓存位置;
若所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存,所述数据库服务器将所述执行计划发送给所述客户端进行保存。
8.根据权利要求7所述的执行计划的存储方法,其特征在于,在所述数据库服务器接收客户端发送的位置信息及结构化查询语言SQL请求之前,所述方法还包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划。
9.根据权利要求8所述的执行计划的存储方法,其特征在于,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的多个执行计划,所述数据库服务器接收所述客户端发送的从所述多个执行计划中选择的任意一个执行计划,并且执行所述执行计划。
10.根据权利要求8所述的执行计划的存储方法,其特征在于,所述若所述客户端的缓存中存在所述SQL请求对应的执行计划,所述数据库服务器接收所述客户端发送的所述执行计划,并且执行所述执行计划,具体包括:
若所述客户端的缓存中存在所述SQL请求对应的执行计划,并且所述客户端通过图形化界面对所述执行计划进行参数调整,所述数据库服务器接收所述客户端发送的调整后的执行计划,并且执行所述执行计划。
11.根据权利要求7所述的执行计划的存储方法,其特征在于,在所述数据库服务器根据所述位置信息获取所述执行计划的缓存位置之后,所述方法还包括:
若所述位置信息指定所述执行计划的缓存位置为所述数据库服务器的缓存,所述数据库服务器将所述执行计划保存在所述数据库服务器的缓存中。
12.一种执行计划的存储装置,其特征在于,包括:
接收单元,用于接收结构化查询语言SQL请求;
检测单元,用于检测在客户端的缓存中是否存在所述接收单元接收的所述SQL请求对应的执行计划;
生成单元,用于当所述客户端的缓存中不存在所述检测单元检测的所述SQL请求对应的执行计划时,生成位置信息,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
发送单元,用于将所述位置信息及所述SQL请求发送给所述数据库服务器。
13.根据权利要求12所述的执行计划的存储装置,其特征在于,
所述发送单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划时,将所述执行计划发送给所述数据库服务器。
14.根据权利要求13所述的执行计划的存储装置,其特征在于,
所述发送单元,还用于当所述客户端的缓存中存在所述SQL请求对应的多个执行计划时,从所述多个执行计划中选择任意一个执行计划发送给所述数据库服务器。
15.根据权利要求13所述的执行计划的存储装置,其特征在于,所述装置还包括:
显示单元,用于通过图形化界面显示所述检测单元检测到的所述执行计划的参数信息;
调整单元,用于根据参数信息修改指令调整所述显示单元显示的所述执行计划的参数信息;
保存单元,用于将调整后的执行计划保存在所述客户端的缓存中;
所述发送单元,还用于将所述调整单元调整后的执行计划发送给所述数据库服务器。
16.根据权利要求12所述的执行计划的存储装置,其特征在于,
所述接收单元,还用于当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,接收所述数据库服务器发送的所述SQL请求对应的执行计划;
保存单元,还用于将所述接收单元接收的所述执行计划保存在所述客户端的缓存中。
17.根据权利要求12所述的执行计划的存储装置,其特征在于,
所述生成单元,还用于当所述客户端的缓存中不存在所述SQL请求对应的执行计划时,根据所述SQL请求,进行哈希运算生成所述位置信息。
18.一种执行计划的存储装置,其特征在于,包括:
接收单元,用于接收客户端发送的位置信息及结构化查询语言SQL请求,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为客户端的缓存和/或数据库服务器的缓存;
获取单元,用于根据所述接收单元接收的所述SQL请求,获取所述SQL请求对应的执行计划;
所述获取单元,还用于根据所述位置信息获取所述执行计划的缓存位置;
发送单元,用于当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,所述数据库服务器将所述执行计划发送给所述客户端进行保存。
19.根据权利要求18所述的执行计划的存储装置,其特征在于,
所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划时,接收所述客户端发送的所述执行计划;
所述装置还包括:
执行单元,用于执行所述接收单元接收的所述执行计划。
20.根据权利要求19所述的执行计划的存储装置,其特征在于,
所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的多个执行计划时,接收所述客户端发送的从所述多个执行计划中选择的任意一个执行计划;
所述执行单元,还用于执行所述接收单元接收的所述任意一个执行计划。
21.根据权利要求19所述的执行计划的存储装置,其特征在于,
所述接收单元,还用于当所述客户端的缓存中存在所述SQL请求对应的执行计划,并且所述客户端通过图形化界面对所述执行计划进行参数调整时,接收所述客户端发送的调整后的执行计划;
所述执行单元,还用于执行所述接收单元接收的所述调整后的执行计划。
22.根据权利要求18所述的执行计划的存储装置,其特征在于,所述装置还包括:
保存单元,用于当所述位置信息指定所述执行计划的缓存位置为所述数据库服务器的缓存时,所述数据库服务器将所述执行计划保存在所述数据库服务器的缓存中。
23.一种执行计划的存储系统,其特征在于,包括:至少一个客户端和数据库服务器;
所述客户端,用于接收结构化查询语言SQL请求,检测在所述客户端的缓存中是否存在所述SQL请求对应的执行计划;
所述客户端,还用于当所述客户端的缓存中不存在所述SQL请求对应的执行计划时,生成位置信息,并且将所述位置信息及所述SQL请求发送给所述数据库服务器,所述位置信息用于指示与所述SQL请求对应的执行计划的缓存位置,所述缓存位置为所述客户端的缓存和/或数据库服务器的缓存;
所述数据库服务器,用于接收客户端发送的所述位置信息及所述SQL请求,并根据所述位置信息及所述SQL请求,获取所述SQL请求对应的执行计划;
所述数据库服务器,还用于根据所述位置信息获取所述执行计划的缓存位置,当所述位置信息指定所述执行计划的缓存位置为所述客户端的缓存时,将所述执行计划发送给所述客户端进行保存。
CN201310507367.8A 2013-10-24 2013-10-24 执行计划的存储方法、装置及系统 Active CN103577561B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310507367.8A CN103577561B (zh) 2013-10-24 2013-10-24 执行计划的存储方法、装置及系统
EP14856211.9A EP3054386B1 (en) 2013-10-24 2014-04-16 Execution plan storage method, device and system
PCT/CN2014/075520 WO2015058499A1 (zh) 2013-10-24 2014-04-16 执行计划的存储方法、装置及系统
US15/136,472 US20160239542A1 (en) 2013-10-24 2016-04-22 Method, Apparatus, and System for Storing Execution Plan

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310507367.8A CN103577561B (zh) 2013-10-24 2013-10-24 执行计划的存储方法、装置及系统

Publications (2)

Publication Number Publication Date
CN103577561A CN103577561A (zh) 2014-02-12
CN103577561B true CN103577561B (zh) 2017-12-01

Family

ID=50049337

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310507367.8A Active CN103577561B (zh) 2013-10-24 2013-10-24 执行计划的存储方法、装置及系统

Country Status (4)

Country Link
US (1) US20160239542A1 (zh)
EP (1) EP3054386B1 (zh)
CN (1) CN103577561B (zh)
WO (1) WO2015058499A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577561B (zh) * 2013-10-24 2017-12-01 华为技术有限公司 执行计划的存储方法、装置及系统
CN105590178A (zh) * 2014-10-21 2016-05-18 阿里巴巴集团控股有限公司 一种资源处理方法与设备
CN106294375B (zh) * 2015-05-15 2020-04-10 阿里巴巴集团控股有限公司 一种数据请求实时处理方法和装置
US10459889B2 (en) 2017-06-06 2019-10-29 Sap Se Multi-user database execution plan caching
JP7006013B2 (ja) * 2017-08-22 2022-01-24 富士通株式会社 データ提供プロラム、データ提供方法、及びデータ提供装置
CN110110003A (zh) * 2018-01-26 2019-08-09 广州中国科学院计算机网络信息中心 M2m平台的数据存储控制方法及装置
CN109918392B (zh) * 2018-12-15 2023-08-11 中国平安人寿保险股份有限公司 结构化查询语言定位方法、装置、服务器及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101184106A (zh) * 2007-11-30 2008-05-21 北京航空航天大学 一种移动数据库的关联事务处理方法
CN101567006A (zh) * 2009-05-25 2009-10-28 中兴通讯股份有限公司 一种数据库系统及分布式sql语句执行计划重用方法
CN102081625A (zh) * 2009-11-30 2011-06-01 中国移动通信集团北京有限公司 一种数据查询的方法及查询服务器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115703A (en) * 1998-05-11 2000-09-05 International Business Machines Corporation Two-level caching system for prepared SQL statements in a relational database management system
US6704724B1 (en) * 1999-12-14 2004-03-09 Ncr Corporation Parallel optimizer hints with a direct manipulation user interface
KR101083563B1 (ko) * 2009-04-24 2011-11-14 엔에이치엔비즈니스플랫폼 주식회사 데이터베이스 관리 방법 및 시스템
US8874547B2 (en) * 2010-01-04 2014-10-28 Microsoft Corporation Parameter-sensitive plans
US8996503B2 (en) * 2010-10-04 2015-03-31 Sybase, Inc. Query plan optimization for prepared SQL statements
US8832143B2 (en) * 2010-12-16 2014-09-09 Sybase, Inc. Client-side statement cache
US9298829B2 (en) * 2012-12-18 2016-03-29 International Business Machines Corporation Performing a function on rows of data determined from transitive relationships between columns
CN103577561B (zh) * 2013-10-24 2017-12-01 华为技术有限公司 执行计划的存储方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101184106A (zh) * 2007-11-30 2008-05-21 北京航空航天大学 一种移动数据库的关联事务处理方法
CN101567006A (zh) * 2009-05-25 2009-10-28 中兴通讯股份有限公司 一种数据库系统及分布式sql语句执行计划重用方法
CN102081625A (zh) * 2009-11-30 2011-06-01 中国移动通信集团北京有限公司 一种数据查询的方法及查询服务器

Also Published As

Publication number Publication date
CN103577561A (zh) 2014-02-12
EP3054386A4 (en) 2016-08-31
WO2015058499A1 (zh) 2015-04-30
EP3054386B1 (en) 2019-06-19
US20160239542A1 (en) 2016-08-18
EP3054386A1 (en) 2016-08-10

Similar Documents

Publication Publication Date Title
CN103577561B (zh) 执行计划的存储方法、装置及系统
US11574072B2 (en) Dynamic shared data object masking
US8930374B2 (en) Method and apparatus for multidimensional data storage and file system with a dynamic ordered tree structure
US20160239387A1 (en) Operation synchronization method, device and storage medium
US8495056B2 (en) System and method for caching database reports
CN106055587A (zh) 一种分库数据库系统及其路由方法
CN105635196B (zh) 一种获取文件数据的方法、系统和应用服务器
CN105095313B (zh) 一种数据访问方法和设备
EP4097602A1 (en) Streams on shared database objects
US8209440B2 (en) Device-configuration-information optimum arrangement method and device-configuration-information optimum arrangement system
US11194814B1 (en) Real-time streaming data ingestion into database tables
CN106776823A (zh) 一种时序数据管理方法、设备和装置
US11966416B2 (en) Cross-organization and cross-cloud automated data pipelines
US20230267130A1 (en) Analytical query processing with decoupled compute instances
US11838373B2 (en) Remote execution using a global identity
CN104461929B (zh) 基于拦截器的分布式数据缓存方法
US10877988B2 (en) Real-time change data from disparate sources
CN106921648A (zh) 数据存储方法、应用服务器及远程存储服务器
CN106603610A (zh) 一种数据获取方法及装置
US20100094988A1 (en) automatic discovery framework for integrated monitoring of database performance
WO2017092356A1 (zh) 用于提供服务数据的服务器、方法及系统
CN106354747A (zh) 用于大数据的服务提供方法
US9049111B2 (en) Progressive charting of network traffic flow data
CN110389837A (zh) 数据访问方法、装置、设备、存储介质及系统
US11748327B2 (en) Streams using persistent tables

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