понедельник, 24 июня 2013 г.

Тормоза на PGSQL и методы их решения.

Суть проблемы: Есть не хилый сервак который начал загибаться под 7Гб базой в PostgreSQL. В первую очередь думал опять дисковая легла. Ан нет, индексы вполне вменяемые цифры показали. Начал дальше копать. Наткнулся на полезный ресурс, которым и хочу поделиться.
Решением оказался анализ висящего в статистике запроса.
Было выявлено две ошибки:

  1. Мне ничего не было известно о vacuum. И о том что его надо запускать в ручную на больших базах. Решение: накидал bat-ник, с запуском чистки каждые сутки.
  2. Запрос обращался к неиндексированному полю. Решение: (подсказал Кэп.) повешать индекс. Через полчаса делов (таблиц много оказалось), база взлетела.
Ну и порядок: сначала создать индексы, потом вакуум (кроме чистки он еще и анализ собирает - надо ли использовать индексы).
Кроме того по тексту ресурса есть несколько советов по shared_memory, и autovacuum. Которые так же нужно учесть во внимание.

Комментариев нет:

Отправить комментарий