我有一张大型 postgresql 表,我认为它已经开始变得臃肿,我想修复它。通常我可以执行VACUUM FULL
或CLUSTER
,但我想知道我是否可以在不影响读/写性能的情况下修复膨胀。
如果索引膨胀,我可以(手动)同时创建一个新索引,该新索引索引的内容与旧索引相同,但名称不同,创建后,我可以删除旧的膨胀索引。这样,我就可以修复索引膨胀,同时对生产使用的影响最小(因为那里始终有一个索引,并且读取和写入不会受到阻止)。
有没有类似的方法可以用于表格?我可以CREATE TABLE newtable LIKE old_bloated_table INCLUDING ...
,这将重新创建表格。然后删除并重命名。但数据可能不同步。有没有办法确保表格之间的数据相同?(对于索引,索引将始终与表同步)。