Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Проблемы при добавлении индекса на большие таблицы

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

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

Добавление индекса на таблицу с 1 млн+ записей может заблокировать таблицу на длительное время, вызвать деградацию производительности из-за нагрузки на диск/CPU и потребовать значительного объема свободного дискового пространства (до 120% от размера данных).

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

Основные проблемы:

  1. Блокировка таблицы:

    • При создании индекса некоторые СУБД (например, MySQL < 5.6) блокируют таблицу на запись, что останавливает работу приложения.

    • В PostgreSQL даже с CONCURRENTLY возможны конфликты с параллельными транзакциями.

  2. Дисковые ресурсы:

    • Индекс занимает физическое место (например, 1 ГБ для таблицы в 5 ГБ).

    • Требует 2-3x свободного места для временных операций сортировки.

  3. Производительность:

    • Интенсивное чтение данных и сортировка создают нагрузку на CPU и I/O.

    • В облачных БД (AWS RDS) может вызвать исчерпание IOPS.

Решение:

-- PostgreSQL: безопасное создание индекса без длительной блокировки
CREATE INDEX CONCURRENTLY idx_books_author_id ON books (author_id);

Рекомендации:

  • Выполнять в часы минимальной нагрузки.

  • Мониторить прогресс (в PostgreSQL через pg_stat_progress_create_index).

  • В MySQL использовать ALGORITHM=INPLACE.

Вывод: Всегда оценивайте влияние индексации через EXPLAIN и тестируйте на staging-среде.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#index

#database

#performance

#lock

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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