基于转换的查询优化器中递归计划的高效枚举
Efficient Enumeration of Recursive Plans in Transformation-based Query Optimizers
AI总结:
本文提出 RLQDAG,通过带注释等价节点、分组重写规则和增量注释维护扩展 LQDAG,以支持递归查询的计划空间高效枚举,并验证其显著性能提升。
摘要:
建立在基于转换的 Volcano/Cascades 框架之上的查询优化器被用于许多数据库系统。早先在逻辑查询 DAG(LQDAG)数据结构上提出的转换是此类框架的关键,但它们只关注无递归查询。在本文中,我们提出递归逻辑查询 DAG(RLQDAG),它利用递归关系代数的最新进展,扩展 LQDAG,使其具备捕获和转换递归查询的能力。具体而言,该扩展包括:(i) 捕获和转换递归关系项集合的能力,这得益于 (ii) 用于指导在存在递归时更加复杂的转换的带注释等价节点;以及 (iii) RLQDAG 重写规则,这些规则以分组方式转换子项集合,而不是按顺序方式转换单个项;并且 (iv) 增量更新必要的注释。RLQDAG 的核心概念通过语法和形式语义进行形式化,特别关注子项共享和递归。其结果是对 LQDAG 基于转换方法的清晰泛化,能够更高效地探索递归查询的计划空间。所提出方法的实现表明,与最先进技术相比,其性能获得显著提升。
英文摘要:
Query optimizers built on the transformation-based Volcano/Cascades framework are used in many database systems. Transformations proposed earlier on the logical query dag (LQDAG) data structure, which is key in such a framework, focus only on recursion-free queries. In this paper, we propose the recursive logical query dag (RLQDAG) which extends the LQDAG with the ability to capture and transform recursive queries, leveraging recent developments in recursive relational algebra. Specifically, this extension includes: (i) the ability of capturing and transforming sets of recursive relational terms thanks to (ii) annotated equivalence nodes used for guiding transformations that are more complex in the presence of recursion; and (iii) RLQDAG rewrite rules that transform sets of subterms in a grouped manner, instead of transforming individual terms in a sequential manner; and that (iv) incrementally update the necessary annotations. Core concepts of the RLQDAG are formalized using a syntax and formal semantics with a particular focus on subterm sharing and recursion. The result is a clean generalization of the LQDAG transformation-based approach, enabling more efficient explorations of plan spaces for recursive queries. An implementation of the proposed approach shows significant performance gains compared to the state-of-the-art.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。