Перейти к содержимому
8 / 10

Массовые операции: COPY, батчи и чанкованные обновления

Построчная вставка миллиона строк — это миллион сетевых кругов, миллион разборов запроса и миллион записей в журнал. Ускоряют это тремя приёмами. COPY — самый быстрый путь загрузки: данные едут потоком, разбор минимален, скорость на порядок выше построчной вставки. Многострочный INSERT (несколько сотен строк в одном операторе) — вариант, когда нужен ON CONFLICT и возврат значений. Чанкованное обновление — для UPDATE и DELETE по большому диапазону: одна большая операция блокирует миллионы строк, держит длинную транзакцию и раздувает таблицу, поэтому её режут на куски по первичному ключу с паузами. Дополнительно помогают отложенные индексы (создать после загрузки), временная таблица как площадка для подготовки данных и UNLOGGED для промежуточных таблиц. Важно помнить про побочный эффект: массовое изменение порождает столько же мёртвых версий строк, сколько строк изменено, и вакуум должен успеть их убрать.

Массовые операции: COPY, батчи и чанкованные обновления | JScriptiser