批量更新Postgres表

问题描述 投票:0回答:1

我有一个约有2亿条记录的表,并在其中添加了2个新列。现在,这2列需要来自不同表的值。将近80%的行将被更新。

我尝试了更新,但需要两个多小时才能完成。

主表具有4列的复合主键。我删除了它,并删除了更新前列上存在的索引。现在更新只需要不到1个小时的时间。

还有其他方法可以加快此更新过程(如批处理)。

编辑:我在update语句的from子句中使用了另一个表(将从中匹配值以进行更新)。

postgresql postgresql-9.6 postgresql-10 postgresql-performance
1个回答
0
投票

不是。确保max_wal_size足够高,以免获得过多的检查点。

更新后,表格会膨胀到其原始大小的两倍左右。如果您批量更新并且之间进行VACUUM更新,则可以避免这种膨胀,但这不会使处理速度更快。

© www.soinside.com 2019 - 2024. All rights reserved.