论文部分内容阅读
随着虚拟化和云化等技术的发展,计算存储分离架构应运而生,计算存储分离具有很好的扩展性和可管理性。计算存储分离之后,资源按需扩容,使得总体成本降低。同时云化大规模并行处理(MPP)数据库具备海量数据分析的能力,由于其OLAP操作会涉及大量的数据访问并且产生很多的中间结果,在存储计算分离的场景下,每次数据存取都需要访问对象存储,造成了很大的延迟,使得性能显著下降。 针对存储计算分离后云化MPP数据库OLAP操作延迟较大这一问题,本文设计并实现了一个以块为单位的面向存储计算分离的云化MPP数据库缓存系统,能够降低存储计算分离后OLAP操作的延迟,并且针对OLAP操作的特点进行了优化。本文的主要贡献有: (1)设计并实现了一个面向存储计算分离的云化MPP数据库缓存系统,缓存系统具备如下能力:支持随机读写、支持缓存系统进程之间高效的数据通信、对外提供透明且无限大的缓存空间、支持元数据持久化; (2)提出了公平性的基于时频的缓存置换算法,解决了多个应用之间缓存空间分配不公平的问题。基于缓存系统的注册机制,动态调整每个应用之间缓存窗口的大小,并且保障了各个应用之间缓存窗口大小分配的公平性。 (3)设计并实现了一个以块为单位的操作感知的缓存数据预取框架,解决了传统缓存系统中缓存命中率低,操作时延高的问题。根据OLAP操作中的顺序操作和特定随机操作进行了优化,对于Hash Join顺序操作提出了异步预读策略,采用了线程池技术预先把未来访问的数据块加载到本地缓存;对于Tape Sort这种特定随机访问操作,提出了“写入序列与读取序列一致”的结论,利用写入序列和读取序列的关系预测未来将要被访问的数据。 大量的实验表明,本文设计的缓存系统达到了设计要求,整体性能达到了不错的效果。在全部是本地的缓存的情况下延迟相比Alluxio降低50%;比不使用缓存时延迟降低69%-81%。缓存系统优化后相比优化前,Hash Join操作的缓存命中率平均提升47%,总的完成时间平均降低26%;Tape Sort操作的缓存命中率平均提升34%,总的完成时间平均降低25%。