查询引擎中基于Push和Pull的循环融合
Push vs. Pull-Based Loop Fusion in Query Engines
摘要:
数据库查询引擎使用基于拉或基于推的方法来避免跨查询操作符的数据物化。在本文中,我们深入研究了这两种类型的查询引擎,并提出了各自的局限性和优势。类似地,程序设计语言社区已经开发了循环融合技术,以在集合编程的上下文中移除中间集合。我们画的DB和PL社区之间的平行展示流水线查询引擎和循环融合技术之间的连接。基于这种连接,我们提出了一种新型的拉式引擎,灵感来自循环融合技术,它结合了这两种方法的优点。然后,我们实验性地评估各种引擎,在查询编译的上下文中,第一次在一个公平的环境中,消除了传统上只用于其中一种方法的辅助优化的偏见影响。我们表明,对于现实的分析工作量,有没有相当大的优势,无论是形式的流水线查询引擎,而不是最近的研究表明。此外,通过使用微基准测试,我们表明,我们提出的引擎通过结合两者的优点,占主导地位的现有引擎。
英文摘要:
Database query engines use pull-based or push-based approaches to avoid the materialization of data across query operators. In this paper, we study these two types of query engines in depth and present the limitations and advantages of each engine. Similarly, the programming languages community has developed loop fusion techniques to remove intermediate collections in the context of collection programming. We draw parallels between the DB and PL communities by demonstrating the connection between pipelined query engines and loop fusion techniques. Based on this connection, we propose a new type of pull-based engine, inspired by a loop fusion technique, which combines the benefits of both approaches. Then we experimentally evaluate the various engines, in the context of query compilation, for the first time in a fair environment, eliminating the biasing impact of ancillary optimizations that have traditionally only been used with one of the approaches. We show that for realistic analytical workloads, there is no considerable advantage for either form of pipelined query engine, as opposed to what recent research suggests. Also, by using microbenchmarks we show that our proposed engine dominates the existing engines by combining the benefits of both.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。