Какие знаешь типы блокировок бд
Python
Senior
Без компании
Какие знаешь типы блокировок бд
Ответы
В Python при работе с базами данных (например, PostgreSQL, MySQL) используются следующие типы блокировок:
- **Эксклюзивные (Exclusive Locks)** – блокируют запись/таблицу для любых других операций (SELECT FOR UPDATE).
- **Разделяемые (Shared Locks)** – разрешают чтение, но запрещают изменение (LOCK IN SHARE MODE).
- **Оптимистичные (Optimistic Locks)** – проверяют конфликты при коммите (версионирование).
- **Пессимистичные (Pessimistic Locks)** – блокируют данные заранее.
- **Явные (Explicit Locks)** – ручное управление (BEGIN; LOCK TABLE).
Пример пессимистичной блокировки в SQLAlchemy:
```
with session.begin():
user = session.query(User).with_for_update().filter_by(id=1).first()
user.balance += 100
```
Пример оптимистичной блокировки через версию:
```
class User(Base):
__versioned__ = {}
id = Column(Integer, primary_key=True)
version_id = Column(Integer)
```
Выбор типа зависит от уровня изоляции транзакций и требований к параллелизму.