Материал: Л-6 - Сеансы, транзакции и блокировки

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Проблема потерянных обновлений (пример)

Проблема несогласованных данных

Пользователь может увидеть данные, которые были обновлены другим пользователем, но эти обновления не были зафиксированы. Второй пользователь может

провести откат (грязное чтение Dirty Read).

Проблема несовместимого анализа

Пользователь проводит групповую обработку данных, а какие-то значения обрабатываемого множества изменяются в результате параллельной транзакции:

неповторяющееся чтение – проводится изменение существующих записей;

фантомная вставка (строки-призраки) – проводится вставка новой записи.

Сериализация транзакций

СУБД должна использовать методы регулирования параллельных транзакций, которые должны удовлетворять следующим правилам:

в ходе транзакции пользователь видит только согласованные данные (он не должен видеть несогласованные промежуточные данные);

если транзакции выполняются параллельно, то их результат должен быть таким же, как если бы вначале выполнялась транзакция 1, а потом транзакция 2 (или наоборот).

Конфликты между транзакциями

транзакция 2 пытается изменять объект, измененный незакончившейся транзакцией 1 (конфликт W-W, запись-запись);

транзакция 2 пытается изменять объект, прочитанный незакончившейся транзакцией 1 (конфликт R-W, чтение-запись);

транзакция 2 пытается читать объект, измененный незакончившейся транзакцией 1 (конфликт W-R, запись-чтение).