Содержание

Транзакция - набор операций, которые выполняются, как неразделимая часть.

Если хотябы 1 ошибка - то все операции отменяются

Приостановка действия с одной операцией, пока не будет одной активной обработки.

Аномалии

Проблема грязного чтения (Dirty Read)

Грязное чтение связано с чтением незафиксированных данных

Проблема неповторяющегося чтения (Non-Repeatable Read)

Неповторяющееся чтение связано с изменением уже прочитанных данных

Фантомное чтение (Phantom Read)

Фантомное чтение связано с изменением набора строк, соответствующих условию запроса

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

Уровень изолированности - значение, показывающее степень видимости изменений 1й транзакции, другой транзакции

READ UNCOMMITED

Изоляции нет

READ COMMITED

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

По умолчанию в PostgreSQL Oracle

REPEATABLE READ

Повторное чтение

Пока транзакция не изменится - никто параллельно не может изменять или удалять строкие которые транзакция уже прочитала

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

SERIALIZABLE

Блокировка всей таблицы или строк

Плохо с производительностью

MVCC

MVCC - Multiversion Concurrency Control – метод управления конкурентным доступом к данным. Позволяет нескольким транзакциям работать с данными одновременно

Каждая транзакция работает со своей версией данных

Многоверсионность

Не меняет данные, а создаёт версии

Указывается какая транзакция создала

Переодически удаляет мусор

Изоляция транзакций

Транзакция видит только те данные, что были заблокированы

Минимизирует блокировки

Чтение данных не блокирует запись, а запись не блокирует чтение

#Управление конфликтом

Конфликты транзакций решаются при коммите

Можно откатить транзакцию, которая не может выполнится