(论文阅读-多目标优化器)Multi-Objective Parametric Query Optimization

目录

摘要

一、简介

1.1 State-of-the-Art

1.2 贡献和大纲

二、定义

三、相关工作

四、问题分析

4.1 分析

4.2 算法设计影响

五、通用算法

5.1 算法概述

5.2 完备性证明

六、分段线性代价函数算法

6.1 数据结构

6.2 基本运算实现

6.3 复杂度分析

七、实验评估

八、总结


摘要

经典查询优化根据一个成本度量cost metric来比较查询计划,并将每个计划与一个固定的成本值关联起来。在本文中,我们引入了多目标参数查询优化(Multi-Objective Parametric Query, MPQ)问题,该问题根据多个成本度量比较查询计划,并将给定计划在指定度量上的成本建模为一个依赖于多个参数的函数。例如,一个实例的成本指标可以包括执行时间或货币费用;参数可以表示在优化时未指定的查询谓词的选择性。

MPQ对参数查询优化(允许多个参数,但只允许一个代价度量),和多目标客观查询优化(允许多个代价度量,但不允许参数)进行了泛化。我们正式地分析了新的MPQ问题,并说明了现有算法不适用的原因。提出了一种基于分段线性计划代价函数的广义MPQ算法和一种专门的MPQ算法。我们证明了两种算法都能找到所有相关的查询计划,并通过实验评估了我们的第二种算法在云计算场景中的性能。

一、简介

经典查询优化(Classical Query Optimization, CQ)将查询计划的代价建模为标量代价值c∈R。优化的目标是找到给定查询的代价最小的计划。多目标查询优化(MQ)[14,22,31]将经典模型泛化,并根据多个成本度量将每个查询计划与描述该计划成本的成本向量c∈Rn关联起来。优化目标是找到一组都是帕累托最优的查询计划,这意味着根据所有成本度量,没有其他计划在同一时间具有更好的成本。参数化查询优化(PQ)[13,17,7]以不同的方式泛化了经典模型,并将每个查询计划与代价函数c: Rn→R联系起来,将计划的代价描述为优化时值未知的多个参数的函数。

MPQ同时泛化并统一了MQ和PQ cost model,通过将一个查询计划的cost用一个向量值函数c:Rn -> R来表示。这允许了对于多参数和多个cost metrics进行建模,以下场景进行了具体说明。

场景1:云提供商允许用户通过Web界面查询大型科学数据集。查询处理发生在云端。用户通过类似 SELECT * FROM Table1 WHERE P1 AND P2的模板查询,P1和P2代表了未指定的谓词;用户通过在web交互界面上指定这些谓词来提交查询。云端的查询处理时间通常在接受更高计费的时候可以缩短。因此,在提交查询之后,用户可以看到执行时间和费用之间可能的权衡(通过可选查询计划实现),并可以选择他们喜欢的tradeoff。为了加速这个过程,云服务商会在预处理阶段为每个查询模板计算所有相关的查询计划。谓词的选择性在预处理阶段时是未知的,必须表示为参数,执行时间和费用是两个cost metircs。如果一个查询计划在参数空间中至少有一个点,在这个点上它的时间-费用权衡是帕累托最优的,这意味着没有一个备选计划能同时具备更低的费用和更低的处理时间,这也说明了这个查询计划是相关的。图1说明了此场景中的预处理结果(对于2个未指定谓词的场景)。

场景2:嵌入式的SQL查询是PQ的一个经典用例。为了避免运行时的查询优化开销,对于给定的查询模板,所有潜在相关的查询计划都会被提前计算。参数会对未指定的谓词的选择性或是运行时的可用buffer空间进行建模。在传统设置中,执行时间是唯一的成本度量。在近似查询处理的上下文中,执行时间可以和结果精度进行权衡。在这种情况下,优化时必须同时考虑执行时间结果精度两个指标。在运行时对最优查询计划的选择不仅基于具体的参数值,还基于确定结果精度和执行时间之间的最佳折衷的策略。例如,基于当前系统负载或特定调用的最小精度的要求。

在上面的场景例子中描述的查询优化会去考虑多个参数和多个成本度量;这是一种新的查询优化,我们称之为MPQ。图2展示了MPQ的context:MPQ在运行之前发生,MPQ的输入是一个和参数相关的查询。参数可以标识影响查询计划成本且在优化时未知的任何数值。MPQ的目标是生成一组完成的相关方案,其含义是一个集合,该集合包含每个可能的执行计划p,和参数空间x中的每个点的方案p*,使得根据每个成本度量,p*的成本最多与p在x处的成本相同。它的目标是为参数空间中的所有点找到一组帕累托最优查询计划。与PQ一样,所有相关的查询计划都是预先生成的,因此在运行时不需要进行查询优化。

