Что такое изоляция транзакции
Изоляция транзакции определяет, насколько изменения одной транзакции видны другим параллельным транзакциям. В SQL стандарте есть 4 уровня изоляции:
-
Read Uncommitted - самая слабая изоляция, транзакции видят даже незафиксированные изменения других транзакций (грязное чтение).
-
Read Committed - транзакция видит только зафиксированные изменения других транзакций (по умолчанию в PostgreSQL).
-
Repeatable Read - гарантирует, что данные, прочитанные в транзакции, не изменятся другими транзакциями (в PostgreSQL также предотвращает фантомное чтение).
-
Serializable - самый строгий уровень, транзакции выполняются так, как будто они выполняются последовательно.
Пример настройки уровня изоляции в SQLAlchemy:
from sqlalchemy import create_engine
engine = create_engine("postgresql://user:pass@localhost/db",
isolation_level="REPEATABLE READ")Проблемы при слабой изоляции: грязное чтение, неповторяемое чтение, фантомное чтение.

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