postgresql - 即使添加了检查约束,附加分区也需要更多时间
问题描述
所以基本上我们在 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
是像旧表一样创建的新主表。所以我想了解附加分区可能仍需要更多时间的可能原因。
编辑:我们正在创建一个新的分区表并尝试将旧表附加为其分区之一。
解决方案
推荐阅读
- swift - ScrollView 导致 SwiftUI 中的按钮出现错误
- c# - 抽象泛型类的 IncludeBase 自动映射器映射失败
- argon2-ffi - 在 macbook 上安装节点 Argon2 时出现问题
- pandas - 水平表示而不是垂直表示的 csv 数据 - Python Pandas CSV
- javascript - Angular Material Paginator 在检索数据后不允许按下后退按钮
- symfony - 如何使 Symfony 表单中的 DateIntervalType 字段不需要
- reactjs - 将 reader.onload 中的字符串传递给父级
- string - 你如何在 Nim 中使用变量进行字符串插值?
- ros - ROS 控制和 Gazebo 的问题
- ruby-on-rails - X时间过去后如何使Ruby超时HTTP请求