Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.62 Mб
Скачать
  1. Сервисы управления параллельностью

СУБД имеет механизм, который гарантирует корректное обновление базы данных при параллельном выполнении операций обновления многими пользователями.

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

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

Рассмотрим параллельно выполняемые транзакции Т1 и Т2, последовательность выполнения которых представлена в табл. 6.1.

Таблица 6.1. Пример возникновения проблемы “потерянного обновления”

Время

Транзакция

Транзакция

Столбец

Чтение

100

Чтение

100

Запись

200

Запись

90

90

В транзакции Т1 10 грв. снимается со счета, баланс которого сохраняется в столбце balx, а в транзакции Т2 100 грв. помещается на этот же счет. Если бы транзакции выполнялись последовательно, т.е. одна за другой, без чередования отдельных операций, то в конечном итоге баланс был бы равен 190 грв., независимо от порядка выполнения транзакций. В, противном случае может возникнуть следующая ситуация. Допустим, что транзакции Т1 и Т2 стартовали практически одновременно и прочли исходное значение баланса, равное 100 грв. Затем транзакция Т2 увеличивает это значение на 100 грв. (до 200 грв.) и сохраняет полученное значение в базе данных. Немедленно после этого транзакция Т1 уменьшает свою копию считанного исходного значения на 10 грв. (до 90 грв.) и сохраняет полученное значение в базе данных вместо только что записанного результата предыдущего обновления, вследствие чего возникает эффект "потери" 100 грв.

СУБД должна гарантировать, что при одновременном доступе к базе данных многих пользователей подобных конфликтов не произойдет.

  1. Сервисы восстановления

СУБД предоставляет средства восстановления базы данных на случай какого-либо ее повреждения или разрушения.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]