在现代关系数据库中,基数估计(CE)起着至关重要的作用。简单来说,基数估计就是预测数据库查询将返回多少中间结果。这一预测对查询优化器的执行计划选择影响巨大,比如决定连接顺序、是否使用索引以及最佳连接方法的选择。如果基数估计不准确,执行计划可能会大打折扣,导致查询速度极慢,严重影响数据库的整体性能。
然而,现有的基数估计方法存在诸多限制。传统的 CE 技术依赖一些简化的假设,往往精准预测复杂查询的基数,尤其是涉及多个表和条件的情况。虽然学习型 CE 模型能提供更好的准确性,但它们的应用却受到训练时间长、需要大数据集以及缺乏系统性基准评估的限制。
为了填这一空白,Google 的研究团队推出了 CardBench,一个全新的基准测试框架。CardBench 包含超过20个真实世界的数据库和数千个查询,远超以往的基准。这使得研究人员能够在各种条件下系统地评估和比较不同的学习型 CE 模型。该基准支持三种主要设置:基于实例的模型、零样本模型和微调模型,适用于不同的训练需求。
CardBench 的设计还包括一系列工具,可以计算必要的数据统计,生成真实的 SQL 查询,并创建用于训练 CE 模型的带注释查询图。
该基准测试提供两组训练数据:一组用于具有多个筛选条件谓词的单个表查询,另一组用于涉及两个表的二进制联接查询。该基准测试包括9125个单表查询和8454个二进制连接查询,适用于其中一个较小的数据集,从而确保为模型评估提供强大且具有挑战性的环境。源自 Google BigQuery 的训练数据标签需要7个 CPU 年的查询执行时间,这凸显了创建此基准测试的重大计算投资。通过提供这些数据集和工具,CardBench 降低了对开发和测试新 CE 模型的研究人员的门槛。
在使用 CardBench 进行的性能评估中,微调模型的表现尤为突出。虽然零样本模型在应用于看不见的数据集时难以提高准确性,尤其是在涉及联接的复杂查询中,但微调模型可以达到与基于实例的方法相当的准确性,而训练数据要少得多。例如,微调的图形神经网络 (GNN) 模型在二进制连接查询中实现了1.32的中位 q 误差和第95个百分位的 q 误差120,明显优于零样本模型。结果表明,即使有500个查询,微调预训练模型也可以显著提高其性能。这使得它们适用于训练数据可能受限的实际应用。
CardBench 的推出为学习型基数估计领域带来了新的希望,使研究人员能够更有效地评估和改进模型,从而推动这一重要领域的进一步发展。
领取专属 10元无门槛券
私享最新 技术干货