Hubert 'depesz' Lubaczewski:等待PostgreSQL 17——合并/拆分分区

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

Alexander Korotkov在2024年4月6日提交了两个新的DDL命令,分别实现了ALTER TABLE ... MERGE PARTITIONS ...和ALTER TABLE ... SPLIT PARTITION ...命令,用于合并和拆分表的分区。这些命令在单个进程中工作,并对父表持有ACCESS EXCLUSIVE LOCK。它们适用于一些情况,但不适用于负载较高的大型分区表。这些命令为未来实现提供了基础,具有较少的锁定和可能的并行性。目前,这些命令无法在基于哈希的分区上使用。

🎯

关键要点

  • 亚历山大·科罗特科夫在2024年4月6日提交了两个新的DDL命令:ALTER TABLE ... MERGE PARTITIONS ... 和 ALTER TABLE ... SPLIT PARTITION ...。
  • 这两个命令用于合并和拆分表的分区,适用于某些情况,但不适用于负载较高的大型分区表。
  • 这两个命令在单个进程中工作,并对父表持有ACCESS EXCLUSIVE LOCK。
  • 当前实现较为简单,未来可能会有更少锁定和并行处理的版本。
  • 这两个命令无法在基于哈希的分区上使用,只适用于列表或范围分区。
  • 示例展示了如何使用这些命令进行分区的拆分和合并。
  • 在进行分区操作时,锁定和操作持续时间是一个问题,尤其是在大型数据库中。
  • 如果未来能够实现并发版本,这将是一次革命性的改进。

延伸问答

ALTER TABLE ... MERGE PARTITIONS ... 命令的主要功能是什么?

该命令用于将多个分区合并为一个目标分区。

ALTER TABLE ... SPLIT PARTITION ... 命令有什么用途?

该命令用于将一个分区拆分为多个分区。

这两个新命令在高负载情况下的表现如何?

在高负载情况下,这两个命令不适合用于大型分区表,因为它们会持有ACCESS EXCLUSIVE LOCK,导致性能问题。

这些命令是否支持哈希分区?

不,这两个命令无法在基于哈希的分区上使用,只适用于列表或范围分区。

未来对这些命令的改进方向是什么?

未来可能会实现更少锁定和并行处理的版本,这将大大改善性能。

在进行分区操作时,锁定和操作持续时间有什么影响?

在大型数据库中,锁定和操作持续时间会导致所有对主表的访问被阻塞,从而影响性能。

➡️

继续阅读