Ускорение INSERT/COPY в логической репликации PostgreSQL
Когда пользователь на сервере-publisher логической репликации загружает данные через COPY, PostgreSQL вставляет строки компактно, много строк в одной вставке, задействуя механизм heap_multi_insert(). Это экономит...
В сфере искусственного интеллекта произошло заметное событие. Когда пользователь на сервере-publisher логической репликации загружает данные через COPY, PostgreSQL вставляет строки компактно, много строк в одной вставке, задействуя механизм heap_multi_insert(). Это экономит потребление WAL, уменьшает количество взятий локов и пр.
На подписчике же apply worker вставляет каждую такую строку отдельно через heap_insert() — по одной WAL-записи на кортеж. Результат — медленный catch-up и лишний дисковый I/O.
В этой статье я расскажу об эксперименте, который позволяет задействовать multi_insert механизм на сторону подписчика логической репликации, какие решения за этим стоят и что показали бенчмарки на мульти-региональном стенде. com/danolivo/pgdev/tree/lr-multi-insert Материалы и скрипты бенчмарков: github.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




