当前位置: 首页 > 专利查询>SAP欧洲公司专利>正文

智能查询计划缓存大小管理制造技术

技术编号:36447062 阅读:11 留言:0更新日期:2023-01-25 22:41
可以实施一种智能查询计划缓存大小管理的方法。该方法可以在数据库管理系统中的多个传入查询的执行期间测量查询局部性。数据库管理系统包括查询执行计划缓存,该查询执行计划缓存具有能够存储为多个传入查询生成的查询执行计划中的至少一些的大小。基于所测量的查询局部性,该方法可以调整查询执行计划缓存的大小。大小。大小。

【技术实现步骤摘要】
智能查询计划缓存大小管理

技术介绍

[0001]查询计划(也称为“查询执行计划”)是诸如结构化查询语言(SQL)服务器的数据库管理系统(DBMS)为了完成查询而执行的步骤序列。当在DBMS中第一次运行查询时,可以编译查询以生成对应的查询计划,该对应的查询计划可以被存储在称为“查询计划缓存”的存储器中,该存储器也被称为“查询执行计划缓存”,或者简称为“计划缓存”,并且这些术语可以在本文描述的任何示例中互换使用。因此,当再次运行相同的查询时,DBMS不需要重新生成查询计划。相反,它可以重用存储在查询计划缓存中的缓存查询计划,从而提高DBMS的效率。
[0002]查询计划缓存的大小对于DBMS的性能是重要的。如果查询计划缓存的大小太大,则一些查询计划缓存空间可能没有使用,导致宝贵的缓存存储器的浪费,否则该缓存存储器可以用于其他目的。另一方面,如果查询计划缓存的大小太小,则不是所有生成的查询计划都可以被存储在查询计划缓存中,并且根据某些淘汰(eviction)策略,一些查询计划不得不从查询计划缓存中被淘汰。结果,当存在其对应的查询计划已经从查询计划缓存中被淘汰的传入查询时,该查询将不得不再次被编译,从而导致查询执行的延迟。
[0003]因此,仍然需要一种用于管理DBMS中的查询计划缓存的大小的改进的系统和方法。
附图说明
[0004]图1是示例数据库管理系统的总体框图。
[0005]图2是示例智能缓存管理器的框图。
[0006]图3是示出智能查询计划缓存大小管理的示例总体方法的流程图。
[0007]图4是示出用于基于查询局部性的测量来动态调整查询计划缓存大小的方法的流程图。
[0008]图5描绘分别具有高查询局部性和低查询局部性的两个示例查询序列。
[0009]图6描绘当传入查询具有相对较低的查询局部性时的存储在计划缓存中的优先级排序的查询计划。
[0010]图7描绘当传入查询具有相对较高的查询局部性时的存储在计划缓存中的优先级排序的查询计划。
[0011]图8是根据三种不同方法的传入查询的总编译时间的示例曲线图。
[0012]图9是对应于图8中描绘的传入查询的查询计划缓存大小的示例曲线图。
[0013]图10是所描述的实施例可以被实施的示例计算系统的框图。
[0014]图11是可以结合本文描述的技术使用的示例云计算环境的框图。
具体实施方式
[0015]示例1

数据库管理系统的概述
[0016]图1示出示例数据库管理系统100的总体框图,其可以实施本文描述的智能查询计
划缓存大小管理技术。在示例实施例中,数据库管理系统100可以是SQL服务器。
[0017]如图所示,数据库管理系统100包括查询处理引擎130和协议层120,协议层120充当一个或多个客户端110和查询处理引擎130之间的接口。例如,协议层120能够实施服务器名称指示协议,其中客户端110可以通过该服务器名称指示协议连接到查询处理引擎130。
[0018]查询处理引擎130可以包括缓存管理器140、查询解析器150、查询优化器160和查询执行器170。缓存管理器140可以访问缓存池190,其表示快速访问存储器空间。缓存池190可以包括计划缓存192,其被配置为存储先前编译的查询执行计划,如下所述。在某些实施例中,缓存池190除了计划缓存192之外还可以包括数据缓存,其中数据缓存可以被配置为将最近或经常使用的数据保存在其比普通数据存储更快或在计算上更便宜的缓存存储器中。缓存池190可以是数据库管理系统100的主存储器消费者,并且其大小可以通过最小和最大存储器设置来配置。
[0019]从客户端110发送的传入查询可以由缓存管理器140评估,以确定查询是否具有存储在计划缓存192中的对应的(已编译的)查询执行计划。
[0020]如果缓存管理器140没有在计划缓存192中找到对应于传入查询的查询执行计划,则传入查询可以由查询解析器150分析,其可以检查查询是否包含语法和/或语义错误。在验证传入查询是改变数据的有效事务SQL语句(例如,SELECT、INSERT、UPDATE、DELETE、MERGE等)之后,查询解析器150可以生成查询可以被运行的一个或多个执行树。执行树可以由查询优化器160用来生成决定将如何执行查询的对应的查询执行计划。查询优化器160可以被配置为在基于相应的执行树生成的多个查询执行计划当中,确定哪个查询执行计划是最优或最高效的一个(例如,在基于CPU使用、存储器使用等计算的就查询成本方面而言最便宜的一个)。
[0021]然后,所确定的(即,最优的)查询执行计划可以被发送到查询执行器170以用于执行。查询执行器170可以与数据存储装置或存储器空间180通信,并执行由查询优化器170确定的查询执行计划中的运算符。从数据存储装置或存储器空间180检索的数据可以经由协议层120被返回给客户端110。
[0022]如本文所述,查询编译是指将传入查询转换为最优查询执行计划(例如,检查语法和/或语义错误、生成执行树、以及确定最优查询执行计划)的过程,如上所述。取决于查询的复杂性(例如,联合表的数量等)和查询优化算法,查询编译时间可能很长(例如,几十秒或更长)。因此,为了提高操作效率,对应于传入查询的编译的查询执行计划(即,所确定的最优查询执行计划)可以被存储在计划缓存192中,以便如果将来再次提交相同的查询,则可以快速检索并重用该编译的查询执行计划。
[0023]例如,如果缓存管理器140确定传入查询在计划缓存192中具有对应的查询执行计划,则查询执行计划可以直接从计划缓存192中取出并被转发给查询执行器170以用于执行。因此,在该场景中,可以绕过查询解析器150和查询优化器160的操作。换句话说,传入查询不需要被重新编译,因为其先前编译的查询执行计划在计划缓存192中可用。
[0024]如上所述,计划缓存192可以存储编译的查询执行计划。对于传入查询,缓存管理器140检查它是否具有存储在计划缓存192中的编译的查询执行计划。如果是,那么可以重用该缓存的查询执行计划。这可以提高效率,因为它消除了编译查询(即,重新生成查询执行计划)的时间。另一方面,如果查询不具有存储在计划缓存192中的编译的查询执行计划,
则查询必须被编译。编译的查询然后可以被存储在计划缓存192中,使得当将来再次发生相同的查询时,快速访问其缓存的查询执行计划是可行的。换句话说,计划缓存192可以通过将最近或经常使用的查询执行计划保存在其比普通存储器存储访问起来更快或在计算上更便宜的缓存存储器中来提高性能。
[0025]如果传入查询是新的(即,之前没有提交过的第一次查询),则该新查询在计划缓存192中不具有对应的查询执行计划,并且必须被第一次编译。另一方面,如果传入查询是旧的(即,之前已经提交过至少一次的相同的查询),则计划缓存192中是否存在对应的编译的查询执行计划可以取决于计划缓存192的大小和缓存管本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算机实施的方法,包括:在数据库管理系统中的多个传入查询的执行期间测量查询局部性,其中数据库管理系统包括查询执行计划缓存,所述查询执行计划缓存具有能够存储为所述多个传入查询生成的查询执行计划中的至少一些的大小;以及基于所测量的查询局部性,调整查询执行计划缓存的大小。2.根据权利要求1所述的方法,其中,测量查询局部性包括累积所述多个传入查询的提升距离。3.根据权利要求2所述的方法,其中,如果传入查询具有存储在查询执行计划缓存中的生成的查询执行计划,则所述传入查询的提升距离基于查询执行计划缓存中的所述生成的查询执行计划的优先级顺序来确定。4.根据权利要求2所述的方法,其中,如果传入查询不具有存储在查询执行计划缓存中的生成的查询执行计划,则所述传入查询的提升距离被设置为存储在所述查询执行计划缓存中的查询执行计划的计数。5.根据权利要求1所述的方法,其中,调整所述查询执行计划缓存的大小包括:如果所测量的查询局部性已经在时间窗口内降低,则增加所述查询执行计划缓存的大小。6.根据权利要求5所述的方法,其中,增加所述查询执行计划缓存的大小包括将额外缓存分配给查询执行计划缓存,其中额外缓存的大小是预定义最大缓存大小和分配所述额外缓存之前的查询执行计划缓存的大小之间的差的预定义分数。7.根据权利要求5所述的方法,其中,所述时间窗口具有预定义持续时间,或者具有当预定数量的传入查询被提交以用于执行时的持续时间。8.根据权利要求1所述的方法,其中,调整所述查询执行计划缓存的大小包括:如果所测量的查询局部性已经在时间窗口内提高,则减少所述查询执行计划缓存的大小。9.根据权利要求8所述的方法,其中,减少所述查询执行计划缓存的大小包括从所述查询执行计划缓存中移除缓存部分,其中所述缓存部分具有预定义大小。10.根据权利要求8所述的方法,其中,所述时间窗口具有预定义持续时间,或者具有当预定数量的传入查询被提交以用于执行时的持续时间。11.一种计算系统,包括:存储器;一个或多个硬件处理器,耦合到存储器;和一个或多个计算机可读存储介质,存储指令,所述指令在被加载到存储器中时使得所述一个或多个硬件处理器执行操作,所述操作包括:在数据库管理系统中的多个传入查询的执行期间测量查询局部性,其中数据库管理系统包括查询执行计划缓存,所述查询执行计划缓存具有能够存储为所述多个传入查询生成的查询执行计划中的至少一些的大小;以及基于所测量的查询局部性,调整所述查询执行计划缓存的大小。12.根据权利要求11所述的系统,其中,测量查询局部性包括累积所述多个传入查询的提升距离,其中累积提升距离的增加指示查询局部性的降低,并且累积提升距离的减少指示查询局部性的提高。13....

【专利技术属性】
技术研发人员:J阮SG李S李B全HJ尹J成
申请(专利权)人:SAP欧洲公司
类型:发明
国别省市:

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

1