Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
88
Добавлен:
10.02.2015
Размер:
41.18 Кб
Скачать

Метод восстановления с использованием немедленного обновления

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

  • При запуске транзакции в журнал помещается запись начала транзакции.

  • При выполнении любой операции записи помещаемая в файл журнала строка содержит все указанные выше данные.

  • Как только упомянутая выше запись будет помещена в файл журнала, все выполненные обновления вносятся в буфера базы данных.

  • Обновления записываются в саму базу данных при каждом очередном сбросе буферов базы данных во вторичную память.

  • После фиксации транзакции в файл журнала заносится запись фиксации транзакции.

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

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

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

Соседние файлы в папке Базы данных(1 курс, 2 семестр,2011-2012)