Проблемы, возникающие при параллельной обработке данных

 

Пока пользователи БД читают одновременно данные, никаких проблем не происходит. Они могут появиться при одновременном обращении нескольких пользователей к одним и тем же данным с целью их корректировки. Важным при этом становится решение задачи обеспечения целостности БД, которая может быть нарушена вследствие взаимного влияния процессов друг на друга. Рассмотрим возникающие при этом проблемы.

1 Проблема утраченного обновления. Рассмотрим ситуацию, когда параллельно выполняются два процесса обработки одних и тех же данных Д пользователем А и пользователем В, т.е. выполняются две, независимые друг от друга транзакции, реализующие обновление одних и тех же данных Д (рисунок 34).

Пользователь А Пользователь В
Выборка Д момент времени т1
  момент времени т2 Выборка Д
Обновление данных Д момент времени т3
  момент времени т4 Обновление данных Д
! Утраченное обновление момент времени т5

 

Рисунок 34 – Проблема утраченного обновления


И для пользователя В, и для системы в целом, обновление, сделанное пользователем А, будет утрачено (пользователь В его не увидит и сделает своё обновление, не учитывая обновление, сделанное пользователем А). Такая ситуация называется проблемой утраченного обновления.

2 Проблема зависимости от незафиксированных обновлений. Параллельно выполняются два процесса обработки одних и тех же данных Д – рисунок 35.

 

Пользователь А Пользователь В
  момент времени т1 Обновление Д
Выборка Д момент времени т2
  момент времени т3 ! Откат (возврат к пред. состоянию)

 

Рисунок 35 – Проблема зависимости от незафиксированного обновления

 

Пользователь А, если ему разрешен просмотр этих же данных, в момент времени т2 увидит данные, которые окончательно не были зафиксированы в системе, и вполне может быть, что они ошибочные. Такая ситуация называется "зависимость от незафиксированных обновлений». Транзакция А становится зависимой от не сохраненного обновления данных Д в момент т2, т.е. в транзакции А принимают участие данные, которые больше не существуют.

3 Проблема несовместимого анализа. Параллельно выполняются два процесса обработки одних и тех же данных Д. Один пользователь создает отчет, который содержит как детальные, так и итоговые строки. Второй в это время изменяет данные, влияющие на формирование итоговых строк. Могут наблюдаться противоречия в отчете: сумма детальных строк может быть не равна итоговой цифре — целостность БД не нарушается, но документ неприемлем. Такая ситуация называется "проблемой несовместимого анализа".

Для корректной обработки параллельных транзакций без создания конфликтных ситуаций необходимо использовать некоторый метод управления параллелизмом. Методы могут быть пессимистическими (консервативными), поскольку они откладывают выполнение транзакций, способных в будущем создать конфликтную ситуацию и оптимистическими – строятся на предположениях, что конфликтная ситуация маловероятна, поэтому они допускают асинхронное выполнение транзакций в БД, а проверка на наличие конфликта откладывается на момент их завершения и фиксации данных в БД.