问题描述
所以基本上我们在 Postgres 11 DB 中有一个非常大的表,自从添加该表以来,它有数亿条数据。现在我们正在尝试将其转换为基于 created_at
列(时间戳 - 不可为空)的基于范围的分区表。
正如 Postgres Partitioning Documentation 中所建议的,在实际运行附加分区之前,我尝试在同一个表上添加检查约束。所以在那之后,如果我运行附加分区,理想情况下它应该花费更少的时间,因为它应该由于表上存在各自的约束而跳过验证,但我看到它仍然需要更多的时间。我的分区范围和约束看起来像这样:
alter table xyz_2020 add constraint temp_check check (created_at >= '2020-01-01 00:00:00' and created_at < '2021-01-01 00:00:00');
ALTER TABLE xyz ATTACH PARTITION xyz_2020 FOR VALUES FROM ('2020-01-01 00:00:00') TO ('2021-01-01 00:00:00');
这里的 xyz_2020
是我现有的大表,它从 xyz
重命名。而 xyz
是像旧表一样创建的新主表。所以我想了解附加分区可能仍然需要更多时间的可能原因是什么。
编辑:我们正在创建一个新的分区表并尝试将旧表作为其分区之一附加。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)