Проблема потерянных обновлений (пример)
Проблема несогласованных данных
Пользователь может увидеть данные, которые были обновлены другим пользователем, но эти обновления не были зафиксированы. Второй пользователь может
провести откат (грязное чтение – Dirty Read).
Проблема несовместимого анализа
Пользователь проводит групповую обработку данных, а какие-то значения обрабатываемого множества изменяются в результате параллельной транзакции:
неповторяющееся чтение – проводится изменение существующих записей;
фантомная вставка (строки-призраки) – проводится вставка новой записи.
Сериализация транзакций
СУБД должна использовать методы регулирования параллельных транзакций, которые должны удовлетворять следующим правилам:
в ходе транзакции пользователь видит только согласованные данные (он не должен видеть несогласованные промежуточные данные);
если транзакции выполняются параллельно, то их результат должен быть таким же, как если бы вначале выполнялась транзакция 1, а потом транзакция 2 (или наоборот).
Конфликты между транзакциями
транзакция 2 пытается изменять объект, измененный незакончившейся транзакцией 1 (конфликт W-W, запись-запись);
транзакция 2 пытается изменять объект, прочитанный незакончившейся транзакцией 1 (конфликт R-W, чтение-запись);
транзакция 2 пытается читать объект, измененный незакончившейся транзакцией 1 (конфликт W-R, запись-чтение).