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

Как БД будет обрабатывать одновременные запросы

БД обрабатывает одновременные запросы через механизмы транзакций и изоляции. Основные подходы:

  1. Блокировки:

    • Пессимистичные (блокируют данные заранее)
    • Оптимистичные (проверяют конфликты при коммите)
  2. Уровни изоляции (ANSI SQL):

    • Read Uncommitted
    • Read Committed (по умолчанию в PostgreSQL)
    • Repeatable Read
    • Serializable

Пример конфликта в Python с SQLAlchemy:

python
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine('postgresql://user:pass@localhost/db')
Session = sessionmaker(bind=engine)

# В двух разных процессах
session1 = Session()
session2 = Session()

# Process 1
user1 = session1.query(User).get(1)
user1.balance += 100

# Process 2
user2 = session2.query(User).get(1)
user2.balance -= 50

session1.commit()  # Может вызвать конфликт
session2.commit()  # Зависит от уровня изоляции

Современные БД используют MVCC (Multiversion Concurrency Control) для минимизации блокировок. PostgreSQL, например, создает "снимки" данных для каждой транзакции.

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

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

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

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