Почему может тормозить БД PostgreSQL?

Ситуация такая. Есть БД PostgreSQL в которую пишутся результаты парсинга данных. В начале все работало достаточно быстро и в час писалось порядка 4000 тыс записей. По мере роста БД до 20GB (3 млн записей) скорость вставки записей упала до 1000 в час.

Чисто теоретически могут прилетать дубликаты данных (точнее свежие версии). Поэтому нужны индексы. Впрочем пробовал и без них. Если их вообще удалить, то скорость не особо возрастает (прирост не более 10%).

На колонке по которой проверяю дубликаты - MyID стоит HASH index.

Пробовал подкручивать настройки PostreSQL:

synchronous_commit = off

и

shared_buffers = 1024MB

Смена SSD на NVRAM тоже не дает какого-то успер ускорения т.е. очевидно, что проблема не в этом.

Я бы понял если бы индексы как-то все тормозили, но нет. Их удаление\добавление погоды не делает особой.

Данные прилетают ко мне в виде готовых SQL т.е. у меня нет возможности использовать prepered statment если это конечно погоду какую-то делает т.к. парсер выплевывает INSERT'ы как текст.

Вместо hash index пробовал b-tree, но мне показалось что hash index чуть быстрее работает т.к. у меня по колонке MyID поиск только в режиме = идет. Поиск пока главным образом на случай если прилетит дубликат (тогда я ловлю исключение и выполняю операцию удаления старых данных).

Во время вставки PostgreSQL почему-то крайне сильно нагружает CPU введите сюда описание изображения


Ответы (0 шт):