《CloudberryDB执行引擎的优化实践-0712-杨凯迪(最新).pdf》由会员分享,可在线阅读,更多相关《CloudberryDB执行引擎的优化实践-0712-杨凯迪(最新).pdf(22页珍藏版)》请在三个皮匠报告上搜索。
1、PostgreSQL中文社区第13届PostgreSQL中国技术大会聚焦云端创新汇聚智慧共享HashData 数据库工程师 杨凯迪CloudberryDB执行引擎的优化实践PostgreSQL中文社区并行化算子实现03未来的优化方向04向量化引擎介绍01PostgreSQL中文社区目录contentspush模型执行流改造0201向量化引擎介绍PostgreSQL中文社区PostgreSQL中文社区OLAP 性能优化 执行路径更少的指令数 指令级/数据级的并行 多核资源的利用PostgreSQL中文社区向量化优势运算的函数调用减少数据局部性好cache命中率更高编译器的代码优化利用SIMD指令
2、加速PostgreSQL中文社区CloudberryDB 向量化引擎插件形式接入 CBDB,列式存储引擎优化 OLAP 场景内部基于 Arrow 的数据格式,batch作为运算单元流通重新实现了 PostgreSQL 向量化算子,Scan、Agg、Sort,Motion等数据类型优化表示(numeric,string),结合底层存储优化查询性能表达式计算优化,执行逻辑利用simd加速,复杂表达式执行支持JITPostgreSQL中文社区向量化实现极大的降低整个查询的CPU消耗PostgreSQL中文社区问题查询分析场景下,多核资源没有占满?增加节点,会带来额外的进程数据同步代价向量化线程模型改
3、造无法避免数据倾斜,负载不均下性能和内存挑战02push模型执行流改造PostgreSQL中文社区PostgreSQL中文社区pull or pushpull 模型 控制流自顶向下 实现简单,控制灵活 内存占用较小 更多的分支跳转和函数调用开销PostgreSQL中文社区pull or pushpush 模型 控制流自底向上 数据驱动,code-gen友好 利于实现并行化 缓存友好,内存消耗相对增大 limit/sort merge join 实现较困难PostgreSQL中文社区pipeline算子聚合pipelinenodePostgreSQL中文社区pipeline算子划分:线程感知算子
4、Scan/MotionAggregate/Join(build)/Sort数据竞争,更少的同步代价?阻塞节点,更好的利用多核资源?03并行化算子实现PostgreSQL中文社区PostgreSQL中文社区并行化连接 Probe Build 减少数据竞争 两阶段构建哈希表 PartitionPostgreSQL中文社区并行化聚集 线程内聚集 线程间状态合并PostgreSQL中文社区并行化排序 线程内部排序 线程间合并有序数组 MergePath 算法适配资源PostgreSQL中文社区MergePath二分寻找线程任务划分并行化合并数组片段线程2线程3线程1xx+1yy+1pos_x+pos_y=6y x+1x y+104未来优化方向PostgreSQL中文社区PostgreSQL中文社区未来优化方向向量化执行计划的优化优化器对向量化算子的代价评估Dispatcher调度优化适配 pipeline push模型 完善基于状态机调度向量化查询可视化分析适配线程模型的任务监控PostgreSQL中文社区感谢聆听!