В PostgreSQL UPDATE
создает новую версию строки («кортеж») (см., Например, эту часть документации).
Таким образом, обновляя каждую строкув таблице вы фактически удваиваете размер таблицы.Старые версии строк удаляются с помощью автоочистки, но размер таблицы остается прежним (он становится «раздутым»).
Пустое пространство может быть использовано в будущем INSERT
s, но если вы захотитеизбавьтесь от него, используйте VACUUM (FULL)
.
Большая продолжительность также объясняется множеством новых кортежей.Увеличение max_wal_size
может помочь некоторым путем уменьшения количества контрольных точек, вызванных оператором.