获得技术资料内容,请访问Greenplum中文社区网站
Greenplum是世界领先的开源MPP数据库,Greenplum 6的混合负载HTAP性能有了大幅度的提升(详情参看之前的博文: Greenplum 6 OLTP (TPC-B) 性能提升60倍),已经可以满足大部分OLTP应用场景。这个过程非一日之功,也涉及到系统的各个层面的优化和重构,本文手把手的示范如何分析发现瓶颈,以及如何优化内核提升性能,揭秘MPP数据库内核调优,鼓励欢迎更多人在社区里参与这类工作。
环境设置
本文的例子采用分支6.0.0-beta.1。测试环境是GCP的机器,32 vCPUs, 28.8 GB, 512 SSD persistent disk。操作系统是Ubuntu 18.04.2 LTS。
发现和分析问题
- 确定目标
进行优化之前,先得有一个目标,我们希望提升什么?本文希望优化单条简单select的并发吞吐量。这个目标是OLTP场景,而Greenplum 6的Postgres内核版本号是9.4,因此我们可以跟Postgres9.4进行pk。用pgbench可以跑一些并发的负载,最简单的就是纯select的并发,通过测试我们发现和Postgres有一定差距,接下来的任务就是如何去优化。
- CPU和IO资源初步观察
先在这个版本的代码上用pgbench跑select-only的测试,同时用htop检测系统负载。这一步可以快速发现一些初步线索(如IO繁重还是CPU空闲)。
进行性能测试的时候,编译选项要尽可能优化,比如去掉cassert,开O3优化等,本文的编译参数是:
./configure --prefix=/home/gpadmin/workspace/local/gpdb --with-perl --with-python --with-libxml --disable-cassert --enable-debug --enable-depend --disable-gpcloud --without-zstd --disable-orca
一开始先快速用demo