查询计划更新的方法和装置技术领域
本发明涉及计算机技术领域,尤其涉及一种查询计划更新的方法和装置。
背景技术
数据库管理系统在接收到用户输入或应用程序发送的数据查询语句(例如SQL语
句)后,会对数据查询语句进行语法语义的解析及查询优化,以生成与该数据查询语句对应
的查询计划,并根据这个查询计划在数据库中执行查询操作。为了降低解析以及优化时的
时间代价及空间代价,现有技术中引入了查询计划缓存。
查询计划缓存就是缓存数据查询语句以及对应的查询计划。当再次执行该数据查
询语句时,无需执行解析和查询优化,仅需在查询计划缓存中找到与该数据查询语句对应
的查询计划,并执行查询计划即可。
然而,查询计划存入查询计划缓存后,一般不会更改,这样就会使得缓存起来的查
询计划缺乏灵活性,并不能实时适应系统的负载情况,造成了加剧系统负载或者资源浪费
的情况。
发明内容
有鉴于此,本发明提供一种查询计划更新的方法和装置,以解决缓存查询计划后
查询计划不可更改导致的加剧系统负载或者资源浪费的技术问题。
第一方面,本发明实施例提供了一种查询计划更新的方法,包括:
执行与数据查询语句对应的查询计划;
统计执行所述查询计划时的系统运行参数的取值,所述系统运行参数的取值反映
系统当前的负载状况;
根据所述系统运行参数的取值调整所述查询计划的单位代价参数的取值;以及,
根据调整后的所述查询计划的单位代价参数的取值对所述数据查询语句重新执
行查询优化操作,得到与所述数据查询语句对应的新的查询计划,并将所述新的查询计划
进行缓存。
第二方面,本发明实施例还提供了一种查询计划更新的装置,包括:
计划执行模块,用于执行与数据查询语句对应的查询计划;
参数统计模块,用于统计执行所述查询计划时的系统运行参数的取值,所述系统
运行参数的取值反映系统当前的负载状况;
取值调整模块,用于根据所述系统运行参数的取值调整所述查询计划的单位代价
参数的取值;以及,
计划更新模块,用于根据调整后的所述查询计划的单位代价参数的取值对所述数
据查询语句重新执行查询优化操作,得到与所述数据查询语句对应的新的查询计划,并将
所述新的查询计划进行缓存。
本发明提供的查询计划更新的方法和装置,通过统计与数据查询语句对应的查询
计划在执行时系统运行参数的取值调整查询计划的单位代价参数的取值,以及根据调整后
的查询计划的单位代价参数的取值对数据查询语句重新执行查询优化操作,以得到新的查
询计划,并将新的查询计划进行缓存的技术方案,实现了根据系统当前的负载状态,适时地
调整数据查询语句的查询计划,使得新的查询计划可以更好的适应系统负载,避免缓存的
查询计划不可更改导致的加剧系统负载或者资源浪费的技术问题,同时,在执行数据查询
语句的查询计划时,保证系统负载可以在一个合理的区间内。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它
特征、目的和优点将会变得更明显:
图1为现有技术中执行查询计划时的流程图;
图2a为本发明实施例一提供的一种查询计划更新的方法的流程图;
图2b为本发明实施例一提供的新的查询计划缓存的方法的流程图;
图3a为本发明实施例二提供的一种查询计划更新的方法的流程图;
图3b为本发明实施例二提供的一种查询计划更新的方法的流程图;
图3c为本发明实施例二提供的一种查询计划更新的方法的流程图;
图4为本发明实施例三提供的一种查询计划更新的装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描
述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便
于描述,附图中仅示出了与本发明相关的部分而非全部内容。
图1为现有技术中执行查询计划时的流程图。从图1中可以看出,在获取数据查询
语句后,先确定是否开启了查询计划缓存。其中,查询计划缓存中预先存储了多个数据查询
语句及其对应的查询计划。进一步的,如果开启了查询计划缓存,则在查询计划缓存中确认
是否存在与获取到的数据查询语句对应的查询计划,如果存在对应的查询计划,则确认该
查询计划是否有效。其中,查询计划有效是指查询计划的被使用频率高于设定频率,或者最
近一次被使用后距离当前时间的时间间隔小于设定的时间间隔。进一步的,当查询计划有
效时,执行该查询计划。相对的,如果没有开启查询计划缓存,或者查询计划缓存中不存在
对应的查询计划,又或者确认该查询计划不是有效的查询计划,则正常执行对数据查询语
句的处理过程,即对数据查询语句进行语法解析、语义解析以及查询优化,以确定对应的查
询计划,并执行该查询计划。
在执行查询计划后,先确定是否开启了查询计划缓存。如果没有开启,则结束流
程。如果开启了查询计划缓存,则再次在查询计划缓存中确认是否存在与数据查询语句对
应的查询计划,如果不存在对应的查询计划,则将数据查询语句和执行的查询计划一同插
入查询计划缓存中,并结束流程。如果存在对应的查询计划,则确认该查询计划是否有效,
如果有效,则结束流程。如果无效,则将数据查询语句和执行的查询计划一同插入查询计划
缓存中,并结束流程。
其中,在对数据查询语句进行查询优化时,首先根据语法语义的解析结果生成多
个备选查询计划,并根据以下公式确定出每个备选查询计划对应的查询计划总代价参数的
取值,其中,用查询计划_TotalCost表示查询计划总代价参数,然后选取查询计划_
TotalCost取值最小的备选查询计划作为最终查询优化的结果进行输出。
查询计划_TotalCost=I/O_Totalcost+CPU_Totalcost+缓冲区_Totalcost+网
络_Totalcost;
其中,查询计划_TotalCost表示对应备选查询计划对系统资源的总体依赖程度,
取值越大,则总体依赖程度越高,取值越小,则总体依赖程度越低;I/O_Totalcost为输入/
输出(I/O)总代价参数,表示对应备选查询计划对系统I/O资源的依赖程度,取值越大,则依
赖程度越高,取值越小,则依赖程度越低;CPU_Totalcost为中央处理器(CPU)总代价参数,
表示对应备选查询计划对系统CPU资源的依赖程度,取值越大,则依赖程度越高,取值越小,
则依赖程度越低;缓冲区_Totalcost为缓冲区总代价参数,表示对应备选查询计划对系统
缓冲区资源的依赖程度,取值越大,则依赖程度越高,取值越小,则依赖程度越低;网络_
Totalcost为网络总代价参数,表示对应备选查询计划对系统网络资源的依赖程度,取值越
大,则依赖程度越高,取值越小,则依赖程度越低。
进一步的,查询计划总代价参数的取值等于各项总代价参数的取值的和。各项总
代价参数的取值等于各项单位代价参数的取值乘以对应资源被使用的次数。以I/O_
Totalcost为例,则I/O_Totalcost=I/O_单位_cost*ios。其中,I/O_单位_cost为I/O单位
代价参数,ios为运行查询计划时I/O资源被使用的次数。
可见,查询计划总代价参数的取值可以反映查询计划对系统资源的依赖情况。然
而,不同情况下,系统的负载情况可能会发生改变,此时,该查询计划可能就不适合系统当
前的负载情况,从而导致在运行查询计划时,运行时间过长、加剧系统负载或者浪费系统资
源。
为了防止上述情况的出现,本发明提出了一种可以保证查询计划缓存中的查询计
划实时适应系统的负载情况的方法和装置,该方法和装置中,数据查询语句的查询计划可
以根据系统的负载情况进行更新。
实施例一
图2a为本发明实施例一提供的一种查询计划更新的方法的流程图。本实施例提供
的查询计划更新的方法可以由查询计划更新的装置执行,其中,该查询计划更新的装置可
以通过软件和/或硬件的方式实现,并集成在智能终端中。该智能终端可以包括计算机、智
能手机以及平板电脑等。
参考图2a,本实施例提供的查询计划更新的方法具体包括:
S110、执行与数据查询语句对应的查询计划。
在本步骤之前,已经确定了与数据查询语句对应的查询计划。
S120、统计执行查询计划时的系统运行参数的取值。
其中,系统运行参数包括下述至少一项:I/O利用率、CPU利用率、数据缓冲比率以
及网络吞吐率。可选的,系统运行参数还可以包括:查询计划运行时间等参数。
具体的,系统运行参数的取值反映系统当前的负载状况。系统运行参数的取值越
高,表明对应的资源负载越大。例如,某次系统运行参数中I/O利用率为40%,CPU利用率为
65%,则说明系统中的CPU资源比I/O资源的负载更大。
可选的,在统计执行查询计划时的系统运行参数的取值后,先判断当前是否开启
了查询计划缓存,如果开启了查询计划缓存,则确定查询计划缓存中是否存在与数据查询
语句对应的查询计划,如果存在对应的查询计划且在查询计划有效时,执行后续步骤。如果
没有开启查询计划缓存,则直接结束流程。如果开启了查询计划缓存,但是在查询计划缓存
中不存在与数据查询语句对应的查询计划,或者存在对应的查询计划但是该查询计划无
效,则直接将数据查询语句与执行的查询计划存入查询计划缓存中。
S130、根据系统运行参数的取值调整查询计划的单位代价参数的取值。
其中,单位代价参数可以包括:I/O单位代价参数、CPU单位代价参数、缓冲区单位
代价参数以及网络单位代价参数中的至少一种。在本实施例中单位代价参数优选包括:I/O
单位代价参数、CPU单位代价参数、缓冲区单位代价参数以及网络单位代价参数,分别用I/
O_单位_cost、CPU_单位_cost、缓冲区_单位_cost以及网络_单位_cost表示。
具体的,根据I/O利用率的取值可以调整I/O_单位_cost的取值,根据CPU利用率的
取值可以调整CPU_单位_cost的取值,根据数据缓冲比率的取值可以调整缓冲区_单位_
cost的取值,根据网络吞吐率的取值可以调整网络_单位_cost的取值。其中,根据实际统计
的系统运行参数调整对应的单位代价参数的取值,在对应的单位代价参数的取值调整后,
可以得到各项的总代价参数的取值,进而可以得到查询计划总代价参数的取值,即查询计
划_TotalCost的取值。
进一步的,根据系统运行参数的取值调整查询计划对应的单位代价参数的取值,
具体可以是:如果系统运行参数的取值较高,则适当增大对应的单位代价参数的取值,如果
系统运行参数的取值较低,则适当减小对应的单位代价参数的取值。其中,增大和减小单位
代价参数的取值的规则可以根据实际情况进行设定。比如,I/O利用率的取值比较高,则说
明系统I/O资源的负载比较重,在运行查询计划时,对I/O资源依赖程度比较高,即I/O_单
位_cost的取值比较大的查询计划的执行将会受阻,所以,适当增大I/O_单位_cost的取值,
以使后续在重新执行查询优化操作时,该I/O_单位_cost的取值比较大的查询计划被选中
的概率降低,进而缓解当前系统I/O资源的负载比较重的情况。再比如,I/O利用率的取值比
较小,则说明系统I/O资源的负载比较轻,所以,适当减小I/O_单位_cost的取值,以使后续
在重新执行查询优化操作时,该I/O_单位_cost的取值比较小的查询计划被选中的概率增
大,进而使得系统的I/O资源被充分合理利用。为了保证调整查询计划的单位代价参数的取
值时更加准确,可以预先设定系统运行参数的运行参数值范围,其具体值可以根据实际情
况进行设定。当系统运行参数的取值在对应的运行参数值范围内,则说明系统运行参数对
应的负载状况良好。当系统运行参数的取值不在对应的运行参数值范围内,则说明系统运
行参数对应的负载可能比较重或者比较轻,此时需要改变对应的查询计划的单位代价参数
的取值。
S140、根据调整后的查询计划的单位代价参数的取值对数据查询语句重新执行查
询优化操作,得到与数据查询语句对应的新的查询计划,并将新的查询计划进行缓存。
具体的,重新执行查询优化操作是指对数据查询语句重新进行查询优化,以确定
新的查询计划。新的查询计划在运行时,可以更好地适应系统当前的负载情况。可选的,数
据查询语句可以对应多个查询计划,新的查询计划与原有的查询计划不同。
进一步的,将数据查询语句和新的查询计划一同进行缓存,即插入查询计划缓存
中。同时,确定新的查询计划的单位代价参数的取值,并将新的查询计划的单位代价参数的
取值一同进行缓存,以在后续执行新的查询计划时,继续根据系统运行参数的取值调整新
的查询计划的单位代价参数的取值。
本实施例的应用场景一
系统当前的CPU资源的负载较重,在运行查询计划时,可以动态增大CPU_单位_
cost的取值,以选择一个对CPU资源不那么依赖的新的查询计划,该新的查询计划可能对I/
O资源更加依赖,以保证运行时不加重系统的CPU资源的负载,并且保证了查询计划的运行
速度。
本实施例的应用场景二
系统当前的I/O资源的负载较重,此时,对I/O资源依赖程度高的查询计划将不适
合在当前的系统中运行,一旦运行便会进一步增加I/O资源的负载,使得运行速度很慢。此
时,可以动态增大查询计划的I/O_单位_cost的取值,选择新的对I/O资源依赖程度较低的
查询计划,同时失效掉旧的查询计划。
本实施例提供的技术方案,通过统计与数据查询语句对应的查询计划在执行时系
统运行参数的取值来调整查询计划的单位代价参数的取值,以及根据调整后的查询计划的
单位代价参数的取值对数据查询语句重新执行查询优化操作,以得到新的查询计划,并将
新的查询计划进行缓存的技术方案,实现了根据系统当前的负载状态,适时地调整数据查
询语句的查询计划,使得新的查询计划可以更好的适应系统负载,避免缓存的查询计划不
可更改导致的加剧系统负载或者资源浪费的技术问题,同时,在执行数据查询语句的查询
计划时,保证系统负载可以在一个合理的区间内。
在上述实施例的基础上,参考图2b,将新的查询计划进行缓存具体可以包括:
S141、在查询计划缓存中失效掉查询计划。
示例性的,在查询计划缓存中失效掉与数据查询语句对应的查询计划。其中,失效
掉查询计划可以是在查询计划缓存中将该查询计划删除。可选的,同时删除数据查询语句。
S142、将数据查询语句、新的查询计划以及与新的查询计划对应的单位代价参数
的取值存入查询计划缓存中。
具体的,将数据查询语句、新的查询计划以及与新的查询计划对应的单位代价参
数的取值一同存入查询计划缓存中,以便在后续获取到该数据查询语句时,执行新的查询
计划,并统计在执行新的查询计划时系统运行参数的取值,以便继续更新数据查询语句对
应的查询计划。
实施例二
图3a为本发明实施例二提供的一种查询计划更新的方法的流程图。本实施例是在
上述实施例的基础上进行具体化。具体的,参考图3a,本实施例提供的查询计划更新的方法
具体包括:
S210、执行与数据查询语句对应的查询计划。
S220、统计执行查询计划时的系统运行参数的取值。
S230、将系统运行参数的取值与预设的运行参数值范围进行比较。
具体的,预先设定各系统运行参数的运行参数值范围。如果系统运行参数的取值
在对应的运行参数值范围内,则说明执行查询计划时,系统的负载状况良好。
如果统计了多个系统运行参数,则分别将多个系统运行参数与对应的预设的运行
参数值范围进行比较。
S240、根据比较结果,调整查询计划的与系统运行参数对应的单位代价参数的取
值。
其中,该步骤优选包括:如果系统运行参数的取值高于预设的运行参数值范围,则
增大查询计划的与系统运行参数对应的单位代价参数的取值,如果系统运行参数的取值低
于预设的运行参数值范围,则减小查询计划的与系统运行参数对应的单位代价参数的取
值。
当统计了多个系统运行参数的取值时,逐一根据多个系统运行参数的取值调整对
应的单位代价参数的取值。例如,统计了I/O利用率、CPU利用率和网络吞吐率。其中,I/O利
用率高于I/O资源的运行参数值范围,CPU利用率在CPU资源的运行参数值范围内,网络吞吐
率低于网络资源的运行参数值范围,则对应增大I/O_单位_cost的取值,保持CPU_单位_
cost的取值不变,减小网络_单位_cost的取值。
S250、根据调整后的查询计划的单位代价参数的取值对数据查询语句重新执行查
询优化操作,确定与数据查询语句对应的优选查询计划。
其中,优选查询计划为执行查询优化操作后得到的查询计划。
S260、判断优选查询计划与查询计划是否相同。如果优选查询计划与查询计划相
同,则返回执行S240,如果优选查询计划与查询计划不相同,执行S270。
具体的,如果优选查询计划与查询计划相同,则说明并没有实现对查询计划的更
新优化,此时返回执行S240,在执行S240时,继续执行原有的调整方案。
比如,S240中根据比较结果,调整查询计划的与系统运行参数对应的单位代价参
数的取值的具体调整方案为增大I/O_单位_cost的取值,则返回执行S240时,继续增大I/O_
单位_cost的取值,并且继续增大的数值与之前增大的数值相同,如之前调整时对I/O_单
位_cost的取值加5,则继续调整时对I/O_单位_cost的取值加5。
又如,S240中根据比较结果,调整查询计划的与系统运行参数对应的单位代价参
数的取值的具体调整方案为增大I/O_单位_cost的取值,减小CPU_单位_cost的取值,则返
回执行S240时,继续增大I/O_单位_cost的取值,并减小CPU_单位_cost的取值,并且根据实
际情况确定继续增大的数值和继续减小的数值,即继续调整的数值与之前调整的数值可以
相同,也可以不同。
进一步的,如果优选查询计划与查询计划不同,则说明实现了对查询计划的更新
优化。
S270、将优选查询计划确定为与数据查询语句对应的新的查询计划,并将新的查
询计划进行缓存。
本实施例提供的技术方案,通过统计与数据查询语句对应的查询计划在执行时系
统运行参数的取值与预设的运行参数值范围的比较结果,并根据比较结果调整查询计划的
与系统运行参数对应的单位代价参数的取值,根据调整后的查询计划的单位代价参数的取
值确定优选查询计划,并在优选查询计划与查询计划不同时,将优选查询计划确定为与数
据查询语句对应的新的查询计划的技术方案,实现了根据系统当前的负载状态,适时地调
整数据查询语句的查询计划,避免缓存的查询计划不可更改导致的加剧系统负载或者资源
浪费的技术问题,且新的查询计划与执行的查询计划不同,也保证了每次对数据查询语句
的查询计划的优化和更新的有效性,同时更好的适应系统负载状态。在执行数据查询语句
的查询计划时,也保证系统负载在一个合理的区间内。
下面对本实施例提供的查询计划更新的方法进行示例性的描述:
示例一、参考图3b,该示例性的查询计划更新的方法具体包括:
S301、执行与数据查询语句对应的查询计划。
S302、统计执行查询计划时的I/O利用率的取值。
具体的,I/O利用率的取值越高,则对应查询计划对系统I/O资源的依赖程度越高。
S303、判断是否开启查询计划缓存。如果开启,则执行S304,否则,执行S312。
S304、判断查询计划缓存中是否存在与数据查询语句对应的查询计划。如果存在
与数据查询语句对应的查询计划,则执行S305,如果不存在,则执行S311。
S305、确认查询计划是否有效。如果查询计划有效,则执行S306,否则,执行S311。
S306、将I/O利用率的取值与预设的I/O资源的运行参数值范围进行比较。
S307、根据比较结果调整查询计划的I/O_单位_cost的取值。
如果I/O利用率的取值高于预设的I/O资源的运行参数值范围,则增大查询计划的
I/O_单位_cost的取值,如果I/O利用率的取值低于预设的I/O资源的运行参数值范围,则减
小查询计划的I/O_单位_cost的取值。
S308、根据调整后的I/O_单位_cost的取值,对数据查询语句重新执行查询优化操
作,确定与数据查询语句对应的优选查询计划。
S309、判断优选查询计划与查询计划是否相同。如果相同,则返回执行S307,如果
不相同,则执行S310。
S310、将数据查询语句、优选查询计划以及优选查询计划的I/O_单位_cost的取值
存入查询计划缓存中。执行S312。
S311、将数据查询语句与执行的查询计划存入查询计划缓存中。执行S312。
S312、结束。
本示例中,仅对统计I/O利用率的情况进行了说明,对于其他类型的系统运行参
数,比如CPU利用率、数据缓冲比率以及网络吞吐率,其流程与统计I/O利用率的流程相同,
在此不一一说明。
示例二、参考图3c,该示例性的查询计划更新的方法具体包括:
S401、执行与数据查询语句对应的查询计划。
S402、统计执行查询计划时的I/O利用率的取值、CPU利用率的取值、数据缓冲比率
的取值以及网络吞吐率的取值。
S403、判断是否开启查询计划缓存。如果开启,则执行S404,否则,执行S424。
S404、判断查询计划缓存中是否存在与数据查询语句对应的查询计划。如果存在
与数据查询语句对应的查询计划,则执行S405,否则,执行S423。
S405、确认查询计划是否有效。如果查询计划有效,则执行S406,否则,执行S423。
S406、确认I/O利用率的取值是否高于预设的I/O资源的运行参数值范围。如果高
于,则执行S407,否则,执行S408。
S407、增大查询计划的I/O_单位_cost的取值。执行S410。
S408、确认I/O利用率的取值是否低于预设的I/O资源的运行参数值范围。如果低
于,则执行S409,否则,执行S410。
S409、减小查询计划的I/O_单位_cost的取值。执行S410。
S410、确认CPU利用率的取值是否高于预设的CPU资源的运行参数值范围。如果高
于,则执行S411,否则,执行S412。
S411、增大查询计划的CPU_单位_cost的取值。执行S414。
S412、确认CPU利用率的取值是否低于预设的CPU资源的运行参数值范围。如果低
于,则执行S413,否则,执行S414。
S413、减小查询计划的CPU_单位_cost的取值。执行S414。
S414、确认数据缓冲比率的取值是否高于预设的缓冲区资源的运行参数值范围。
如果高于,则执行S415,否则,执行S416。
S415、增大查询计划的缓冲区_单位_cost的取值。执行S418。
S416、确认数据缓冲比率的取值是否低于预设的缓冲区资源的运行参数值范围。
如果低于,则执行S417,否则,执行S418。
S417、减小查询计划的缓冲区_单位_cost的取值。执行S418。
S418、确认网络吞吐率的取值是否高于预设的网络资源的运行参数值范围。如果
高于,则执行S419,否则,执行S420。
S419、增大查询计划的网络_单位_cost的取值。执行S422。
S420、确认网络吞吐率的取值是否低于预设的网络资源的运行参数值范围。如果
低于,则执行S421,否则,执行S422。
S421、减小查询计划的网络_单位_cost的取值。执行S422。
S422、对数据查询语句重新执行查询优化操作,确定新的与数据查询语句对应的
查询计划。执行S423。
S423、将数据查询语句和对应的查询计划插入查询计划缓存中。
S424、结束。
需要说明的是,对I/O利用率、CPU利用率、数据缓冲比率以及网络吞吐率的处理顺
序可以变化。
本示例中,对统计I/O利用率、CPU利用率、数据缓冲比率以及网络吞吐率的情况进
行了说明,一般而言,也可以仅统计其中的任意两种系统运行参数或者任意三种系统运行
参数,且具体流程与统计I/O利用率、CPU利用率、数据缓冲比率以及网络吞吐率的流程相
同,在此不一一说明。
实施例三
图4为本发明实施例三提供的一种查询计划更新的装置的结构示意图。参考图4,
本实施例提供的查询计划更新的装置包括:计划执行模块501、参数统计模块502、取值调整
模块503以及计划更新模块504。
其中,计划执行模块501,用于执行与数据查询语句对应的查询计划;参数统计模
块502,用于统计执行查询计划时的系统运行参数的取值,系统运行参数的取值反映系统当
前的负载状况;取值调整模块503,用于根据系统运行参数的取值调整查询计划的单位代价
参数的取值;以及,计划更新模块504,用于根据调整后的查询计划的单位代价参数的取值
对数据查询语句重新执行查询优化操作,得到与数据查询语句对应的新的查询计划,并将
新的查询计划进行缓存。
本实施例提供的技术方案,通过统计与数据查询语句对应的查询计划在执行时系
统运行参数的取值调整查询计划的单位代价参数的取值,以及根据调整后的单位代价参数
的取值对数据查询语句重新执行查询优化操作,以得到新的查询计划,并将新的查询计划
进行缓存的技术方案,实现了根据系统当前的负载状态,适时地调整数据查询语句的查询
计划,使得新的查询计划可以更好的适应系统负载,同时,在执行数据查询语句的查询计划
时,保证系统负载可以在一个合理的区间内。
在上述实施例的基础上,取值调整模块503包括:取值比较单元,用于将系统运行
参数的取值与预设的运行参数值范围进行比较;参数调整单元,用于根据比较结果,调整查
询计划的与系统运行参数对应的单位代价参数的取值。
在上述实施例的基础上,参数调整单元具体用于:如果系统运行参数的取值高于
预设的运行参数值范围,则增大查询计划的与系统运行参数对应的单位代价参数的取值,
如果系统运行参数的取值低于预设的运行参数值范围,则减小查询计划的与系统运行参数
对应的单位代价参数的取值。
在上述实施例的基础上,计划更新模块504包括:优化确定单元,用于根据调整后
的查询计划的单位代价参数的取值对数据查询语句重新执行查询优化操作,确定与数据查
询语句对应的优选查询计划;计划比对单元,用于如果优选查询计划与查询计划相同,则返
回执行根据比较结果,调整查询计划的与系统运行参数对应的单位代价参数的取值的操
作,直到优选查询计划与查询计划不相同为止;计划确定单元,用于将优选查询计划确定为
与数据查询语句对应的新的查询计划;计划缓存单元,用于将新的查询计划进行缓存。
在上述实施例的基础上,计划更新模块504包括:计划优化单元,用于根据调整后
的查询计划的单位代价参数的取值对数据查询语句重新执行查询优化操作,得到与数据查
询语句对应的新的查询计划;计划失效单元,用于在查询计划缓存中失效掉查询计划;计划
存入单元,用于将数据查询语句、新的查询计划以及与新的查询计划对应的单位代价参数
的取值存入查询计划缓存中。
在上述实施例的基础上,系统运行参数包括下述至少一项:输入/输出利用率、中
央处理器利用率、数据缓冲比率以及网络吞吐率。
本发明实施例提供的查询计划更新的装置适用于上述任意实施例提供的查询计
划的更新方法,具备相应的功能和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,
本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、
重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行
了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还
可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。