面向大规模分布式列式数据库的查询优化器设计与实现
发布时间:2023-04-03 00:41
大数据时代,如何实现海量数据的快速存储和分析成为数据库领域研究的热点,具有良好性能的分布式数据库应运而生。传统的分布式数据库往往采用行式存储,计算效率和存储效率较低。分布式列式数据库将每张表的每个列切片后分开存储,此方式可充分利用分片数据的相似性进行高效地压缩和提取,在计算时也能有效地利用处理器的并行处理能力加快计算速度从而提升硬件资源的利用率。本文针对分布式列式数据库场景,设计并实现了一个面向联机分析处理(Online Analytical Processing,OLAP)的查询优化器,目的在于解决复杂查询场景下的查询优化问题,加速任务的执行,同时高效地利用硬件资源。本文的主要工作内容如下:1.研究对比行式数据库和列式数据库的查询优化器,设计分布式列式场景下的查询优化流程,完成从SQL语句解析到分布式执行计划分裂与调度过程的设计与实现;2.根据列式计算特性,设计并实现了一整套相应的算子,尤其在分组聚合等复杂语句的分布式调度和执行上,设计出基于列式场景下的针对性解决方案,提高算子之间的并行度,减少数据传输开销,实现查询结果的快速响应;3.考虑编译执行技术在算子执行时带来的性能提升,以及...
【文章页数】:97 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究工作的背景与意义
1.2 国内外研究历史与现状
1.3 本文的主要贡献与创新
1.4 本论文的结构安排
第二章 相关技术与典型系统
2.1 查询优化器相关技术及理论
2.1.1 PostgreSQL查询优化器
2.1.2 Cascades查询优化器
2.1.3 分布式数据库查询优化器
2.2 编译执行技术
2.3 分布式调度
2.3.1 问题模型
2.3.2 调度算法
2.4 本章小结
第三章 系统总体设计
3.1 需求分析及设计目标
3.2 分布式列式数据库整体架构设计
3.3 查询引擎的关键模块总体设计
3.3.1 行式计划生成
3.3.2 列式计划生成
3.3.3 列式计划分裂
3.3.4 编译执行
3.3.5 代价估算
3.3.6 任务调度
3.4 本章小结
第四章 详细设计与实现
4.1 算子实现
4.1.1 GetColumn算子
4.1.2 Join算子
4.1.3 PreGroupBy算子
4.1.4 GroupBy算子
4.1.5 Aggregate算子
4.1.6 PreOrderBy与 OrderBy算子
4.1.7 BuildRow算子
4.2 计划转换实现
4.2.1 Join树转换实现
4.2.2 分组聚合转换实现
4.2.3 排序算子转换实现
4.2.4 BuildRow算子转换实现
4.3 算子分裂实现
4.3.1 Join树分裂实现
4.3.2 分组聚合算子分裂实现
4.4 调度模块实现
4.5 本章小结
第五章 测试与分析
5.1 测试环境
5.1.1 硬件环境
5.1.2 系统部署
5.1.3 测试数据集
5.2 功能测试
5.2.1 单表扫描功能测试
5.2.2 谓词筛选功能测试
5.2.3 多表连接功能测试
5.2.4 分组聚合功能测试
5.2.5 排序功能测试
5.3 性能测试
5.3.1 单表扫描查询延迟测试
5.3.2 多表连接查询延迟测试
5.3.3 分组聚合查询延迟测试
5.3.4 排序查询延迟测试
5.3.5 复杂查询延迟测试
5.4 本章小结
第六章 总结与展望
致谢
参考文献
攻读硕士学位期间取得的成果
本文编号:3780294
【文章页数】:97 页
【学位级别】:硕士
【文章目录】:
摘要
abstract
第一章 绪论
1.1 研究工作的背景与意义
1.2 国内外研究历史与现状
1.3 本文的主要贡献与创新
1.4 本论文的结构安排
第二章 相关技术与典型系统
2.1 查询优化器相关技术及理论
2.1.1 PostgreSQL查询优化器
2.1.2 Cascades查询优化器
2.1.3 分布式数据库查询优化器
2.2 编译执行技术
2.3 分布式调度
2.3.1 问题模型
2.3.2 调度算法
2.4 本章小结
第三章 系统总体设计
3.1 需求分析及设计目标
3.2 分布式列式数据库整体架构设计
3.3 查询引擎的关键模块总体设计
3.3.1 行式计划生成
3.3.2 列式计划生成
3.3.3 列式计划分裂
3.3.4 编译执行
3.3.5 代价估算
3.3.6 任务调度
3.4 本章小结
第四章 详细设计与实现
4.1 算子实现
4.1.1 GetColumn算子
4.1.2 Join算子
4.1.3 PreGroupBy算子
4.1.4 GroupBy算子
4.1.5 Aggregate算子
4.1.6 PreOrderBy与 OrderBy算子
4.1.7 BuildRow算子
4.2 计划转换实现
4.2.1 Join树转换实现
4.2.2 分组聚合转换实现
4.2.3 排序算子转换实现
4.2.4 BuildRow算子转换实现
4.3 算子分裂实现
4.3.1 Join树分裂实现
4.3.2 分组聚合算子分裂实现
4.4 调度模块实现
4.5 本章小结
第五章 测试与分析
5.1 测试环境
5.1.1 硬件环境
5.1.2 系统部署
5.1.3 测试数据集
5.2 功能测试
5.2.1 单表扫描功能测试
5.2.2 谓词筛选功能测试
5.2.3 多表连接功能测试
5.2.4 分组聚合功能测试
5.2.5 排序功能测试
5.3 性能测试
5.3.1 单表扫描查询延迟测试
5.3.2 多表连接查询延迟测试
5.3.3 分组聚合查询延迟测试
5.3.4 排序查询延迟测试
5.3.5 复杂查询延迟测试
5.4 本章小结
第六章 总结与展望
致谢
参考文献
攻读硕士学位期间取得的成果
本文编号:3780294
本文链接:https://www.wllwen.com/kejilunwen/shengwushengchang/3780294.html
最近更新
教材专著