休伯特·‘depesz’·卢巴切夫斯基:等待 PostgreSQL 19 – 实现 ALTER TABLE … MERGE/SPLIT PARTITIONS … 命令
💡
原文英文,约1400词,阅读约需5分钟。
📝
内容提要
2025年12月14日,亚历山大·科罗特科夫提交了ALTER TABLE ... MERGE PARTITIONS ...和ALTER TABLE ... SPLIT PARTITION ...两个DDL命令补丁。这些命令用于合并和拆分分区,但在高负载下不建议用于大型分区表,尽管为未来改进奠定了基础。
🎯
关键要点
- 2025年12月14日,亚历山大·科罗特科夫提交了ALTER TABLE ... MERGE PARTITIONS ...和ALTER TABLE ... SPLIT PARTITION ...两个DDL命令补丁。
- ALTER TABLE ... MERGE PARTITIONS ...命令用于将多个分区合并为一个目标表的单个分区。
- 该命令的实现较为简单,使用单进程并在所有操作期间对父表保持ACCESS EXCLUSIVE LOCK,因此不建议在高负载下对大型分区表使用。
- ALTER TABLE ... SPLIT PARTITION ...命令用于将单个分区拆分为多个分区,具有类似的实现限制。
- 这两个命令的实现虽然简单,但在某些情况下仍然有用,并且为未来的改进奠定了基础。
- 在Pg17开发周期中,这些命令曾被回滚,但现在重新引入。
- 测试表的创建和分区操作均成功,验证了命令的有效性。
- 在插入大量数据时,锁定情况有所改善,表明该补丁是一个有价值的附加功能。
❓
延伸问答
ALTER TABLE ... MERGE PARTITIONS ... 命令的主要功能是什么?
该命令用于将多个分区合并为目标表的单个分区。
在高负载下使用这些新命令有什么风险?
在高负载下不建议对大型分区表使用这些命令,因为它们会在操作期间对父表保持ACCESS EXCLUSIVE LOCK。
ALTER TABLE ... SPLIT PARTITION ... 命令的作用是什么?
该命令用于将单个分区拆分为多个分区。
这两个命令的实现有什么限制?
这两个命令的实现较为简单,使用单进程并在所有操作期间对父表保持ACCESS EXCLUSIVE LOCK。
这些命令的重新引入有什么背景?
这些命令在Pg17开发周期中曾被回滚,但现在重新引入,表明开发团队对其进行了改进。
测试表的创建和分区操作的结果如何?
测试表的创建和分区操作均成功,验证了命令的有效性。
➡️