中文

基于神经网络的任意 SQL 基数估计器转换以处理 DISTINCT、AND、OR 和 NOT

数据库 2020-04-16 v1 机器学习

摘要

带有 AND、OR 和 NOT 运算符的 SQL 查询构成了一大类被高度使用的查询。因此,其基数估计对查询优化十分重要。此外,查询规划器需要集合论基数(即无重复)以处理带 DISTINCT 的查询以及在进行规划时使用,例如考虑排序选项时。然而,尽管在存在 DISTINCT、AND、OR 和 NOT 时估计查询基数十分重要,许多基数估计方法仅限于估计仅含重复计数的合取查询的基数。本工作的重点是可应用于任何受限基数估计模型的两种处理该缺陷的方法。首先,我们描述一种专门的深度学习方案 PUNQ,其专为表示合取 SQL 查询并预测查询结果中含重复行的唯一行百分比而设计。利用通过 PUNQ 获得的预测百分比,我们能够将任何仅估计合取查询且估计含重复基数的基数估计方法(如 MSCN)转换为估计无重复查询基数的方法。这使得估计带 DISTINCT 关键字的查询基数成为可能。此外,我们描述一种递归算法 GenCrd,用于将任何仅处理合取查询的基数估计方法 M 扩展为估计更一般查询(包含 AND、OR 和 NOT)基数的方法,而无需改变方法 M 本身。我们的评估在一个具有挑战性的真实世界数据库上进行,该库包含带 DISTINCT 关键字或 AND、OR 和 NOT 运算符的一般查询。实验上,我们表明所提方法获得的基数估计精度与原始被转换方法处于同一水平。

关键词

引用

@article{arxiv.2004.07009,
  title  = {NN-based Transformation of Any SQL Cardinality Estimator for Handling DISTINCT, AND, OR and NOT},
  author = {Rojeh Hayek and Oded Shmueli},
  journal= {arXiv preprint arXiv:2004.07009},
  year   = {2020}
}