盘点Greenplum 6.0六大新特性及展望
共 2771字,需浏览 6分钟
·
2022-01-23 14:39
导读:本文介绍Greenplum 6.0的新特性。
Greenplum 6.0于2019年9月4日正式发布,内核版本从PostgreSQL 8.3升级到PostgreSQL 9.4,数据库的功能和性能得到了巨大的提升,HTAP能力也得到了进一步加强。
除了内核版本升级,还增加了大量新特性,包括基于WAL日志的mirror同步、分布式死锁检测、复制表、在线扩容、磁盘限额、自动Master切换、Zstandard压缩、GP-GP集群间高效查询等。
01 Postgre SQL版本升级
Greenplum基于PostgreSQL 8.3(开发时的最新版本)已经有近10年的时间(PostgreSQL 8.3版本发布于2008年)。在此期间,PostgreSQL的演进速度是非常快的,尤其是在2015年之后,每年一个大版本的迭代更新,在性能和功能上都有重要的提升,各种特性层出不穷。
而这些特性却无法在Greenplum上直接体现,原因在于,Greenplum是在PostgreSQL 8.3内核的基础上修改代码实现的,而不是类似CitusDB等采取了插件的方式。
Greenplum这样设计的好处是,能够充分修改优化器、执行器、事务、存储等各个模块,达到最优的效果。坏处也很明显:与PostgreSQL社区长期脱节,无法充分利用社区红利。
基于上述原因,在Greenplum中升级PostgreSQL版本是一件非常痛苦的事。随着Greenplum的开源和越来越多PostgreSQL社区资深贡献者的参与,Greenplum终于在6.0版本中完成了PostgreSQL内核的升级。
升级PostgreSQL内核,让Greenplum实现了安全性、权限管理增强、JSONB、GIN索引、SP-GiST索引、并行Vacuum、CTE等用户比较期待的功能。
02 HTAP性能大幅提升
这里所说的性能提升主要是PostgreSQL升级带来的好处,PostgreSQL从8.3版到9.4版本积累了非常多的性能优化经验,在OLAP和OLTP方面都有成倍的提升。
特别是原来比较弱势的OLTP功能得到了大幅提升,单节点查询达到80000TPS(Transactions Per Second,数据库每秒处理事务数),插入操作达到18000TPS,更新操作约7000TPS(来自Greenplum官方测试数据)。
03 支持复制表
这是一个很实用的功能,可以用空间换时间。一个典型的应用场景就是维度表。这类数据表的特点是,数据量不大、很多查询/分析都会与此关联,导致这类表在查询时经常被分发到各个节点中去。而采用复制表功能就不需要进行数据的移动和交换了,减少了网络开销和CPU开销,显著提高了查询效率。
04 引入了在线扩容和一致性哈希
一致性哈希的引入,在一定程度上缓解了数据倾斜问题,更大的好处在于扩容更方便了。新版本的Greenplum在进行扩容时,无须停止数据库服务,扩容不影响正在执行的查询,扩容时只移动部分数据,扩容速度得到了大幅提升。
05 支持Zstandard压缩算法
Zstandard是Facebook开源的压缩算法,压缩效率高,在性能和压缩率之间取得了较好的平衡。
06 基于流复制的全新高可用机制
复制是PostgreSQL连续研发多年的功能,在高可用、备份、恢复(到时间点)等诸多场景中必不可少,提供了非常高的灵活度。
除了上述影响比较大的新特性之外,Greenplum 6.0还支持Kubernetes、磁盘配额管理、Master节点自动Fail-Over机制等新开发或者持续完善中的功能。
总结完Greenplum 6.0的新特性,我们对Greenplum 7.0充满了期待。Greenplum 7.0会将PostgreSQL升级到PostgreSQL 12,在查询优化器增强、向量执行引擎、多核性能提升等方面都会有较大的提升。
Greenplum 7.0最重要的特性就是向量执行引擎,这也是用户最期待的特性。向量化执行已经在ClickHouse和DorisDB中实现,展现了强大的性能优势。向量化执行可以提高CPU的利用率,提升Greenplum单个Segment实例的查询性能,对并发较低、低延迟要求高的查询场景有较明显的提升。
除此之外,多阶段聚合、支持复制多副本、支持Upsert(更新与插入的合并操作)等功能也将进一步增加Greenplum数据库的HTAP性能。
刷刷视频👇
干货直达👇