Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по БД new.doc
Скачиваний:
11
Добавлен:
18.09.2019
Размер:
687.62 Кб
Скачать

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

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

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

  • При выполнении любой операции записи помещаемая в файл журнала строка содержит все указанные выше данные (за исключением значения элементов данных до обновления). Реально запись изменений в буфера СУБД или саму базу данных не производится.

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

  • В случае отмены выполнения транзакции записи журнала по данной тран­закции аннулируются и не выводятся на диск.

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

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

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

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

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