Субд лекции

Темы:

Проблемы параллелизма и пути их решения

При параллельном выполнении операций над базой данных могут возникать некоторые проблемы. Одна из них - проблема утраченных (потерянных) обновлений (Lost update) - заключается в том, что если пользователи параллельно обновляют одни и те же данные, то запомненным будет то обновление, которое было проведено последним. Остальные обновления будут потеряны (рис. 10.4).

Image

Другая проблема - зависимость от незафиксированных обновлений - состоит в том, что пользователь А может увидеть данные, которые уже были обновлены пользователем В, но эти обновления еще не были окончательно зафиксированы. Далее пользователь В может в силу [различных причин, например из-за выявленных ошибок ввода, провести откат базы данных в исходное состояние (рис. 10.5). Пользователь А в этом случае будет предпринимать действия над ошибочными (данными. Иногда для такого рода проблем используется термин преждевременное чтение (Dirty read).

Image

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

Эта ситуация не приводит к искажению информации в базе данных и поэтому в некоторых ситуациях считается допустимой, Например в случае, если специалист проектирует форму отчета и в этом процессе получает черновые отчеты.

предыдущаяследующая