熟悉Greenplum的小伙伴都知道,Greenplum是一款分布式数据库。MPP架构相较于传统的SMP架构更能快速响应分析型应用的需求。利用MPP架构的优势,Greenplum可以处理海量数据。2021数据库大咖讲坛第6期《数据库性能优化技巧与最佳实践》活动中,来自Greenplum中文社区的阿福(苑泽福)发表演讲《Greenplum数据库优化技巧与实践》。下面让我们通过本篇文章回顾一下精华内容。
”
本篇内容主要包括三个部分,从架构入手,延伸到Greenplum的功能特点,针对不同的功能特点提出针对性优化思路,并结合案例帮助大家快速了解Greenplum性能提升的窍门。
Greenplum架构解析
Greenplum重点功能
Greenplum优化要点
一、
Greenplum架构解析
从系统架构说起
主流的系统架构主要有三类:对称多处理结构(SMP),非一致存储访问结构(NUMA)和海量并行处理架构(MPP)。其对应的特点与不足分别如下:
SMP:
较为典型的包括Oracle、MySQL等
特点:
存储,包括CPU、内存和IO都是共享的。在一台机器就能支撑起整个网站的Web时代,SMP架构是非常流行的,足以支撑前端业务。
不足:
扩展能力有限。随着业务的扩大,数据量的增长,在业务场景上就有了很大的限制。
NUMA
特点:
拥有多个CPU模块,每个模块由多个CPU组成,有独立的本地内存;节点之间通过互联模块进行连接和信息交互,较好解决SMP系统的扩展问题。
不足:
互联模块访问效率和本地内存访问不在一个效率层级,系统性能无法随着CPU数线性增加。
MPP
这个是我们今天要讲解的重点,也是Greenplum的架构。
特点:
MPP是采用SMP组成的多个服务器,多个服务器共同完成任务。在硬件使用上可以发挥SMP架构的优势,多节点并行处理时,内存、CPU、网络、IO、磁盘均不共享,即Share-Nothing架构,每个节点只访问本地内存和存储,节点信息交互和节点本身是并行处理的。所有数据节点角色一样,可以提升并行计算能力。
不足:
MPP架构也存在一些不足,如果多台服务器在进行并行处理时,如果有一台服务器出现部分性能下降,会影响到整个MPP集群的性能,即木桶的短板效应。MPP架构集群规模不能过大,不能像Hadoop那样,几千个集群同时运行某个查询逻辑。此外,并发度不能过高。MPP架构正常情况下都是进行两阶段事务提交的,需要有一个事务汇总和底层事务查询的过程,如果并发过高,资源损耗会过大,会影响到整体系统的响应。
不同的系统架构有其擅长的应用场景,很难说某个架构更好,在其擅长的应用场景下,都可以发挥其优势。