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。请注意,如果此配置更改为 false,则在验证约束之前,约束排除将不起作用。

修复

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

链接

Crunchy Data 很荣幸支持 pg_partman 的开发和维护。