2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 分区管理器 (pg_partman) 4.2.0 发布

发布于 2019-08-23,作者:Crunchy Data
相关开源项目

Crunchy Data 荣幸地宣布发布 pg_partman 4.2.0,这是开源分区管理 PostgreSQL 扩展的最新版本。

pg_partman 4.2 为 PostgreSQL 12 增加了初步支持,并引入了对分区集中 UNLOGGED 表管理方式的重要更改。

pg_partman 是一个 PostgreSQL 扩展,可帮助您管理时间序列和基于序列的表分区集,包括自动分区创建和运行时维护。pg_partman 与 PostgreSQL 10 中引入的原生分区配合使用,用户可以从中受益于显著的性能提升。

您可以按照 README 中的说明 安装 pg_partman,或者使用您喜欢的包管理器。

主要变更

  • pg_partman 已增加对 PostgreSQL 12 的初步支持,在 PostgreSQL 12 发布后将停止支持 PostgreSQL 9.4。

  • 从 PostgreSQL 12 开始,pg_partman 将不再支持继承 OID,因为这种特殊的列行为已被移除。

  • 在原生分区中,分区集的 UNLOGGED 状态现在由模板表而不是父表管理。

目前在 PostgreSQL 中,将原生分区的父表设置为 UNLOGGED/LOGGED 并不是一个可以通过 ALTER TABLE 更改的属性。如果之后在父表上更改 UNLOGGED/LOGGED 的状态,也不会传递给新的子表。

如果您认为有子表受到影响,您将需要手动修复它们。如果您的任何原生分区集是 UNLOGGED,请务必在升级到此版本之前在模板表上设置此属性。

pg_partman 将维持此行为,直到 PostgreSQL 确定一种明确的 UNLOGGED 更改处理方式。更多信息,请参阅:https://postgresql.ac.cn/message-id/flat/15954-b61523bed4b110c4%40postgresql.org

  • 对于 PostgreSQL 11 及以上版本,在创建子表时,运行 ANALYZE 的维护后台工作进程的默认选项已更改为 false。如果您需要此功能,请在您的 postgresql.conf 中将选项 pg_partman_bgw.analyze 设置为 true。

新功能

  • part_config(_sub) 表中新增了配置选项 constraint_valid,用于控制 pg_partman 可以 管理 的额外约束是以 NOT VALID 状态添加,还是以 VALID 状态添加。默认情况下,约束会像以前一样以 VALID 状态添加。请注意,如果此配置更改为 false,在约束被验证之前,约束排除将不起作用。

修复

  • 修复了由于使用 pg_class.relhasoids 列导致 pg_partman 在 PostgreSQL 12 中无法创建子表的 bug。
  • 修复了应用于预先存在的模板表的主键/唯一索引未应用于 PostgreSQL 11 原生分区中添加的默认分区的 bug。
  • 修复了导致基于时间的按时间保留策略管理的错误的 bug。如果保留策略尝试删除最后一个子表,维护操作将因缺少表而报错,而不是仅发出尝试删除最后一个表的警告。
  • 当使用 create_parent() 时,如果分区列的数据类型为 numeric,将正确地抛出错误。以前,它不会报告任何错误,也不会将正确的数据添加到 part_config 表中,导致未来的维护操作无法正常工作。

链接

Crunchy Data 很自豪能够支持 pg_partman 的开发和维护。