我们的Postgres生产数据库中有一个大表,我们希望使用外部表和继承开始“分片”。
所需的体系结构将是有1个(空)表定义模式,以及几个从空的“父”表继承的外部表。(可在Postgres 9.5中使用)
我发现这篇写得很好的文章解释了如何从头做起的一切。
我的问题是如何将所需的数据迁移减少到最低限度。
我们现在有了这个100+GB的表,它应该会成为我们的第一个“碎片”。在未来,我们将定期添加新的“碎片”。在某个时刻,旧的碎片将被移动到另一个表空间(在更便宜的硬件上,因为它们变得不那么重要)。
我现在的问题是:
有没有办法将“现有的表”改为“外部表”呢?

最佳答案

无法使用alter table来执行此操作。
你真的需要手动操作。这与执行表分区没有什么不同(实际上)。创建分区,加载数据。直接读取和写入分区。
现在在你的例子中,关于切分,有很多工具我会考虑让这个不那么痛苦。首先,如果您首先确保表是按您喜欢的方式拆分的,那么可以使用逻辑复制解决方案(如Bucardo)来复制写操作,同时移动所有内容。
还有一些其他的方法(并行读写器)可以节省您一些时间,代价是db负载,但这些都是利基工具。
对于标准PostgreSQL的碎片管理,没有本机的解决方案(而且我对Postgres XL在这方面的了解还不够多,不知道它如何管理不断变化的碎片标准)。然而,只要一点工作和知识,几乎任何事情都是可能的。

10-06 14:17