返回
摘要
En 中文
数据库查询处理需要去除重复项、分组和聚合的算法。现有三种算法:流内聚合在效率上远胜于其他算法,但需要排序后的输入;基于排序的聚合依赖于外部归并排序;基于哈希的聚合依赖于内存中的哈希表,以及临时存储的哈希分区。基于成本的查询优化会根据多种因素选择使用哪种算法,包括输入的排序顺序、输入和输出的大小,以及是否需要排序后的输出。例如,基于哈希的聚合适用于输出小于可用内存的情况(例如TPC-H中的查询1),而当聚合的输入和输出都很大且输出需要为后续操作(如归并连接)排序时,对整个输入排序后再聚合则是更优的选择。
不幸的是,进行合理选择所需的尺寸信息在查询优化期间往往不准确或不可用,从而导致算法选择次优。为此,本文介绍了一种新的基于排序的去除重复项、分组和聚合算法。该新算法的性能始终不低于传统的基于哈希和传统的基于排序的算法。它可作为系统在处理未排序输入时的唯一聚合算法,从而避免错误的算法选择。此外,新算法产生的排序输出可以加速后续操作。Google的F1 Query在生产工作负载中使用该新算法,每天聚合数拍字节的数据。
期刊
暂无期刊信息
机构
暂无机构信息
引用论文
暂无论文信息

