如何在 PostgreSQL 中用散列重新分区 table?

How to re-partition table with hash in PostgreSQL?

我目前正在设计 table 并希望按 account_name 对其进行分区。 现在我正在考虑使用少量分区(例如 8 个),但由于我预计会有大量数据,所以我可能需要重新分区并创建更多分区。

最好的方法是什么?如果我理解正确,我不能只附加新分区,因为我需要更改以前使用的分区的模数。

我应该复制并重新插入所有数据还是有更简单的方法?

重新分区意味着完全重写 table,如

INSERT INTO new_tab SELECT * FROM old_tab;

这将导致长时间停机。解决此问题的一种方法是在备用端使用 new_tab 的逻辑复制(可能从 v13 开始)。

但我的建议是不要那样做。选择合理数量的分区并坚持下去。