PostgreSQL用于清除经常更新的jsonb字段

时间:2018-04-04 21:34:05

标签: postgresql vacuum

我有jsonb字段的postgres表。场大小约为每行2-4kb。我的应用程序每天更新100k行2000次(在字段中更改0.1-0.5%的数据)。 Autovacuum已关闭,vacuum full每天晚上都会运行。

真空每天释放约100-300gb,需要很长时间才能导致应用程序停机。

问题是:我可以使用jsonb字段解决此问题,还是必须将该字段拆分为其他简单表?

1 个答案:

答案 0 :(得分:0)

如果您的担忧时间很长,那么VACUUM FULL要求对整个运行期间正在吸尘的桌子进行独占锁定。

我建议您尝试pg_repack分机或pg_squeeze分机 - 具体取决于postgres版本。与CLUSTER和VACUUM FULL不同,它可以在线工作,而不会在处理过程中对处理过的表格进行独占锁定。这些扩展非常易于在postgres中安装和使用。这些扩展可以显着减少您的停机时间,也有助于减少VACUUM FULL的运行。