Операция выполнена!
Закрыть
Хабы: Блог компании Тантор Лабс, PostgreSQL

Когда пользователь на сервере-publisher логической репликации загружает данные через COPY, PostgreSQL вставляет строки компактно, много строк в одной вставке, задействуя механизм heap_multi_insert(). Это экономит потребление WAL, уменьшает количество взятий локов и пр. На подписчике же apply worker вставляет каждую такую строку отдельно через heap_insert() — по одной WAL-записи на кортеж. Результат — медленный catch-up и лишний дисковый I/O.

В этой статье я расскажу об эксперименте, который позволяет задействовать multi_insert механизм на сторону подписчика логической репликации, какие решения за этим стоят и что показали бенчмарки на мульти-региональном стенде.

Код: github.com/danolivo/pgdev/tree/lr-multi-insert
Материалы и скрипты бенчмарков: github.com/danolivo/conf/tree/main/2026c-LR-Multi-Insert

Читать далее
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro