【发布时间】:2010-11-12 00:22:35
【问题描述】:
是否可以在 PostgreSQL 8.4 中更改现有表的填充因子?
或者我是否必须使用新的填充因子创建表的副本 - 由于外键问题,这不是最好的方法?
【问题讨论】:
标签: postgresql fillfactor
是否可以在 PostgreSQL 8.4 中更改现有表的填充因子?
或者我是否必须使用新的填充因子创建表的副本 - 由于外键问题,这不是最好的方法?
【问题讨论】:
标签: postgresql fillfactor
是的,这是可能的。但是你必须在之后对该表进行 VACUUM FULL 或 CLUSTER 以重写该表。
ALTER TABLE foo SET ( fillfactor = 50);
VACUUM FULL foo;
【讨论】:
VACUUM FULL 很好 - 正如 Postgres Wiki 中所记录的那样。
VACUUM FULL。 pg_repack 在没有排他锁的情况下做同样的工作。又名在线真空满github.com/reorg/pg_repack
ALTER TABLE foo SET ( fillfactor = 20);
VACUUM FULL foo;
查看表格选项,包括。填充因子
select t.relname as table_name,
t.reloptions
from pg_class t
join pg_namespace n on n.oid = t.relnamespace
where n.nspname = 'jxy'
and t.relname in ('xx', '')
;
然后
run pg_repack
【讨论】: