обновить один столбец, заняв много времени и много места на диске в postgresql - PullRequest
0 голосов
/ 20 сентября 2018

Я выполнил запрос на обновление одного столбца с 10 миллионами записей.это занимает много времени и много места на диске в postgresql.пожалуйста, найдите ниже запрос." обновить набор тестов record_status = 'I' ;"и мой тип данных столбца " char (1) "

, пожалуйста, предложите мне, почему это занимает много времени и много дискового пространства.

Спасибо, Vittal

1 Ответ

0 голосов
/ 20 сентября 2018

В PostgreSQL UPDATE создает новую версию строки («кортеж») (см., Например, эту часть документации).

Таким образом, обновляя каждую строкув таблице вы фактически удваиваете размер таблицы.Старые версии строк удаляются с помощью автоочистки, но размер таблицы остается прежним (он становится «раздутым»).

Пустое пространство может быть использовано в будущем INSERT s, но если вы захотитеизбавьтесь от него, используйте VACUUM (FULL).

Большая продолжительность также объясняется множеством новых кортежей.Увеличение max_wal_size может помочь некоторым путем уменьшения количества контрольных точек, вызванных оператором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...