云原生数据仓库PostgreSQL 6.0版是基于开源 Greenplum 6.0 内核构建,基于PostgreSQL 9.4内核。6.0版大幅提升并发事务处理能力,更好的满足实时数仓场景;通过事务锁等优化,完备支持HTAP业务。

详细新特性如下:

说明 当前控制台尚未支持从4.3到6.0 的大版本自动升级,如果需要从4.3版本实例升级到6.0版本,请提交工单申请。

内核演进

Greenplum 内核从 4.3 升级到 6.0 版本,PostgreSQL内核从 8.2版本升级到 9.4版本,新特性包括:

  • JSONB类型:在既有JSON类型上,支持JSONB存储格式,实现高性能的JSON数据处理及更丰富的JSON函数。
  • UUID类型:支持 UUID 数据类型
  • GIN索引和SP-GiST索引:可以更高性能支持模糊匹配,以及中文检索。
  • 细粒度权限控制:支持了 schema 级别,以及 column 列级别权限控制和授权。
  • 高效Vacuum:Vacuum在做空间释放时,可以暂时跳过被加锁的页面,而稍后再次轮询访问对其Vacuum,从而整体减少被阻塞的状况。
  • DBLink:支持跨库的查询访问。
  • Recursive CTE:实现SQL的递归查询功能,用于处理逻辑上为层次化或树状结构的数据,方便对该类数据进行多级递归查询。
  • PL/SQL 增强:支持RETURN QUERY EXECUTE语句,可以动态即刻执行SQL;支持 Anonymous blocks 匿名块定义。
  • Multi-Master特性:支持通过水平扩展协调节点(Master Node)来突破原架构单Master的限制,在计算节点不存在瓶颈的情况下,系统连接数及读写能力可以随着Master节点数增加实现线性扩展,从而进一步提升系统整体能力。

混合事务和分析处理 HTAP能力提升

引入全局死锁检查机制 (global deadlock detection),动态的收集和分析锁的信息来检查和解除全局死锁。基于此,HEAP表的更新修改操作可以只借助细粒度行锁完成,支持大并发的更改删除查询,提高整个系统的并发度和吞吐量。同时还对事务锁进行了优化,减少了开始事务和结束事务时的锁竞争,在既有高性能 OLAP分析基础上,也可以提供高吞吐交易事务处理。

单Master情况下:

  • 典型 OLTP 场景 TPC-C 达到 10万 tpmC
  • TPC-B 支持 SELECT 15万 TPS
  • TPC-B 支持 INSERT 5万 TPS
  • TPC-B 支持 UPDATE 2万 TPS

多Master场景下,当计算组不成为瓶颈时,TPC-C、TPC-B性能可以随着Master数量增加线性扩展。

说明 本文的TPC的实现基于官方TPC的基准测试,并不能与已发布的TPC基准测试结果相比较,本文中的测试并不符合TPC基准测试的所有要求。

OLAP 新功能特性

  • 支持复制表(replicated table):针对数仓中的维度表,通过建立复制表(DISTRIBUTED REPLICATED clause),可以大量减少数据传输,提升查询效率。
  • 支持zstandard压缩算法:ZSTD压缩算法,较之前 zlib 压缩算法,提升三倍的压缩和解压性能。