1.1 State-of-the-Art

MPQ是MQ和PQ的泛化。将现存的MQ或是PQ算法直接应用到MPQ上是不可能的,因为PQ算法只支持一个成本度量,而MQ算法不支持参数。乍一看,将成本度量建模作为参数似乎是可能的;如果除了一个成本度量之外其他所有的成本度量都可以表示为参数,那么PQ算法就可以应用。例如,当我们尝试将场景1中的费用作为参数来建模(这样执行时间就成为了谓词选择性和费用预算的函数),然而这样会导致以下问题:首先,现存的PQ算法通常会假设每个参数的值域是提前知道的。这对于谓词选择性或是可用的buffer空间来说是可以实现的,但对于费用来说却不是,因为为给定查询寻找最小执行费用本来就是一个硬优化问题。其次,成本度量和参数有不同的语义:例如,假设给定查询的备选查询计划的执行费用在1到10美元之间,定价为5美元的计划p的执行时间比所有收费较高的计划都要短。MPQ的结果集应该只包含p,而不包含更昂贵的计划,因为p总是比它们更可取。然而,PQ算法(如[13,17])会为每个可能的成本值在6到10美元之间生成执行时间最短的方案,因为经典PQ算法的目标是通过最优方案覆盖整个参数空间(而MPQ算法的目标不是覆盖整个成本空间)。PQ的结果集可以比MPQ的结果集大任意一个因数,结果集的大小与优化时间有关。由于参数域通常被假设为连通区间,而成本值可能在总成本范围内分布稀疏,因此会产生其他问题。总而言之,通过将成本度量作为参数建模,将MPQ问题转换为PQ问题似乎不合适。PQ算法的一个流行分支将PQ问题分解为多个非参数CQ问题;然而,不可能类比地将一个MPQ问题分解为多个非参数MQ问题,原因在第4节中概述。更多相关工作将在第3节中讨论。

1.2 贡献和大纲

在提供细节前,我们总结了我们的贡献,如下:

  • 我们用分段线性(PWL)计划成本函数正式地分析了MPQ问题。我们特别指出,MPQ问题对于PQ问题的某些基本性质没有等价的内容,这些基本性质启发了基于参数空间分解的一类广泛的PQ算法的设计。

  • 我们提出了MPQ的第一个算法;这些算法可以同时处理多个成本度量和参数化的成本函数。我们提出了一个通用的MPQ算法,可以处理任意的计划成本函数,以及一个专有化的PWL成本函数。

  • 我们对我们的算法进行了正式的分析,并表明这两种算法都保证生成所有相关的查询计划。我们在一个类似于例1中所介绍的示例场景中对PWL代价函数的算法进行了实验评估。

第二章介绍了正式的模型,第三章讨论了相关工作。我们再第四章分析了MPQ的问题并展示了它和PQ在几个重要方面的差异。第五章提出并分析了相关区域修剪算法(Relevance Region Pruning Algorithm, RRPA)。这是一种通用的MPQ算法,可以处理任意的计划成本函数。许多CQ、MQ和PQ的算法都是基于动态规划,为基础不断增加的join table set进行查询计划的生成和剪枝。这个修剪功能与之前的方法不同:每个查询计划都与与其相关的参数空间中的一个区域(相关区域,缩写为RR)相关联。在修剪过程中,通过与备选方案的比较,该区域不断缩小。一旦RR空了,计划就被砍掉了。我们证明了RRPA可以保证为任意查询生成所有相关的查询计划。

RRPA基础操作的实现,例如添加cost function,和对相关区域RPs进行交集,依赖于cost function的类型。PQ的大多数工作集中在线性的linear或是分段线性PWL的cost function,这种函数可以被有效地存储和计算。线性函数对实际执行计划的cost的近似通常不佳,而分段线性PWL函数可以对任意cost function进行任意程度的近似。因此我们将重点放在PWL cost function上,并提出了PWL-RRPA,一种针对于PWL function的特定相关区域修剪算法RRPA。在第六章,我们证明了在PWL-RRPA执行过程中的所有区域RRs都归属于一类有限的形状,并提出了一种数据结构来表示cost functions和RPs。我们提供了伪代码,用于在这些数据结构上有效地实现PWL-RRPA的所有基本操作,并分析了结果的复杂性。在云计算场景中对PWL-RRPA进行了实验评估;结果将在第7节中讨论。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值