Уровни изоляции данных
- 1 read uncommitted
- самую высокую скорость выполнения и самую низкую согласованность имеет уровень
- феномен грязного чтения
- PostgreSQL мог бы тоже использоваться, но он не поддерживает уровень изоляции read uncommitted, и использует вместо него уровень read committed.
- Разные СУБД по-разному воспринимают уровни изолированности.
- 2 Read committed
- Для этого уровня параллельно исполняющиеся транзакции видят только зафиксированные изменения из других транзакций.
обеспечивает защиту от грязного чтения.
- феномен неповторяющегося чтения, когда мы видим обновленные и удаленные строки (UPDATE, DELETE), и феномен чтения фантомов, когда мы видим добавленные записи (INSERT).
- 3 Repeatable read
- Уровень, позволяющий предотвратить феномен неповторяющегося чтения. Т.е. мы не видим в исполняющейся транзакции измененные и удаленные записи другой транзакцией. Но все еще видим вставленные записи из другой транзакции.
- Чтение фантомов никуда не уходит.
- 4 serializable
- Самую низкую скорость выполнения и самую высокую согласованность.
- Уровень, при котором транзакции ведут себя как будто ничего более не существует, никакого влияния друг на друга нет. В классическом представлении этот уровень избавляет от эффекта чтения фантомов. Блокировка изменений в транзакции1 до завершения чтения в транзакции2.
- По умолчанию:
- MySQL - repeatable read
- PostgreSQL — read committed