当谈起Greenplum 7时,我们在谈什么?之组件篇

Greenplum 7基于PostgreSQL 12,带来性能大幅提升,如更新操作提升近200倍,插入操作提升3.8倍。Greenplum Command Center新增暂停、过滤和会话视图功能,便于资源管理和查询分析。GPSS组件强化与Prometheus集成,支持更多加载方式和预处理功能,优化资源管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bab46d03-bcf0-4bc1-8b38-2f1a6fb35ec8.jpg

ba1b0386-0970-46af-bdbf-8b6f89f2f75e.png 2022年年初,Greenplum 7版本将正式GA(具体时间请以官方信息为准)。今年,Greenplum中文社区将和墨天轮社区合作,邀请原厂专家,开展《Greenplum 7 新版本大剧透》系列直播。
第一场活动中,Greenplum原厂研发总监杨瑜介绍了Greenplum 7引入的多个激动人心的新特性和最新开发进展,包括各个组件和内核部分,让大家提前尝鲜。小编已经帮大家把精华内容整理成了文章供大家学习回顾,因为内容过长,内容将被分为“组件篇”和“内核篇”两个部分,内核篇将于下周通过公众号推送,欢迎关注。

Greenplum7预计于明年初发布。在于2年前发布Greenplum 6版本中,Greenplum在速度、稳定性、和功能上都做了很大的提升。Greenplum 6版本中,内核由Greenplum 5版本的8.4升级到了PostgreSQL 9.4,做了6个大版本的升级,有超过1百万行代码的更新。而Greenplum 7版本将基于PostgreSQL 12,同样也经过了5个大版本的升级,Greenplum正紧跟PostgreSQL的升级步伐。


57dbd4b6-2731-4788-8510-e4e959d1f361.png


除了内核,6版本中我们也引入了多个特性,例如复制表、物化视图、CTE的支持等。此外,针对短查询以及和大查询在一起的混合负载,Greenplum也做了大量的优化。


下图是一个5版本和6版本的对比测试结果。在5版本里,随着节点并发数的增加, Mixed TPS不会有明显的提升。在6版本里,有了近104倍的提升。当然,在7版本中,混合负载将得到更大的提升。


f2f8cc35-9dda-445a-ad99-8cf425f9c596.png


下图是6版本中,关于更新(UPDATE)操作的测试结果,相对于5版本也有接近200倍的提升。


aa0e263a-47cc-47d2-981c-3f7754af1d06.png


下图的插入(INSERT)操作测试中,6版本相对于5版本得到了3.8倍的提升。


f285a4ec-190c-4118-a905-12edcffeee88.png


下图是一个只读查询(SELECT)的测试结果显示,6版本相对于5版本提升了约2.5倍。


a39166ea-9958-457a-b962-5b6cfa171957.png


6版本中,资源管控和内核升级为性能提升带来了很大的红利。随着7版本中内核升级至PostgreSQL 12,我们相信也会给Greenplum的性能带来更大的提升。


18fd38c3-0af5-4263-8962-ca9e173db426.png

Greenplum Command Center

15da74fb-92ff-4afd-b274-7115bd378489.png


回顾完6版本中的相关内容,我们来聊一下,Greenplum商业版组件和内核server上我们都正在做或计划做哪些工作。



01


Pause


GPCC设计了众多非常贴心的功能。在正常情况下,GPCC的展示页面会展示所有当前执行的query。当执行的query非常多时,展示页面可能会不断刷新,执行query的展示结果在不断刷新。


如果用户想仔细查看页面中的信息细节时,会希望页面暂时刷新。此时,用户便可以点击“Pause Query Feed”按钮。一旦点击按钮,页面可以认为是处于一个相对静止的状态。此时,用户便可以浏览页面细节。一旦恢复,页面便可以继续执行query。


6c0e52d6-8d1d-41db-aad4-f362135069f8.png



02


Firter


除了Pause功能,GPCC还将提供一个过滤(filter)的功能。用户可以在高级搜索里指定 query,GPCC可以根据query的segment等多个信息进行过滤。当把鼠标放到Query ID上时,同时还会显示一个浮动窗口,更友好的展示Query的详细信息。用户在使用时将更加方便。


1199a3b4-0d87-47f9-8f66-27da009ffbfd.png


比如下面的例子中,用户可以根据查询提交起止时间进行过滤选择。例子中做的过滤显示了2020年11月24号这个时间窗口内提交的查询。除此之外,用户还可以指定其他过滤条件,比如数据库、用户、Query ID等。


18665e13-8438-488b-a86a-6a5a24b2107d.png



03


Session View


有时,会存在某些session很长时间闲置的情况。这种长时间闲置的会话会继续占用系统资源,包括连接数,进程资源、内存等。我们希望GPCC能够更加智能的管理这类session的生命周期。


针对这个需求,用户可以制定一个规则。通过Workload Manager,可以创建规则,规定GPCC在超过某个规定时间后,自动将session 关闭。创建规则后,后台可以进行检查,一旦发现query idle时间过长,闲置的情况,就会自动将资源回收。这样便不再需要人为的干预,自动进行资源的释放。


8d83a70a-cef1-48c1-aecd-20ce6586d45b.png


其中Query Tags是Workload Mgmt的功能,在Workload Mgmt中,可以在query上定义一个text,即一个标签。通过某个特定标签的过滤,用户可以选择展示标签对应的内容。


985102fb-6e12-449b-bf98-fc146306bdaf.png


下图的例子中,通过query tag搜索便可以找到key1=value1;key2=value2对应的query,并将query的实时的动态展示出来。


f7b63916-4f0c-47cd-bbed-80ff9783daac.png


