PostgreSQL – быстрая вставка
В статье содержится информация для организации быстрой вставки в таблицы PG.
Быстрая вставка может потребоваться в самых разных случаях …
- для сокращения времени транзакции.
- для высоконагруженного решения.
- для быстрого журналирования.
Вот несколько основных напоминаний, которые помогут оптимизировать вставку:
- Минимизируйте использование индексов, триггеров, ограничений.
- Если значение индексируемого поля возрастает монотонно, то вместо B-tree используйте BRIN индекс.
- Используйте максимально большой набор строк в одной операции INSERT или COPY.
- Рассмотрите возможность параллельной вставки с помощью нескольких сессий.
- Рассмотрите возможность поместить индекс в другое табличное пространство на отдельном диске.
- Рассмотрите возможность отказаться от использования транзакций (CREATE UNLOGGED TABLE …).
Дополнительно можно задуматься об использовании быстрых дисков (SSD NVMe) и конвергентных архитектурах (например VSAN).
Если будете делать высоконагруженное решение с индексом B-tree, то обратите внимание на параметр shared_buffers. Как только индексы перестанут помещаться в RAM, скорость вставки катастрофически деградирует. В этом случае нужно будет увеличить размер shared_buffers или уменьшить количество строк, помещаемых в одну партицию.
Начать дискуссию