Flow-Loss:学习真正重要的基数估计
数据库
2021-01-14 v1
摘要
先前关于学习型基数估计的方法聚焦于改善平均估计误差,但并非所有估计都同等重要。由于学习型模型不可避免地会出错,目标应是改进那些对优化器影响最大的估计。我们引入一种新的损失函数Flow-Loss,它通过用解析函数近似优化器的代价模型与动态规划搜索算法,显式地优化以得到更好的查询计划。Flow-Loss的核心是将查询优化归约为某计划图上的流路由问题,其中路径对应不同的查询计划。为评估我们的方法,我们提出基数估计基准(Cardinality Estimation Benchmark),其包含来自21个模板、多达15个连接的超过16K条查询的子计划真实基数。我们表明,在不同架构与数据库下,使用Flow-Loss训练的模型虽比用Q-Error训练的模型估计精度更差,却改善了计划代价(使用PostgreSQL代价模型)与查询运行时间。当测试集查询与训练查询紧密匹配时,两模型相对PostgreSQL均显著提升性能且接近最优性能(使用真实基数)。然而,Q-Error训练模型在评估略有差异的查询(如相似但非相同的查询模板)时性能显著退化,而Flow-Loss训练模型对此类情形泛化更好。例如,尽管采用相同模型架构与训练数据,Flow-Loss模型在未见模板上实现了相较Q-Error模型最高1.5倍的更好运行时间。
引用
@article{arxiv.2101.04964,
title = {Flow-Loss: Learning Cardinality Estimates That Matter},
author = {Parimarjan Negi and Ryan Marcus and Andreas Kipf and Hongzi Mao and Nesime Tatbul and Tim Kraska and Mohammad Alizadeh},
journal= {arXiv preprint arXiv:2101.04964},
year = {2021}
}