其他分享
首页 > 其他分享> > Fauce:Fast and Accurate Deep Ensembles with Uncertainty for Cardinality Estimation 论文解读(VLDB 2021)

Fauce:Fast and Accurate Deep Ensembles with Uncertainty for Cardinality Estimation 论文解读(VLDB 2021)

作者:互联网

Fauce:Fast and Accurate Deep Ensembles with Uncertainty for Cardinality Estimation 论文解读(VLDB 2021)

转化为回归问题

因为查询的基数均为实数,因此我们可以建立一个回归模型\(M\)。对于任意范围的查询语句,模型\(M\)可以产生匹配或接近实际基数值的回归结果。
模型\(M\)作为一个回归模型,其输入应为一个实值向量。因此我们必须将给定的查询语句转化为一个对应的实值向量,这个过程称为查询特征化。本文的查询特征化方法将在后文介绍。总之\(M\)将特征化向量作为模型的输入,实际的基数值作为标签进行训练以期望产生一个可以很好拟合query-cardinality映射关系的函数。

查询特征化

在训练\(M\)预测基数前,我们必须将查询语句转换成满足模型输入形式的实值向量。一个SQL查询语句可以表示成\(<Tables><Joins><Columns><Values>\)在本文中,它们中的每一个都用一个向量表示,这四个向量组合在一起就是一个查询语句的特征化向量,将其直接插入模型用于模型的训练和推理。下面我们介绍每一部分的嵌入方法。

Tables encoding

Joins encoding

\(<Joins>\)是基于连接图得到的,连接图是是从数据库的连接模式中派生出来的。具体来说连接图就是数据库连接模式派生出的所有子图。\(<Joins>\)的嵌入过程大致分为两个步骤:
1.找出所有可能的连接图
2.对所有的连接图做嵌入处理
下面介绍Joins encoding算法:

Columns encoding

列之间的相关性关系可以作为一种有用的信息应用于列编码中。本文利用图嵌入针对数据库不同列之间的真实相关性对每一列进行编码。该编码方法分为三步:
1.构造单表内关系依赖图
2.构造全局关系依赖图
3.根据全局关系依赖图进行图嵌入
我们通过计算随机相关系数(RDC)和一个阈值\(t\)来判断不同列之间是否存在依赖关系。
image

Values encoding

综上,我们完成了对 \(<Tables><Joins><Columns><Values>\) 的编码,将它们连接在一起形成向量 \(q\) 就完成了查询特征化工作得到能作为模型输入的特征化向量。设Joins编码长度为n,Columns编码长度为C,一个query语句中涉及m个表,那么我们得到的一个查询特征化向量的长度为 \(mlog^m+n+c+2c\) 维。

训练数据处理

基数变换

模型 \(M\) 的训练数据为大量的\(<query,real_card>\)我们用S来表示。S作为训练集会很大,这会导致不同的查询基数差距可能会非常大,而且标签的分布可能会比较倾斜,这都会对训练过程造成很大的影响,为了避免这些影响到训练的结果,我们对标签做了一些标准化变换:

训练数据生成

模型的选择

量化不确定性

Work Flow

image

image







觉得有帮助的话给笔者点个赞吧!欢迎评论区互相交流!O(∩_∩)O

标签:Ensembles,训练,模型,Accurate,查询,Estimation,基数,连接,向量
来源: https://www.cnblogs.com/sevent/p/16162493.html