我有一个包含 1T 数据的表,该表有大约 50 个分区。每个分区保存一周的数据。但是,我希望创建额外的分区来保存额外的每周数据。为此,我正在创建一个表并附加到主表。命令如下:
Create table test.2023w327
partition of test.main_table
For values from (‘2023-07-03’) To (‘2023-07-10’);
我的问题是这是一种正确的方法。这也会锁定桌子吗?由于该表包含 1T 的数据,因此我还不知道该表需要多少时间。请提出建议。
是的,这是为范围分区表创建分区的正确方法,除了您忘记将表名(以数字开头)用双引号引起来。但是,它需要对分区表进行短暂的
ACCESS EXCLUSIVE
锁定。
要使用强度较低的锁执行该操作,您可以
-
CREATE TABLE test.part_2023w327 (LIKE test.main_table);
创建与分区表匹配的索引和约束
创建一个检查约束,确保分区键必须是
NOT NULL
、>= ‘2023-07-03’
和 < ‘2023-07-10’
ALTER TABLE test.main_table
ATTACH PARTITION test.2023w327
FOR VALUES FROM (‘2023-07-03’) TO (‘2023-07-10’);