Какие настройки мне нужно сделать для улучшения производительности?
Существует три главных области, которые потенциально могут увеличить производительность:
Изменение запроса
Это означает модификацию запросов для получения лучшей производительности:
- Создание индексов, включая индексы выражений и частичные индексы
- Использование COPY вместо множества INSERT
- Группировка нескольких операторов в единую транзакцию для уменьшения нагрузки при выполнении завершения транзакции
- Использование CLUSTER, когда из индекса берётся множество строк
- Использование LIMIT для того, чтобы возвращалась только часть вывода от запроса
- Использование Подготовленных (Prepared) запросов
- Использование ANALYZE для обслуживания статистики оптимизатора
- Регулярное использование VACUUM или pg_autovacuum
- Удаление индексов во время больших изменений данных
Настройка сервера
Некоторые установки в postgresql.conf влияют на производительность. Подробный полный список установок см. в
Administration Guide/Server Run-time Environment/Run-time Configuration, а комментарии см. в
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
Выбор "железа" - аппаратного обеспечения
Влияние "железа" на производительность подробно описано в
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html и
http://www.powerpostgresql.com/PerfList/.