除了这里详细描述的功能,GPCC后面还会设计更多更加智能的功能,例如分区键的自动辅助检查,以及分布键设置的不合适,导致的查询性能问题和数据倾斜。GPCC后续会通过对查询结果的分析,发现某些键值设置不当,会自动为用户做键值以及分区的推荐。


此外,还有一些用户提到在使用资源组时,在展示用户资源消耗时,例如CPU、内存、磁盘等,能否根据分组的方式来展示,让系统管理员看起来能够一目了然,更加便捷的了解每个资源组的资源消耗,使用量等情况。


18fd38c3-0af5-4263-8962-ca9e173db426.png

Greenplum GPSS 

15da74fb-92ff-4afd-b274-7115bd378489.png


我们再来看一下GPSS。GPSS组件主要可以帮助用户进行数据的加载(LOAD)和卸载(UNLOAD)。



01


和Prometheus的深度集成


GPSS在Greenplum 7里很重要的一个功能是,提供和Prometheus的深度集成。在GPSS里,我们会利用JOB把外部数据源导入到Greenplum里,或把Greenplum的数据卸载到外部数据中。


007863d0-0ef6-491d-8027-dc08d059e8ce.png


JOB的数量通常非常多,用户会想知道在执行query的时候各个JOB的状态,有没有挂掉,执行进度和已加载数据量,以及一些资源指标,例如加载中消耗的CPU,内存,磁盘占用等,这些都是可以通过Prometheus来展现。同时,可以通过脚本来进行控制异常触发时的行为,比如加载中如果出现JOB异常,可以发邮件给系统管理员。


757bfbbc-61bc-4811-9735-13be49d5a75e.png



02


对不同加载方式和数据格式的支持


数据加载可以配置不同的加载方式和数据格式,可以执行流式或者跑批的方式,也可以支持各种主流的数据格式。


757bfbbc-61bc-4811-9735-13be49d5a75e.png



03


共享Session


在之前的GPSS版本中,对每一次加载JOB,资源管理通常不够细致。每次加载JOB都会创建一个对GPDB的连接,如果表格较多,连接数就会非常大。Greenplum的连接数是有限的。对于Greenplum的集群来说,可能一边在做加载,同时需要跑一些定期的作业,不能因为加载影响Greenplum的作业运行。在新的版本的GPSS中,我们希望做到连接能够共享,用池化的方式来节省连接资源。


5a7d0e42-7a15-4165-85d9-d1240f688570.png



04


预处理


正在做的功能是希望在GPSS里做到更多的预处理。GPSS会利用staging Table在数据加载进来后,做一些深度清洗和预处理,或者是解码decoding,目标数据过滤等工作。GPSS会通过中间表的方式来预存一些中间数据,在中间做一些映射和过滤。不再需要用户先将数据加载到一个表里,再去写一个转换函数完成转换。


97802f22-bcc7-443f-8e58-b8fc0441cfa8.png



05


和其他维度表的连接


数据加载进来后,通常希望能跟其他维度表进行连接操作。了解GPLOAD的小伙伴可能知道,GPLOAD中没有这类操作,更多的是将数据直接加载到对应表里。在GPSS里,我们希望对数据进行拼接转换后,再加载到目标中,这样会使用户使用起来更加简单。


2bb878f2-6e5d-4b70-9ece-9679d4fb6aae.png


Greenplum的每个商业组件都在不断迭代,期望给用户带来更加优质的产品体验。文章的下半节,我们将为大家介绍Greenplum 7内核的功能更新,欢迎关注!



点击文末“ 阅读原文 ”,获取Greenplum中文资源。

d75d084d-f035-4044-9cb6-3c33d8bdcf34.gif

f49c70c3-ab12-4cf4-bf2c-f466c3adb3bf.png来一波 “在看”、“分享”和 “赞” 吧!


本文分享自微信公众号 - Greenplum中文社区(GreenplumCommunity)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

### Greenplum 数据库介绍 Greenplum 是一种专为大规模数据分析设计的关系型数据库管理系统。该系统通过在多个服务器或主机间分配数据和处理工作负载来实现高效的数据存储与处理能力[^2]。 作为一款基于 PostgreSQL 的产品,Greenplum 继承了许多来自 PostgreSQL 的特性,比如对多种编程接口的支持(如 JDBC、ODBC、C 和 Python API),这使得开发者能够轻松集成现有的应用程序和服务[^1]。此外,它还提供了广泛的 SQL 标准兼容性,涵盖了从 SQL92 到更现代的标准版本,并加入了 OLAP 扩展功能,使其成为支持 SQL 标准最全面的开源商用数据库之一。 #### MPP 架构特点 不同于传统的单节点数据库或是 Oracle RAC 这样的共享磁盘架构,Greenplum 采用了一种被称为 MPP (Massively Parallel Processing, 大规模并行处理) 的体系结构。这意味着整个数据库实际上是许多独立运行的服务组成的集群,在逻辑上表现为单一数据库实体。这样的设计允许 Greenplum 更好地应对海量数据集带来的挑战,同也提高了整体性能表现[^4]。 #### 主要组件及其作用 - **主服务器**:作为进入点接受外部请求并将任务分发给各个段; - **段实例**:负责实际的数据存储及计算任务执行; #### 关键技术优势 - 支持分布式事务管理,确保 ACID 属性得到满足,从而保障了数据的一致性和可靠性[^3]。 - 提供 gp_toolkit 工具包用于监控和诊断目的,帮助管理员获取有关系统健康状况的信息[^5]。 ```sql -- 查询gp_toolkit中的视图以查看当前会话信息 SELECT * FROM gp_toolkit.gp_session_stat; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值