Ответ вслух Middle Масштабирование обновлено

База не справляется с чтением

Вопрос

База данных интернет-магазина перегружена чтением каталога. Какие шаги вы предпримете и в каком порядке?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала измеряю: какие запросы съедают время, смотрю EXPLAIN, добавляю недостающие индексы. Часто этого хватает.

Что должно прозвучать в ответе

  • Сначала найти тяжёлые запросы и проверить индексы (EXPLAIN)

  • Кеш горячих данных: Redis, HTTP-кеш, CDN для страниц

  • Реплики чтения с учётом отставания

  • Пулер соединений, если упираемся в соединения

  • Денормализация или отдельное хранилище для поиска и фильтров

Что могут спросить следом

  • Какие данные каталога нельзя брать с реплики?
  • Как инвалидировать кеш при смене цены?

Разбор

Сначала измеряю: какие запросы съедают время, смотрю EXPLAIN, добавляю недостающие индексы. Часто этого хватает. Дальше кеш: карточки и списки каталога меняются редко, их можно держать в Redis и отдавать через HTTP-кеш и CDN. Затем реплики чтения: каталог терпит отставание в секунды. Цену и остаток в корзине и при оплате беру с лидера, потому что там нужна точность. Если тысячи соединений, ставлю PgBouncer. Фильтры и полнотекстовый поиск выношу в Elasticsearch или OpenSearch, который наполняется из БД через события.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.