PostgreSQL哈希分区表设置fillfactor报错,求正确实现方式
哈希分区表设置fillfactor的正确方法
你遇到的语法错误是因为WITH子句的位置不符合PostgreSQL语法规范,同时创建哈希分区时必须指定分区的模数(MODULUS)和余数(REMAINDER)。以下是正确的实现方式:
方法1:创建分区时直接指定fillfactor
调整WITH子句的位置,将其放在PARTITION OF之前,同时补充哈希分区的必要参数:
CREATE TABLE test1 ( col1 int NOT NULL GENERATED BY DEFAULT AS IDENTITY, col2 varchar NULL, col3 date null ) PARTITION BY HASH (col3); -- 正确的分区创建语句 CREATE TABLE p1 WITH (fillfactor=80) PARTITION OF test1 FOR VALUES WITH (MODULUS 4, REMAINDER 0);
MODULUS:指定哈希分区的总数量(示例中为4个)REMAINDER:当前分区对应的余数(范围为0到MODULUS-1)
方法2:创建分区后修改fillfactor
如果已经创建了分区,可以通过ALTER TABLE命令调整fillfactor:
-- 先创建分区 CREATE TABLE p1 PARTITION OF test1 FOR VALUES WITH (MODULUS 4, REMAINDER 0); -- 修改分区的fillfactor参数 ALTER TABLE p1 SET (fillfactor=80);
需要注意:主表的fillfactor设置不会自动继承给分区,每个哈希分区都可以单独配置存储参数。
内容的提问来源于stack exchange,提问作者Appu
相关产品推荐
相关产品推荐

