Уровни изоляции

Транзакции и обработка ошибок в PostgreSQL

Jason Myers

Instructor

Параллелизм

  • Управление несколькими операциями, выполняемыми одновременно.
  • Порождает особые проблемы в базе данных.
  • Для предсказуемости результатов используются правила — уровни изоляции.
Транзакции и обработка ошибок в PostgreSQL

Грязное чтение

Грязное чтение

Транзакции и обработка ошибок в PostgreSQL

Неповторяющееся чтение

Неповторяющееся чтение

Транзакции и обработка ошибок в PostgreSQL

Фантомное чтение

Фантомное чтение

Транзакции и обработка ошибок в PostgreSQL

Аномалия сериализации

Аномалия сериализации

Транзакции и обработка ошибок в PostgreSQL

Уровни изоляции

Уровень изоляции Грязное чтение Неповторяющееся чтение Фантомное чтение Аномалия сериализации
Read Uncommitted Защита (PostgreSQL) уязвим уязвим уязвим
Read Committed Защита уязвим уязвим уязвим
Repeatable Read Защита Защита Защита (PostgreSQL) уязвим
Serializable Защита Защита Защита Защита
Транзакции и обработка ошибок в PostgreSQL

Влияние уровней изоляции

START TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

Результаты запросов

  • Результат первого SELECT: 5
  • Результат второго SELECT: 6
Транзакции и обработка ошибок в PostgreSQL

Влияние уровней изоляции

START TRANSACTION ISOLATION LEVEL SERIALIZABLE; 
SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';

-- Cookie 6 has been added in an external transaction.

SELECT COUNT(*) FROM cookies WHERE name = 'lemon drop';
COMMIT;

Результаты запросов

  • Результат первого SELECT: 5
  • Результат второго SELECT: 5
Транзакции и обработка ошибок в PostgreSQL

Давайте потренируемся!

Транзакции и обработка ошибок в PostgreSQL

Preparing Video For Download...