Встречается на собеседованиях • сегодня

Какие важные, но редкие проблемы могут возникать в базах данных

  1. Deadlocks – когда две транзакции блокируют друг друга, ожидая освобождения ресурсов.
    python
    # Пример deadlock в SQLAlchemy
    session1.execute("UPDATE table1 SET col=1 WHERE id=1")  # Блокирует строку 1
    session2.execute("UPDATE table2 SET col=2 WHERE id=1")  # Блокирует строку 2
    session1.execute("UPDATE table2 SET col=1 WHERE id=1")  # Ждёт session2
    session2.execute("UPDATE table1 SET col=2 WHERE id=1")  # Ждёт session1
    Решение: Таймауты, порядок блокировок.
  1. N+1 Query Problem – когда ORM делает множество запросов вместо JOIN.

    python
    # Плохо (N запросов)
    for user in session.query(User):
        print(user.posts)  # Запрос для каждого пользователя

    Решение: .join() или .options(joinedload(...)).

  2. Проблемы с индексами – например, неиспользуемые или "раздутые" индексы.
    Решение: Анализ EXPLAIN и регулярное обслуживание (REINDEX).

  3. Транзакции-долгожители – блокируют ресурсы и могут привести к деградации.
    Решение: Лимиты времени, разделение на мелкие транзакции.

  4. Потерянные обновления – если два клиента читают, изменяют и записывают данные без блокировок.
    Решение: SELECT FOR UPDATE или оптимистичные блокировки (версионирование).

  5. Проблемы с кодировкой – например, некорректное хранение UTF-8.
    Решение: Проверять настройки БД (SHOW SERVER_ENCODING в PostgreSQL).

  6. Утечки соединений – незакрытые соединения исчерпывают пул.

    python
    # Плохо
    conn = pool.getconn()
    # Забыли conn.close()

    Решение: Контекстные менеджеры (with) или try/finally.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы