本文由下面官方博文综合整理而成,较原文编排有所改动:- https://cloudberry.apache.org/blog/announce-apache-cloudberry-2.0.0/- https://cloudberry.apache.org/blog/whats-new-in-apache-cloudberry-2.0.0/
Apache Cloudberry (Incubating) 社区高兴地宣布 Apache Cloudberry (Incubating) 2.0.0 版本正式发布!这是该项目自 2024 年 10 月加入 Apache 软件基金会孵化器以来的首个正式版本。Apache Cloudberry 作为一款开源大规模并行处理(MPP)数据库,衍生自 PostgreSQL 和 Greenplum Database 的最后一个开源版本,支持本地和云上部署,为数据仓库和高级分析提供可扩展的基础。
我们要感谢为此版本发布做出努力的所有贡献者、导师以及 Apache 孵化器社区的宝贵支持。这一里程碑表明了 Apache Cloudberry 社区为满足 ASF 发布要求并将 Cloudberry 打造成一个开放和社区驱动的项目而做出的努力取得关键进展!
功能变更
Cloudberry 2.0.0 包含了 1981 个变更提交,在查询处理、存储引擎、安全性和资源管理等方面都有显著改进。由于变更内容较多,在本模块我们做了筛选,仅重点介绍部分新功能、功能增强与问题修复,以帮助大家快速了解关键改进。
- 查询处理增强:改进增强优化器和执行器,显著提升查询处理能力。新增动态索引扫描、位图扫描优化和更高效的连接策略。
- 存储引擎优化:改进 AO/CO 表的存储效率,增强 BRIN 索引功能,并优化 VACUUM 操作。
- 安全性能提升:在 pgcrypto 中增加了 FIPS 模式支持,改进了权限管理,并加强了整个数据库系统的安全控制。
- 资源管理优化:增强的监控能力和更完善的资源组管理。系统现在能更好地控制 CPU、内存和 I/O 资源。
查询处理和优化
索引和扫描
增强的仅索引扫描能力
- 在使用 GPORCA 优化器时,支持更广泛的索引类型进行仅索引扫描,包括使用 INCLUDE 列的覆盖索引,这有助于提高查询性能。
- 在使用 GPORCA 优化器时支持动态仅索引扫描,以加速分区表上的查询。此功能结合分区裁剪和仅索引访问来避免堆查找,显著减少 I/O 并提高性能。它特别适合具有窄覆盖索引的宽表,可以通过 SET optimizer_enable_dynamicindexonlyscan = on 启用。
- 在使用 GPORCA 优化器时支持在追加优化(AO)表和 PAX 表上进行仅索引扫描,通过尽可能避免块访问来实现更快的查询执行。这提高了在传统索引扫描效率低下的场景中的性能。
改进的索引扫描性能和灵活性
- 在使用 GPORCA 优化器时支持倒序索引扫描,用于带有 ORDER BY ... DESC 的查询,当存在相反顺序的 B-tree 索引时消除显式排序的需要。此优化减少了资源使用并提高了性能,特别是对于 top-N 和分页查询。
- GPORCA 优化器支持使用数组比较谓词(如 col IN (...) 或 col = ANY(array))触发位图索引扫描,包括哈希索引。这通过启用更高效的多值匹配来提高大数据集上的查询性能。优化器根据成本估算自动选择位图扫描路径。
- GPORCA 优化器现在在计算仅索引扫描成本时考虑 INCLUDE 列的宽度,优先选择返回较少未使用列的较窄索引。这改进了在多个覆盖索引可用时的计划选择。成本模型还通过改进 relallvisible 在仅索引扫描成本计算中的使用来更准确地估算 I/O。
BRIN 索引增强
- 为 AO/CO 表重新设计 BRIN 索引内部结构,用更高效的链式模型替换 UPPER 页面结构。这显著减少了空索引的磁盘空间使用,并通过避免不必要的页面访问来提高性能。新设计更好地处理 AO/CO 表的独特布局,同时保持正确性和兼容性。
- AO/CO 表上的 BRIN 索引现在支持使用 brin_summarize_range() 汇总特定的逻辑堆块范围,在索引维护和测试期间实现更精确的控制。此增强还增加了对涉及中止行的场景的改进覆盖,提高了边缘情况下的健壮性和正确性。
- 支持在使用 GPORCA 优化器时使用 ScalarArrayOp 限定符(例如 col = ANY(array))为 B-tree 索引生成 IndexScan 计划。此增强使 ORCA 与规划器的行为保持一致,并允许更高效地执行数组比较查询,只要谓词列是多列索引中的第一个键。
视图和物化视图
- 通过避免完整查询执行来提高 REFRESH MATERIALIZED VIEW WITH NO DATA 的性能。该命令现在表现得像 TRUNCATE,显著减少执行时间,同时保持对 Segment 的正确分发。
连接
- 在使用 GPORCA 优化器时支持左连接剪枝,允许在查询优化期间消除不必要的左连接。这适用于查询仅使用外表列且连接条件完全覆盖内表的唯一键或主键的情况。这可以带来更高效的查询计划。
- 在使用 GPORCA 优化器时支持使用 Hash Full Join 策略进行 FULL JOIN。这种方法避免了连接键的排序并减少了数据重分布,使其适合大数据集或非对齐分布键上的连接。所有 FULL JOIN 查询现在都使用 Hash Full Join。
- GPORCA 优化器现在在使用左或右外连接进行多路自连接时,当连接键对称时避免不必要的数据重分布。此优化通过识别此类连接保持数据共置来改进性能,消除了冗余的运动操作。
- GPORCA 优化器不再对 NOT IN 查询(左反半连接)的广播计划进行惩罚,无论 optimizer_penalize_broadcast_threshold 设置如何。此更改通过启用并行执行而不是将大表集中在 Coordinator 节点上来提高性能并避免潜在的 OOM 问题。
函数和聚合
- 在使用 GPORCA 优化器时支持中间聚合,使包含 DISTINCT 聚合和常规聚合的查询能够更高效地执行。这确保使用 AGGSPLIT 正确处理聚合阶段。此外,ORCA 通过使用带有限制的索引扫描而不是带常规聚合的全表扫描,为 MIN() 和 MAX() 函数引入了优化。此优化还支持索引列上的 IS NULL 和 IS NOT NULL 条件,显著提高了适用查询的性能。
- 在使用 GPORCA 优化器时,为包含 DISTINCT 聚合的查询启用更多 HashAggregate 计划替代方案。通过生成避免将 DISTINCT 函数放在基于哈希的节点中的两阶段聚合计划,ORCA 确保与执行器的兼容性并扩展了支持的查询计划范围。此改进增强了分组查询的优化选择。
- 支持使用 GROUP BY CUBE 的查询,在查询计划中启用多维分组集。这扩展了分析查询能力。请注意,由于生成的计划替代方案数量较多,CUBE 查询的优化时间可能较长。
预处理
- 内联包含外部引用的公共表表达式(CTE),允许成功规划和解释此类查询。以前,由于处理带外部引用的共享扫描的限制,这些查询会回退到遗留规划器。此更改提高了兼容性,并使 ORCA 能够优化更广泛的基于 CTE 的查询。
- 当内部子查询包含集合返回函数时,不再将 IN 查询重写为 EXISTS。这防止了以前可能导致执行错误的无效查询转换。此更改确保正确处理像 a IN (SELECT generate_series(1, a)) 这样的查询。
优化和性能增强
动态表
- 2.0.0 引入动态表,这是一项新功能,支持自动计划刷新查询结果。动态表类似于物化视图,但专为需要最新数据的方案而设计,例如实时分析、湖仓架构和自动化 ETL 管道。
- 支持从基表、外部表或物化视图创建动态表。用户可以使用标准 cron 表达式定义刷新间隔,确保数据保持最新状态,无需人工干预。更多详情,可参考官方文档。
计划提示
- 在使用 GPORCA 优化器时支持扫描类型和连接行估计的计划提示,使用户能够使用 pg_hint_plan 风格的注释来指导查询规划。支持的扫描提示包括 SeqScan、IndexScan、BitmapScan 及其否定,而行提示允许用户指定预期的连接基数。
- ORCA 优化器配置中现在需要 plan hint 字段。此更改简化了内部解析逻辑,并确保优化器配置文件的一致处理。
- 在使用 GPORCA 优化器时支持左和右外连接的连接顺序提示,将现有的提示框架扩展到内连接之外。此增强使用户能够在涉及外连接的复杂查询中更精确地指导优化器的连接顺序,改进计划控制并可能提高执行性能。
ORCA 增强
- 在使用 GPORCA 优化器时支持查询计划中的表别名,使 EXPLAIN 输出更具描述性并与用户定义的查询语法保持一致。此外,ORCA 添加了对查询参数的支持,包括在函数和预编译语句中使用的参数,实现与参数化工作负载和动态 SQL 执行的更好兼容性。
- 在使用 GPORCA 优化器时,支持为启用了行级安全性(RLS)的表生成查询计划。安全策略在计划生成期间强制执行,确保每个用户只能看到允许的行。对于带有子链接、外部表或 INSERT 和 UPDATE 语句的 RLS 查询,ORCA 仍然回退到规划器。
- 当 FROM 子句中的函数使用 WITH ORDINALITY 时,GPORCA 优化器现在优雅地回退到 Postgres 规划器,该功能目前不受支持。回退包括一个清晰的错误消息,指示不支持的功能。
- 在使用 GPORCA 优化器时,支持将带有 BETWEEN 谓词的过滤器与常量过滤器组合下推,实现更有效的谓词传播。此增强可以减少连接期间处理的行数,在适用情况下提高查询性能。
- 在使用 GPORCA 优化器时,当子查询表达式可哈希且不包含外部引用时,支持哈希子计划。此增强可以通过减少适用情况下的执行时间来显著提高查询性能。
- ORCA 现在支持在 Coordinator 或 Segment 上执行 mpp_execute='ANY' 的外部表,具体取决于成本。这允许为外部数据源提供更灵活和高效的执行计划。引入了一个新的"Universal"分布类型来支持此行为,类似于 generate_series() 的处理方式。
- ORCA 现在支持在查询包含 gp_segment_id 过滤器时对随机分布表进行直接分发。此增强通过将执行直接路由到相关 Segment 来提高查询性能,减少跨集群的不必要数据处理。
- ORCA 现在支持生成带有 ProjectSet 节点的计划,使包含目标列表中集合返回函数(SRF)的查询能够正确执行。此增强防止回退到遗留规划器,并确保与 PostgreSQL 11+ 行为的兼容性。
- ORCA 现在支持 FIELDSELECT 节点,这使其能够优化涉及复合数据类型的更广泛查询。以前,此类查询会回退到遗留规划器。此增强提高了兼容性并减少了不必要的规划器回退。
- ORCA 现在只为 UNION ALL 查询中使用的列派生统计信息,而不是输入表中的所有输出列。此优化减少了不必要的计算,并可以提高大型查询的规划性能。
- 更新日志和 EXPLAIN 输出中的命名,将优化器称为"GPORCA"和"基于 Postgres 的规划器",以提高清晰度和一致性。
- 通过仅为查询输出中使用的列派生统计信息来优化 ORCA 的 Union All 性能。这减少了不必要的计算,并提高了具有未使用列的查询的规划效率。
事务管理
锁管理
- 更新逻辑以在计算最旧的目录 Xmin 时忽略无效的槽,减少死锁风险并提高事务并发性。
- 对 AO/CO 表提前执行可序列化隔离检查,确保更严格的一致性保证并减少隔离冲突的可能性。
- 通过确保 Coordinator 在向 Segment 发送同步查询之前获取 pg_index 上的 AccessShareLock,增强索引创建过程以防止死锁,从而对齐 indcheckxmin 并避免 GDD 无法解决的冲突。
事务的性能和可靠性
- 避免在新扩展的 Segment 上重放检查点中的 DTX 信息,防止恢复期间可能出现的不一致。
- 添加 gp_stat_progress_dtx_recovery 以更好地观察分布式事务恢复进度。
- 改进 DTX 协议命令调度错误的错误报告,使其更容易诊断和解决问题。
- 允许 Coordinator 上的 utility 模式跳过 SELECT 锁定子句的锁升级,提高维护操作的效率。
存储
PAX 表格式
- Cloudberry 2.0.0 引入了对 PAX 存储格式的支持,这是一种结合了基于行和基于列的存储优势的混合存储方法。PAX 旨在为数据写入和分析查询提供高性能,使其非常适合 OLAP 工作负载和大规模数据分析。有关详细信息,请参阅官方文档。
AO/CO 表增强 - 通过添加扫描进度报告优化了 AO 表上的 CREATE INDEX 操作,提高了索引创建效率。
- 将连接相关变量声明为"volatile",确保在 PG_TRY 和 PG_CATCH 块之间正确处理,遵循 PostgreSQL 在事务控制中异常安全变量使用的最佳实践。
分区 - 扩展了 ORCA 的规划能力,支持外部分区,实现了对外部和非外部分区混合表的优化查询执行。该实现引入了新的外部分区逻辑和物理操作符,支持静态和动态分区消除,并与任何兼容的外部数据包装器集成,提高了外部数据查询的性能和灵活性。
- 优化了多级分区表中叶分区的分析,避免对中间分区进行不必要的重采样。
- 在使用 GPORCA 优化器时,支持涉及重复敏感随机运动的计划的动态分区消除(DPE)。这允许分区选择器通过 Segment 过滤器,实现更高效的查询计划并减少扫描的分区数量。
- 为哈希右连接添加了动态分区消除,提高了分区表上连接操作的效率。
- 在 ORCA 中支持布尔静态分区修剪,增强了查询优化期间分区修剪的效率。
- 通过在分区修剪期间加入分区键操作符族检查,增强了 ORCA 的查询规划,优化数据分布和分区扫描,确保通过将谓词操作符与分布或分区键的操作符族对齐来正确触发运动和分区扫描,解决了缺少运动、错误的直接调度和无效分区修剪的问题。
- 在 ExecFindPartition 中缓存最后找到的分区,提高了重复分区查找的性能。
- 使 ORCA 能够从叶分区派生动态表扫描基数,通过将其内部表示更改为双精度浮点数来解决处理日期和时间相关数据类型的限制。
- 增强了 DPv2 算法,在分区选择器中包含分布规范信息,提高了分布式查询执行的效率。
- 引入了一个新的非复制分布规范,以优化数据库处理中的连接操作。通过放宽当内表是通用分布时对外表的单例分布的要求,旨在减少不必要的数据收集和重复敏感运动,从而生成更高效的执行计划。
内存管理 - 实现自定义分配器,使 ORCA 能够使用标准 C++ 容器,解决堆分配管理问题。
- 通过使多个方法变为静态并添加断言来确保指针安全,重构了 ORCA 的内存池。
- 优化 ORCA 中 IMDId 对象的序列化,使其变为延迟序列化,通过推迟序列化直到必要时来提高性能。当将对象加载到 relcache 中以及涉及大型和宽分区表时,改进了优化时间。
- 确保 GetDatabasePath 返回的字符串始终使用 pfree 释放,防止内存泄漏。
- 为 pg_buffercache 启用 MPP(大规模并行处理)支持并默认构建它,使缓冲区缓存管理在分布式环境中更具可扩展性和效率。
- 引入 pg_buffercache_summary() 以提供缓冲区缓存活动的高级概览。
元数据和访问方法
- 允许为存储转换定义锁模式和 reloptions,提供对表和索引访问的更多控制。
- 支持在切换存储模型时指定 reloptions,允许在不同存储格式之间无缝转换。
- 在 CreateStmt 中引入新的结构成员,以指示语句的来源,指定它是否是从 GP 风格的经典分区语法生成的。
- 为 pg_attribute_encoding 和 pg_appendonly 添加 syscache 查找,提高元数据访问的性能和效率。
- 在 pg_aggregate 中引入新的目录条目,用于存储聚合的复制安全信息,允许用户通过 CREATE AGGREGATE 命令中的可选 repsafe 参数将特定聚合标记为在复制切片上执行是安全的。这有助于通过避免在大型复制数据集上进行不必要的广播来优化性能。
- 通过允许将 ALLOW_CONNECTIONS 和 IS_TEMPLATE 等选项分发到 Segment,增强 ALTER DATABASE 命令的分派,确保目录更改在所有地方都得到反映。
数据加载和外部表
外部表增强
- 在交换或附加外部表时添加了更清晰的限制和警告。可写外部表现在不能用作分区,并且在没有验证的情况下附加可读外部表现在会触发警告,而不是要求无操作子句。
- 禁用 ALTER EXTERNAL TABLE 的 SET DISTRIBUTED REPLICATED 以防止滥用并确保一致性。
Foreign data wrapper
- 改进了 gpfdist 外部表的性能和稳定性。添加了 TCP keepalive 支持以提高读取可靠性,并增加了默认缓冲区大小以增强可写外部表的写入吞吐量。
- ORCA 现在会回退到规划器来处理使用 greenplum_fdw 的外部分区查询,防止因不兼容的执行行为导致的崩溃。使用 greenplum_fdw 的非分区外部表查询仍然由 ORCA 支持。
高可用和高可靠
备份与灾难恢复
- 通过减少冗余目录扫描,改进了处理多个 .ready 文件时的归档器性能。这一更改加快了 WAL 归档速度,特别是在 archive_command 失败且累积了许多文件时。
- gp_create_restore_point() 只能在 Coordinator 节点上执行。在 Segment 节点上调用此函数将导致错误。该函数返回一个结构化记录值,包括恢复点名称和 LSN,您可以通过运行 SELECT * FROM gp_create_restore_point() 直接查看。
WAL - 通过将 Coordinator 特定的跟踪机制限制在仅 Coordinator 上,改进了 WAL 复制管理。这一更改简化了主 Segment 行为,并使复制实践在 Segment 之间更加一致。对用户没有功能更改,但有助于减少 WAL 保留逻辑中不必要的复杂性。
- 增强了 WAL 保留逻辑,以提高使用 pg_rewind 进行增量恢复的可靠性。物理复制槽现在保留 WAL 文件直到最后一个公共检查点,减少了恢复期间丢失 WAL 的风险。这一更改还简化了底层逻辑,并增加了 WAL 回收的测试覆盖。
- 将 WAL 复制连接切换到使用标准 libpq 协议而不是旧的内部协议。这提高了复制行为的兼容性和可靠性。还修复了测试失败并改进了复制连接的错误处理。
复制与无镜像集群
- 通过在复制槽失效时设置持久 WalSndError 改进了复制错误报告。这确保了 gp_stat_replication 中准确的错误可见性。
安全
数据库操作
- REFRESH MATERIALIZED VIEW CONCURRENTLY 在正确的安全上下文中运行所有内部操作,以防止潜在的权限提升。此更改通过将操作限制在适当的权限级别来确保更安全的执行。
- 通过将新的 aoseg 和 aocsseg 元组的元组冻结行为与其他目录操作对齐,改进了内部处理。此更改增强了与上游 PostgreSQL 实践的一致性,并消除了对 CatalogTupleFrozenInsert 的需求。
系统进程
- 孤立文件检查现在在安全验证期间排除空闲会话。这可以防止当服务的持久连接处于活动状态时出现不必要的错误,使检测过程能够成功完成。
- 在后端信号处理程序中添加安全检查,以确保信号由正确的进程处理。这可以防止子进程意外访问共享内存,并提高整体进程隔离和稳定性。
- 通过防止通过 system() 生成的子进程调用 proc_exit() 来提高进程安全性。这避免了共享内存结构的潜在损坏,并确保只有父进程执行清理操作。
- 当使用 gp_resource_manager='group-v2' 时,移除了对 cpu.pressure 的权限检查。这可以防止在禁用 PSI 的系统上启动失败,而不会影响资源管理功能。
权限管理
- 通过拒绝包含潜在不安全字符(如 $、' 或 \)的扩展模式或所有者替换来加强安全性。这可以防止扩展脚本中的 SQL 注入,并保护某些非捆绑扩展中的权限提升。
- 现在创建或分配角色到 system_group 资源组会导致错误,因为该组仅保留供内部系统进程使用。
- 恢复了对设置 gp_resource_group_bypass GUC 需要超级用户权限的限制。这允许像 GPCC 这样的应用程序更容易地运行,同时仍然限制资源影响。
- 现在不允许更改外部服务器或包装器的 mpp_execute 选项,以防止外部表分布策略的不一致。更改这些选项以前可能导致过时的缓存计划和错误的查询执行。此更新通过仅在适当时强制执行缓存失效来确保计划正确性。
pgcrypto
- 添加了对 pgcrypto 中 FIPS 模式的支持,由 GUC 控制。这允许 HashData Lightning 在链接支持的 FIPS 启用 OpenSSL 版本时在 FIPS 兼容环境中运行。某些密码在此模式下被禁用,以符合 FIPS 要求。
- pgcrypto 现在允许在操作系统或环境未预先启用 FIPS 的系统上启用 FIPS 模式。此更改消除了对 FIPS_mode() 检查的依赖,通过数据库提供更多管理 FIPS 合规性的灵活性。
资源管理
资源组管理
- 将 memory_limit 参数重命名为 memory_quota 在 CREATE/ALTER RESOURCE GROUP 中以澄清其含义和单位。
- 添加了一个新的系统视图 gp_toolkit.gp_resgroup_status_per_segment 以监控每个 Segment 上的资源组内存使用情况。此视图帮助数据库管理员在启用基于资源组的资源管理时跟踪实时 vmem 消耗(以 MB 为单位)。
- 当内存使用达到 Vmem 或资源组限制时,改进了日志记录行为。系统现在直接将日志消息打印到 stderr 以避免在分配失败期间出现堆栈溢出错误。
- 当使用 group-v2 资源管理器时,移除了对 cpu.pressure 的不必要权限检查。这可以防止在 PSI 未启用的系统上启动失败,从而提高跨 Linux 发行版的兼容性。
日志和监控
- 为 GDD 后端添加了额外的日志消息,以帮助调查内存相关问题。这些日志提供了更好的可见性,以了解在高内存使用场景下的后端行为。
- 添加了一个日志忽略规则,用于减少测试输出中的噪声。这有助于避免在涉及连接终止的测试中出现不必要的差异。
- 在 ResCheckSelfDeadlock() 中添加了更多详细的日志记录。
- 在资源队列日志中记录队列 ID 和门户 ID。
- 在释放资源队列锁时转储更多信息,以帮助排查和监控。
- 使用 ERROR 进行调度器活性检查。
- 改进了调度连接活性检查的日志记录,以提高连接失败期间的清晰度。日志现在包括更多基于套接字状态和系统错误的准确错误消息。
平台兼容性和构建
- 通过修复序列化逻辑中的类型处理,改进了 gp_sparse_vector 与 ARM 平台的兼容性。这确保了不同架构之间的一致行为。
- 在 Windows 上添加了对 sigaction() 的支持,以与其它平台对齐信号处理行为。这减少了平台特定的差异并提高了代码一致性。
- 在 ORCA 中更新了 ACL 模式类型,以与解析器的定义对齐,确保一致的类型使用。
系统视图和统计
- 改进了对具有常量加法或减法等保持 NDV 的投影列的连接基数估计。这允许优化器使用底层的列直方图进行更准确的估计,从而提高具有标量投影的连接条件的查询质量。
- 在处理元数据填充脚本(MDPs)时,提高了 ORCA 中频率和 NDV 值的精度。此更改确保了 MDP 和实时数据库查询之间的一致行为,减少了由于四舍五入小值而导致的差异。
- ORCA 现在在计算重分布运动时考虑空值偏斜,提高了涉及许多空值的查询的规划准确性。这有助于避免由于数据在 Segment 之间不均匀分布而导致的性能问题。
- ORCA 现在支持扩展统计,以提高具有相关列的查询的基数估计。这允许优化器使用实际数据驱动的相关因子,而不是依赖任意的 GUC 设置,从而提高查询计划的准确性。
- 引入 gp_log_backend_memory_contexts 以记录跨 Segment 的内容 ID 的内存上下文。这增强了可观测性并有助于诊断分布式查询中的内存问题。
- ORCA 现在支持涉及不同时间相关数据类型(如日期和时间戳)的谓词的统计推导。这提高了查询的准确性和性能,用于比较混合时间类型。
- Autostats 现在使用 SKIP LOCKED 进行 ANALYZE 操作,以避免在锁定时阻塞,减少死锁的风险并提高可预测性。此行为默认启用,可以通过 gp_autostats_lock_wait GUC 控制。
- ORCA 现在支持 STATS_EXT_NDISTINCT 扩展统计,用于估计相关列上的基数。这提高了使用 GROUP BY 或 DISTINCT 的查询的准确性。
网络连接
- 将 gp_reject_internal_tcp_connection 标记为过时,以提高内部 QD-到入口 DB 连接的可靠性。这些通过 TCP/IP 的连接现在默认被视为已认证,防止了由于 pg_hba.conf 设置导致的认证错误。
工具和实用程序
analyzedb
- analyzedb 现在在分析列表中包含的物化视图,进一步提高分析后的性能。
gpexpand
- gpexpand 新增集群健康检查,确保所有 Segment 在继续之前都处于稳定状态。这防止了错误的端口分配并避免了节点不稳定时扩展期间的潜在问题。
gp_toolkit
- 为 gp_toolkit 扩展添加了更新路径到版本 1.6。此更新将 memory_limit 列重命名为 memory_quota 在 gp_resgroup_config 视图中以提高清晰度。用户可以通过 ALTER EXTENSION gp_toolkit UPDATE TO '1.6' 应用更新。
致谢贡献者
在此,我们向为 Cloudberry 2.0.0 发布做出贡献的开发者们表示感谢:
@weinan003, @fanfuxiaoran, @gfphoenix78, @avamingli, @zhangwenchao-123, @reshke, @jiaqizho, @gongxun0928, @zhangyue-hashdata, @roseduan, @leborchuk, @foreyes, @edespino, @yihong0618, @tuhaihe, @MisterRaindrop, @HuSen8891, @songdongxiaoa2, @robozmey, @Mulily0513, @tenderwg, @chipitsine, @Tao-Ma, @x4m, @hyongtao-code, @yjhjstz
源码下载与安装
我们推荐从官网下载页面获取源码:https://cloudberry.apache.org/releases/,并按照文档进行编译安装:https://cloudberry.apache.org/docs/deployment/。
源码下载完成后,可参照官网提示对签名、SHA512 校验和进行检查,确保下载文件完整或未被修改。
升级或从 Greenplum 迁移到 Cloudberry
要从早期 Cloudberry 1.x 版本升级到 Cloudberry 2.0.0,推荐使用社区工具 cbcopy 从现有集群导出数据,并将其导入新部署的 2.0.0 集群。此导出导入方法可以确保数据一致性并支持干净的迁移到最新版本,可以查看文档了解使用方法。如果你计划从 Greenplum 迁移到 Cloudberry,也推荐使用 cbcopy。
后续我们也将推出 Cloudberry 2.0.0 系列博文,帮助大家进一步了解 Cloudberry 2.0.0 关键功能与背后故事。
推荐阅读
- 《Apache Cloudberry 2.0 前瞻:功能与改进速览》