@Dannerty

Как исправить замедление запросов в PostgreSQL?

Привет всем.
Собственно такой вопрос возник.
Как можно исправить, или что можно сделать, чтобы не возникало замедление запросов к базе данных, если в это время выполняется какой-либо тяжелый SELECT, или идет создание индекса (CREATE INDEX CONCURRENTLY), или другая DDL-операция на большой таблице?
Есть у меня база данных - 100 Гб.
Есть приложения, которые делают множество запросов к базе и им важно время отклика.
При выполнении тяжелого запроса, все запросы от сервисов начинают в разы медленнее выполняться (замедление в 10-30 раз, очень критично). Причем запросы сервисов никак не связаны с таблицами, которые участвуют в запросе.
Также при создании индекса без блокировки или другой DDL-операции таблицы начинается замедление. Здесь также таблица не используется сервисами.
Можно ли как-то это обойти? С запросами вопрос еще решить можно, но что делать с DDL? Есть ли у PostgreSQL аналог MySQL'ского 'pt-online-schema' от Percona?

Сервер:
8 ядер, 16 Гб, ССД, Postgresql 11.3

Postgresql.conf:
shared_buffers - 6GB
effective_cache_size - 10GB
maintenance_work_mem - 1GB
work_mem - 48 MB
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Выносить read-only запросы на реплику, ставить под базу SSD (или под наиболее активно используемые таблицы с помощью тейблспейсов) - вариантов много.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы