Page 220 - 《软件学报》2021年第10期
P. 220

3192                                 Journal of Software  软件学报 Vol.32, No.10, October 2021

                    另外,他们还提出了两种基于 COD 框架的缓存策略,即 Conform-COD 和 Scramble-COD.
                    2007 年,Christian [63] 指出:数据库引擎在对表进行扫描时,通常都是由存储引擎从第 1 个页面(first page)一直
                 读取到最后一个页面(last page),因而导致 buffer 的利用率低下.为此,Christian 提出了一种协作扫描的方案,该方
                 案将具有相同扫描算子的查询整合到一起,设为一个扫描组,扫描组的实例如图 12 所示.第 1 个扫描算子称为
                 leader,从起始 page 开始扫描;之后的扫描称为 trailer,从当前 buffer pool 中读取 page,并记录 page 的位置,当扫描
                 算子再次读到标记位置时,扫描即结束.Christian 等人在 DB2 上实现了该方案,buffer 的效率显著提升.随着计算
                 机内存带宽的提升,越来越多的数据页可以缓存在内存中,从而使得该方案的应用场景逐渐减少,除非连续的查
                 询相似性非常高,否则,该方案几乎没有优势.图 12 显示了一个工作组的实例.














                                               Fig.12    An example of scan group
                                                     图 12   扫描组实例

                    2008 年,Qiao 等人 [64] 指出:内存带宽增长速度无法与 CPU 性能的增长相匹配,而渐渐取代了磁盘 I/O,成为
                 查询处理的瓶颈.他们提供了一个新颖的方案来提高查询的吞吐量,该方案允许所有并发查询在执行基表 I/O
                 时共享 CPU 内核缓存,即将查询计划分为多个批次,每个批次聚集表(用于聚集操作的 hash 表)的工作集被写入
                 CPU 缓存中,已达到共享该批次操作的目的.Qiao 通过实验提出数据的选择性、工作集大小是制约该方案的重
                 要因素.为了避免“快查询”和“慢查询”被分入同一批次而导致系统延迟,以及工作集较大使得 CPU 缓存溢出等
                 问题,该方案提供了一种有效估计选择性和工作集大小的采样技术.实验结果表明:在 8 核平台上,该方案在选择
                 性波动较小的工作负载中的吞吐量,相比同等条件下的主流商用数据库要高出 2~2.5 倍.

                 4.2   多查询执行模块之间的调度
                    2005 年,Stavros [20] 提出了协调 OMP 执行模式的策略,并实现了 OMP 协调器.一旦 OMP 协调器将一个或多
                 个卫星数据包附加到主机数据包上,参与的查询之间便会形成“1 个生产者,N 个消费者”的关系.QPipe 的中间缓
                 冲区可调节数据流.如果任何一个消费者的速度都比生产者慢,则所有查询最终都会将其消费速度调整为最慢
                 的消费者的速度.Stavros 等人在后续的工作中还研究了:(1) QPipe 如何应对频繁到达或离开的卫星扫描的负担
                 问题;(2) OMP 协调器如何利用顺序敏感的重叠扫描问题;(3) QPipe 如何防止死锁的问题;(4) QPipe 如何处理锁
                 定请求和更新语句等问题.
                    2009 年,Candea 等人设计了 CJoin 查询流水线模型       [22] ,每一个 filter 和 Aggr Operator 都类似于一个-engine.
                 他们在文献[22]中指出其面临以下优化问题:给定一个工作负载 Q 和一个 Q 的 CJOIN 管道,确定筛选器的排序,
                 以使每个事实元组的探测预期数量最小.一个复杂的因素是,每个过滤器的选择性取决于工作负载 Q,因为过滤
                 器会在特定的维表上对多个查询的连接谓词进行编码.因此,如果工作负载是不可预测的(如数据仓库中的临时
                 分析查询),则最佳顺序可能会随着查询组合的变化而变化.通过观察该结果,Candea 等人提出了一种在线方法,
                 用于优化 CJOIN 管道中的过滤器顺序.这个想法是在运行时监视每个过滤器的选择性,然后根据收集的统计信
                 息优化顺序.监视和重新优化的连续过程可以在 Pipeline Manager 线程内部异步执行.
                    2018 年,Jonathan 为流分析查询系统专门设计了作业调度模式              [40] ,一旦查询优化器生成了全局查询计划,作
                 业调度器将广域网络带宽作为重要属性并对该查询计划进行部署.调度程序将根据其上游顶点的部署,以拓扑
   215   216   217   218   219   220   221   222   223   224   225