Re: А вот кстати, как быстро заполнить столбик? - Mailing list pgsql-ru-general

From Sergei Kornilov
Subject Re: А вот кстати, как быстро заполнить столбик?
Date
Msg-id 301091524159028@web13j.yandex.ru
Whole thread Raw
In response to А вот кстати, как быстро заполнить столбик?  ("Dmitry E. Oboukhov" <unera@debian.org>)
List pgsql-ru-general
Привет
Такой update по понятной причине будет сильно замедляться пока не придёт vacuum. А чтобы замедляться пока не придёт
vacuum- надо не ходить повторно по обработанным записям.
 

Эффективнее всего - пройти запросами по диапазону ctid от начала до конца таблицы.
Проще всего и при этом без замедления от удалённый строк - по диапазонам id: UPDATE "table" SET "c" = "d" WHERE id >= 0
andid < 5000 и сдвигать диапазон на каждой итерации.
 
На различное заполнение пачки id при этом банально забить.

Лучше всё-таки давать между итерациями время поработать автовакууму, тем самым замедляя миграцию, но не давать табличке
распухнутьвдвое. Ну или сразу заложить запуск pgcompacttable или pg_repack после миграции.
 

Сергей


pgsql-ru-general by date:

Previous
From: "Dmitry E. Oboukhov"
Date:
Subject: А вот кстати, как быстро заполнить столбик?
Next
From: Sergei Kornilov
Date:
Subject: Re: VARCHAR(32) в VARCHAR(64) или TEXT