Учебное пособие Для студентов университетов Специальностей «Информатика», «Прикладная математика»



Pdf көрінісі
бет62/177
Дата15.02.2022
өлшемі2,58 Mb.
#25567
түріУчебное пособие
1   ...   58   59   60   61   62   63   64   65   ...   177
Метод  немедленного  обновления
.  При  использовании  этого  прото-
кола все изменения вносятся в БД сразу же после их выполнения в тран-
закции, не дожидаясь ее завершения. Помимо необходимости повторно-
го прогона изменений, выполненных транзакциями, закончившимися до 
появления сбоя, в данном случае может потребоваться выполнить откат 
изменений, внесенных транзакциями, которые не были завершены к это-
му моменту. При применении данного метода файл журнала использует-
ся с целью восстановления следующим образом. 
1.  При  запуске  транзакции  в  журнал  помещается  запись:  Начало 
транзакции. 
2. При выполнении любой операции записи помещаемая в файл жур-
нала строка содержит все указанные выше данные. 
3. Как только упомянутая выше запись будет помещена в файл жур-
нала, все выполненные обновления вносятся в буфера БД. 
4.  В  собственно  файлы  БД  изменения  будут  внесены  при  очередной 
разгрузке буферов БД во вторичную память. 
5. Когда транзакция завершает свое выполнение, в файл  журнала за-
носится запись: Транзакция завершена. 
 
77


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


 


Достарыңызбен бөлісу:
1   ...   58   59   60   61   62   63   64   65   ...   177




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет