Тема_10 (1122364), страница 3
Текст из файла (страница 3)
Базы данных34ЖурнализБуферизация блоков базы данных в основной памяти (24)Протокол упреждающей записи в журнал (5)При следовании протоколу WAL,если во внешней памяти базы данных находитсянекоторый объект базы данных, по отношению ккоторому выполнена операция модификации,то во внешней памяти журнала обязательно находитсязапись, соответствующая этой операцииОбратное неверно, т.е.если во внешней памяти журнала содержится запись онекоторой операции изменения объекта базы данных,то сам измененный объект может отсутствовать вовнешней памяти базы данных17.12.2009С.Д.Кузнецов.
Базы данных35ЖурнализБуферизация блоков базы данных в основной памяти (25)Протокол упреждающей записи в журнал (6)Дополнительное условие на выталкивание буферовнакладывается тем требованием, что каждая успешно завершенная транзакция должна бытьреально зафиксирована во внешней памятиКакой бы сбой не произошел, система должна быть в состоянии восстановить состояниебазы данных, содержащее результаты всех транзакций,зафиксированных до момента сбояСамым простым решением было бы выталкивание буфера журнала, за которым следует массовое выталкивание буферов страниц базы данных,изменявшихся данной транзакциейДовольно часто так и делают, но это вызываетсущественные накладные расходы при выполненииоперации фиксации транзакции17.12.2009С.Д.Кузнецов.
Базы данных36ЖурнализБуферизация блоков базы данных в основной памяти (26)Протокол упреждающей записи в журнал (7)Оказывается, что минимальным требованием, гарантирующимявляетсявыталкивание при фиксации транзакции во внешнюю память журналавсех записей об изменении базы данных этой транзакциейПри этом последней записью в журнал, производимой от имениданной транзакции, являетсявозможность восстановления последнего согласованного состояниябазы данных,специальная запись о конце транзакцииРассмотрим теперь, как можно выполнять операциивосстановления базы данных в различных ситуациях,если в системе поддерживается общий для всех транзакций журнал собщей буферизацией записей,oподдерживаемый в соответствии с протоколом WAL17.12.2009С.Д.Кузнецов. Базы данных37ЖурнализИндивидуальный откат транзакции(1)Для обеспечения возможности индивидуального отката транзакции по общемужурналу все записи в журнале от данной транзакции связываются в обратныйсписокВ начале списка для незавершенных транзакций находится запись о последнемизменении базы данных, произведенном данной транзакциейДля закончившихся транзакцийиндивидуальные откаты которых уже невозможныначалом списка является запись о конце транзакции, которая обязательновытолкнута во внешнюю память журнала,в этом случае хронологически последние записи могут быть еще не вытолкнуты вовнешнюю память журнала и могут находиться в буфере основной памятит.е.
весь список находится во внешней памятиКонцом списка всегда служит первая запись об изменении базы данных,произведенном данной транзакциейОбычно в каждой записи проставляется уникальный идентификатор транзакции,чтобы можно было восстановить прямой список записей об изменениях базы данныхданной транзакцией17.12.2009С.Д.Кузнецов. Базы данных38ЖурнализИндивидуальный откат транзакции(2)Итак, индивидуальный откат транзакцииэто возможно только для незавершенных транзакцийвыполняется следующим образом:Выбирается очередная журнальная запись из спискаданной транзакции.Выполняется противоположная по смыслу операция:oooвместо операции INSERT выполняется соответствующаяоперация DELETE,вместо операции DELETE выполняется INSERT, ивместо прямой операции UPDATE – обратная операцияUPDATE, восстанавливающая предыдущее состояниеобъекта базы данных17.12.2009С.Д.Кузнецов.
Базы данных39ЖурнализИндивидуальный откат транзакции(3)Любая из этих обратных операций также журнализуетсяСобственно для индивидуального отката это не нужно,oно при выполнении индивидуального отката транзакцииможет произойти мягкий сбой, при восстановлении послекоторого потребуется откатить транзакции,•для которых не полностью выполнен индивидуальный откатПри успешном завершении отката в журнал заноситсязапись о конце транзакцииoС точки зрения журнала такая транзакция являетсязафиксированной17.12.2009С.Д.Кузнецов.
Базы данных40ЖурнализВосстановление после мягкого сбоя(1)К числу основных проблем восстановленияпосле мягкого сбоя относится то, что одналогическая операция изменения базы данныхможет изменять несколько физических блоковбазы данных,например, блок данных и несколько блоков индексовБлоки базы данных буферизуются в оперативнойпамяти и выталкиваются независимоПосле мягкого сбоя набор блоков внешнейпамяти базы данных может оказатьсянесогласованным,т.е. часть блоков внешней памяти соответствуетобъекту до изменения, часть – после изменения.17.12.2009С.Д.Кузнецов.
Базы данных41ЖурнализВосстановление после мягкого сбоя(2)Например, в результате выполнения операцииUPDATE соответствующий кортеж могпереместиться в другой блокВ этом случае изменяются два блока:в описатель кортежа в его исходном блокезаписывается его новый tid,а в новом блоке размещается сам модифицированныйкортежОчевидно, что если хотя бы один из этих блоковне попал во внешнюю память базы данных кмоменту мягкого сбоя, то при восстановлении неудастся вернуть кортеж на его прежнее место17.12.2009С.Д.Кузнецов.
Базы данных42ЖурнализВосстановление после мягкого сбоя(3)Другими словами, к такому состояниювнешней памяти базы данных неприменимы операции логического уровняСостояние внешней памяти базы данныхназывается физически согласованным,если наборы страниц всех объектовсогласованы,т.е. соответствуют состоянию любого объекталибо после его изменения, либо до изменения17.12.2009С.Д.Кузнецов. Базы данных43ЖурнализВосстановление после мягкого сбоя(4)Схемавосстановления от точки физической согласованности (1)Будем считать, что в журнале отмечаются точки физическойсогласованности базы данных – моменты времени, в которые вовнешней памятисодержатся согласованные результаты операций, завершившихся досоответствующего момента времени,и отсутствуют результаты операций, которые не завершились,а буфер журнала вытолкнут вовнешнюю памятьПозже мы обсудим, как можнодостичь физическойсогласованностиНазовем такие точки ppc(point of physical consistency)Все возможные состояниятранзакций к моменту мягкогосбоя показаны на рисунке17.12.2009С.Д.Кузнецов.
Базы данных44ЖурнализВосстановление после мягкого сбоя(5)Схема восстановления от точки физической согласованности (2)Предположим, чтокаким-то образомудалось восстановитьвнешнюю память базыданных к состоянию намомент времени tppc как это можно сделать,обсудим позжеТогда восстановлениепоследнего по времени логически целостного состояниябазы данных производится следующим образом Для транзакции T1 никаких действий производить нетребуетсяoОна закончилась до момента tppc, и все ее результатыгарантированно отражены во внешней памяти базы данных17.12.2009С.Д.Кузнецов. Базы данных45ЖурнализВосстановление после мягкого сбоя(6)Схемавосстановления от точки физической согласованности (3)Для транзакции T2 нужноповторно выполнить (redo)последовательностьопераций,oДействительно, во внешнейпамяти полностью отсутствуютследы операций, которыевыполнялись в транзакции T2 после момента tppcСледовательно, повторное прямоеoкоторыевыполнялись послеустановки точкифизически согласованногосостояния в момент tppcпо смыслу и хронологиивыполнение операций транзакции T2 корректно и приведет к логическисогласованному состоянию базы данныхoПоскольку транзакция T2 успешно завершилась до момента мягкого сбоя tfs,в журнале содержатся записи обо всех изменениях базы данных,произведенных этой транзакцией17.12.2009С.Д.Кузнецов.
Базы данных46ЖурнализВосстановление после мягкого сбоя(7)Схемавосстановления от точки физической согласованности (4)Для транзакции T3 нужновыполнить в обратномнаправлении (undo) тучасть операций,oДействительно, во внешней памятибазы данных полностью отсутствуютрезультаты операций T3, которыебыли выполнены после моментаtppcС другой стороны, во внешней памяти гарантированно присутствуютрезультаты операций T3, которые были выполнены до момента tppcСледовательно, обратное выполнениеoкоторуюона успела выполнить домомента tppcпо смыслу и хронологииопераций T3 корректно и приведет к согласованному состоянию базыданныхoПоскольку транзакция T3 не завершилась к моменту мягкого сбоя tfs, привосстановлении необходимо устранить все последствия ее выполнения17.12.2009С.Д.Кузнецов. Базы данных47ЖурнализВосстановление после мягкого сбоя(8)Схема восстановления от точки физической согласованности (5)Для транзакции T4,которая успеланачаться послемомента tppc изакончиться домомента мягкогосбоя tfs,ooнужно произвести полное повторное выполнениеопераций в прямом направленииПоскольку транзакция T4 успешно завершилась домомента мягкого сбоя tfs, в журнале содержатся записиобо всех изменениях базы данных, произведенных этойтранзакцией17.12.2009С.Д.Кузнецов.
Базы данных48ЖурнализВосстановление после мягкого сбоя(9)Схема восстановления от точки физической согласованности (6)Наконец, длятранзакции T5,начавшейсяпосле моментаtppc и неуспевшейзавершиться к моменту мягкого сбоя tfs,ooникаких действий предпринимать не требуетсяРезультаты операций этой транзакции полностьюотсутствуют во внешней памяти базы данных17.12.2009С.Д.Кузнецов. Базы данных49ЖурнализВосстановление после мягкого сбоя (10)Восстановление физической согласованности базы данных (1)Каким же образом можно обеспечить наличиеточек физической согласованности базы данных,т.е. как восстановить состояние базы данных в моментtppc?Для этого используются два основных подхода:подход, основанный на использовании теневогомеханизма, иподход, в котором применяется журнализацияпостраничных изменений базы данных17.12.2009С.Д.Кузнецов.
Базы данных50ЖурнализВосстановление после мягкого сбоя (11)Восстановление физической согласованности базы данных (2)Теневой механизм (1)Теневоймеханизм былизначальнопредложен дляподдержкицелостностифайлов приаварийномотключениипитания компьютераФайл представляется как набор блоков внешней памяти, для доступа к которым поддерживается таблицаотображенияПри открытии файла таблица отображения номеров егологических блоков в адреса физических блоков внешнейпамяти считывается в оперативную память17.12.2009С.Д.Кузнецов.