Назад | Перейти на главную страницу

Как оптимизировать сервер postgreSQL для инфраструктуры типа «писать один раз, читать много»?

Приветствую,

Я работаю над программным обеспечением, которое регистрирует записи (и связанные с ними теги) в базе данных PostgreSQL для хранения и поиска. Мы никогда не обновляем какие-либо данные после того, как они были вставлены; мы можем удалить его, когда запись станет слишком старой, но это делается не чаще одного раза в день. Сохраненные записи могут быть извлечены пользователями.

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

Используемые таблицы довольно просты: одна таблица для идентификаторов, необработанного содержимого и даты вставки; и одна таблица, хранящая теги и их значения, связанные с идентификатором. Пользовательский поиск в основном касается значений тегов, поэтому запросы SELECT обычно состоят из запросов JOIN по идентификаторам в двух таблицах.

Подвести итог :

Какой была бы оптимальная конфигурация сервера (программное и аппаратное обеспечение, я предполагаю, например, что RAID10 может помочь) для моего сервера PostgreSQL с учетом этих требований? Под оптимальным я подразумеваю такой, который позволяет запросам SELECT занимать достаточно мало времени.

При необходимости я могу предоставить дополнительную информацию о текущей настройке (например, таблицы, индексы ...).

Измените некоторые параметры конфигурации в postgresql.conf: Writing: увеличьте wal-settings Чтение: увеличьте shared_buffers и установите work_mem на величину, которую планировщик может творить чудом.

Есть несколько настроек, которые нужно проверить и протестировать.

RAID 10 отлично подходит для записи, чтение тоже подойдет. Хорошая RAID-карта с большим объемом оперативной памяти и резервным аккумулятором очень поможет.

И RAM, RAM и RAM. У тебя не может быть слишком много.