Ответ
Уровни изоляции определяют, насколько транзакции изолированы друг от друга, балансируя между согласованностью данных и производительностью.
Уровни от самого слабого к самому строгому:
| Уровень | Назначение | Решаемые проблемы | Пример SQL |
|---|---|---|---|
| READ UNCOMMITTED | Максимальная производительность, минимальная согласованность. Подходит для аналитических запросов, где допустимы "грязные" данные. | Не решает никаких проблем | SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; |
| READ COMMITTED | Баланс между производительностью и согласованностью. По умолчанию в PostgreSQL, Oracle, SQL Server. | Предотвращает грязное чтение (чтение незафиксированных данных) | SET TRANSACTION ISOLATION LEVEL READ COMMITTED; |
| REPEATABLE READ | Гарантирует, что данные, прочитанные в транзакции, не изменятся другими транзакциями до её завершения. По умолчанию в MySQL. | + Предотвращает неповторяемое чтение | SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; |
| SERIALIZABLE | Максимальная изоляция. Транзакции выполняются так, как если бы они шли строго последовательно. | + Предотвращает фантомное чтение (появление новых строк) | SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; |
Практическое правило: Выбирайте минимально необходимый уровень изоляции. READ COMMITTED подходит для большинства OLTP-систем. SERIALIZABLE используется для критически важных финансовых операций.