Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: database, optimization, index

Если тормозят запросы в БД и CPU на БД высокий — какими способами оптимизировать

Вопрос проверяет глубокое понимание работы БД, индексов и влияния запросов на производительность.

Короткий ответ

Начинают с анализа медленных запросов и EXPLAIN. Добавляют или корректируют индексы. Уменьшают объём данных и количество запросов. В сложных случаях применяют кеширование и денормализацию.

Длинный ответ

Высокий CPU на БД почти всегда означает, что база делает слишком много работы.

1) Поиск проблемных запросов

1.1) Логи и slow query

  • какие запросы выполняются чаще всего

  • какие выполняются дольше всего

1.2) План выполнения

EXPLAIN ANALYZE
SELECT * FROM orders WHERE user_id = 10;

Смотрят:

  • Seq Scan вместо Index Scan

  • большое количество строк

2) Индексы

Индексы — главный инструмент оптимизации.

2.1) Когда добавлять индекс

  • условия WHERE

  • JOIN

  • ORDER BY

2.2) Частая ошибка

  • индекс есть, но не используется

  • неправильный порядок колонок в составном индексе

3) Оптимизация запросов

  • выбирать только нужные поля

  • избегать SELECT *

  • убирать лишние JOIN

  • проверять подзапросы

4) Снижение нагрузки

  • кеширование результатов

  • реплики для чтения

  • агрегация заранее

5) Архитектурные решения

  • денормализация

  • партиционирование

  • вынос тяжёлых запросов в аналитику

Краткий вывод

Оптимизация БД начинается с анализа запросов и индексов. Без понимания плана выполнения любые изменения — это стрельба вслепую.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    9

Навыки

  • Postgres

    Postgres

Ключевые слова

#database

#optimization

#index

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.