主要观点:介绍 PostgreSQL 17 候选版本中关于分区表的新功能,包括合并分区(MERGE PARTITIONS)和拆分分区(SPLIT PARTITIONS),以及相关的操作命令和注意事项,还探讨了替代方法和资源。
关键信息:
- 2024 年 9 月更新,拆分和合并分区功能从 PostgreSQL 17 中撤回。
- 17 版本前分区管理工作流有限,17 版本后可对现有分区进行拆分和合并操作。
- 新的 DDL 命令为
MERGE PARTITIONS
和SPLIT PARTITIONS
,可通过推文链接到 PostgreSQL git 提交。 - 以多租户应用为例演示合并分区操作,通过创建表和插入数据展示合并过程。
- 以“events”表为例演示拆分分区操作,使用
RANGE
分区类型将每周分区拆分为每日分区。 - 拆分分区操作需要对父表加锁,可通过 detach、split、reattach 的方式避免长时间锁,即先 detach 分区,在临时“fake 父表”上拆分,再 reattach 到原父表。
- 简单创建新分区移动数据行可能会遇到重叠限制,
SPLIT PARTITION
在这种情况下较必要,也可通过 detach 重叠分区来解决。
重要细节: - 表分区相关术语,如“children”指分区表的分区,“fake 父表”用于避免拆分分区时的长时间锁。
- 演示合并分区和拆分分区的 SQL 代码及示例数据,如创建表、插入数据、拆分分区的命令等。
- 提到的相关资源和感谢对象,如 Nori Shinoda、Daniel Westermann、Creston Jamison 等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。