Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Уровни изоляции данных

  • 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