Почему может тормозить БД 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
