【大数据之数据仓库】GreenPlum优化器对比测试

阿凡达2018-07-10 12:44
在《 【大数据之数据仓库】选型流水记》一文中有提及,当时没有测试GreenPlum的quicklz压缩算法和ORCA查询优化器,考虑到quicklz压缩算法因为版权问题不会开源(详情请参阅: https://github.com/greenplum-db/gpdb/blob/master/src/backend/catalog/quicklz_compression.c),今天我们就来补上已开源的ORCA查询优化器这一段。

GreenPlum有2个查询优化器:legacy query optimizer(简称LQO)和pivotal query optimizer(简称PQO),而后者就是传说中的ORCA,我把之前LQO和PQO的TPCH对比测试做了简要汇总,整理在本文,以飨各位同学。测试拓扑延续《【大数据之数据仓库】基准测试之TPCH》中的测试环境,选择了10GB和100GB两种规格的数据集,以达到测试纯内存、内存+磁盘这样两种场景。

10GB
10GB数据集的数据基本都在内存里,没有了磁盘IO开销:

100GB


两个测试结果显示,PQO并没有比LQO占明显优势啊, 为什么?
这里有一篇关于PQO的历史: https://www.pivotalguru.com/?p=971,简单来说就是:LQO源自postgreSQL的查询优化器,并对其进行了分布式改造,而PQO是对LQO的重构,增强了性能和可维护性。可是,还是回答不了前面的问题......
又翻到一篇关于GreenPlum 4.3版本发布信息的博文: https://www.pivotalguru.com/?p=614,我把其中比较重要部分截图出来如下:
这里有对PQO(ORCA)做了比较具体的描述:1.优化了某些边缘用例;2.优化了某些带分区表、子查询等特殊场景的性能。
看到这里,顿悟了一下,我正在做的TPCH测试,属于Ad-Hoc类型,才22个用例,相对于TPCDS决策支持类型来讲属于比较比较常用和常见的,而且对数据集中的事实表,我也确实没有分区(想知道原因可以留言)......哦哦哦,难怪没有优势=_____=
那,如果换用TPCDS来对比测试,PQO会不会有优势呢?我想这篇HAWQ测试可以告诉我们一些答案: https://www.pivotalguru.com/?p=1045

本文来自网易实践者社区,经作者何李夫授权发布。