Тема_10 (1122364), страница 4
Текст из файла (страница 4)
Базы данных51ЖурнализВосстановление после мягкого сбоя (12)Восстановление физической согласованности базы данных (3)Теневой механизм (2)Примодификациилюбого блокафайла вовнешней памятивыделяетсяновый блокПри этом текущаятаблицаотображенияизменяется, а теневая остается неизменнойЕсли во время работы с открытым файлом происходит сбой,в основной памятиво внешней памяти автоматически сохраняется состояние файла до егооткрытияДля явного восстановления файла достаточно повторно считать восновную память теневую таблицу отображения17.12.2009С.Д.Кузнецов. Базы данных52ЖурнализВосстановление после мягкого сбоя (13)Восстановление физической согласованности базы данных (4)Теневой механизм (3)В контексте базы данных теневой механизмиспользуется следующим образомПериодически выполняются операции установкиточки физической согласованности базы данныхПри выполнении этой операциивсе логические операции завершаются,выталкиваются все страницы буферного пула базыданных, содержимое которых отличается отсодержимого соответствующих блоков внешней памятитеневая таблица отображения файлов (сегментов)базы данных заменяется текущей таблицейотображенияoправильнее сказать, текущая таблица отображениязаписывается на место теневой17.12.2009С.Д.Кузнецов.
Базы данных53ЖурнализВосстановление после мягкого сбоя (14)Восстановление физической согласованности базы данных (5)Теневой механизм (4)Здесь имеется некоторая проблема, состоящая в том, чтов любой момент времени теневая таблица отображения должна бытькорректной,oт.е. соответствовать некоторому ранее зафиксированному физическицелостному состоянию базы данныхДля этого необходимо обеспечить атомарность операции заменытеневой таблицы отображенияВ общем случае таблица отображения может занимать несколькоблоков внешней памяти, и для записи текущей таблицыотображения на место теневой таблицы в этом случае потребуетсянесколько обменов с дискамиЕсли в промежутке между этими обменами возникнет мягкий сбой,то будетблагополучно утрачена текущая таблица отображения ибезнадежно испорчена теневая таблица,oт.е.
мы просто лишимся возможности восстанавливаться за счетиспользования последнего физически согласованного состояния базыданных17.12.2009С.Д.Кузнецов. Базы данных54ЖурнализВосстановление после мягкого сбоя (15)Восстановление физической согласованности базы данных (6)Теневой механизм (5)Чтобы это не произошло, во внешней памятиподдерживаются две области хранения таблицыотображения файловбудем называть их областями A и BКроме того, в отдельном блоке внешней памятихранится флаг F, показывающий,какая из этих областей в данный момент содержитдействующую теневую таблицу отображенияoназовем соответствующие значения флага FA и FBТогда, если сохраненным во внешней памятизначением флага является FA, тотекущая таблица отображения записывается в областьB17.12.2009С.Д.Кузнецов.
Базы данных55ЖурнализВосстановление после мягкого сбоя (16)Восстановление физической согласованности базы данных (7)Теневой механизм (6)Если эта операция выполняется успешно, то вблок флага записывается значение FBСчитается, что операция записи одного блока надиск является атомарнойЕсли эта операция заканчивается успешно, этоозначает, чтоновая теневая таблица отображения хранится вобласти BЕсли же запись текущей таблицы отображения вобласть B не удалась, или если не выполниласьоперация записи блока с флагом F, топродолжает действовать старая теневая таблицаотображения17.12.2009С.Д.Кузнецов. Базы данных56ЖурнализВосстановление после мягкого сбоя (17)Восстановление физической согласованности базы данных (8)Теневой механизм (7)Восстановление хронологически последнегосохраненного физически согласованногосостояния базы данных происходит мгновенно:текущая таблица отображения заменяет теневойтаблицейoпри восстановлении просто считывается действующаятеневая таблица отображенияВсе проблемы восстановления решаются, но засчет слишком большого перерасхода внешнейпамятиВ пределе может потребоваться вдвое большевнешней памяти, чем реально нужно для хранениябазы данных17.12.2009С.Д.Кузнецов.
Базы данных57ЖурнализВосстановление после мягкого сбоя (18)Восстановление физической согласованности базы данных (9)Журнализация постраничных изменений (1)Возможен другой подход, при использовании которогонаряду с логической журнализацией операций изменениябазы данных производится журнализация постраничных измененийПервый этап восстановления после мягкого сбоя состоит в постраничном откате недовыполненных логических операцийПодобно тому, как это делается с логическими записями поотношению к транзакциям, последней записью о постраничных изменениях от однойлогической операции является запись о конце операцииВообще, выполнение логических операций уровня RSSносит транзакционный характер17.12.2009С.Д.Кузнецов.
Базы данных58ЖурнализВосстановление после мягкого сбоя (19)Восстановление физической согласованности базы данных (10)Журнализация постраничных изменений (2)В частности, как уже отмечалось раньше, при выполнениилогической операции обновления базы данных, вообщеговоря, изменяется несколько блоков базы данныхДля обеспечения возможности отката отдельной операции а это может потребоваться, например, если обнаруживаетсянарушение свойства уникальности какого-либо индексаприходится до конца операции монопольно блокировать все страницы буферного пула базы данных,oсодержащие копии изменяемых этой операцией блоков базыданных17.12.2009С.Д.Кузнецов.
Базы данных59ЖурнализВосстановление после мягкого сбоя (20)Восстановление физической согласованности базы данных (11)Журнализация постраничных изменений (3)Чтобы распознать, нуждается ли страница внешней памяти базыданных в восстановлении, при выталкивании любой страницы избуферного пула основной памяти в нее помещаетсяЭтот же номер запоминается в самой записиЧтобы понять, нужно ли применить данную запись о постраничномизменении соответствующего блока внешней памяти длявосстановления состояния этого блока,номер последней записи о постраничном изменении этой страницытребуется всего лишь сравнить номер, содержащийся в этом блоке, сномером, содержащимся в журнальной записиЕсли в блоке содержится номер, меньший номера журнальнойзаписи, то это означает, что буферная страница, в которойвыполнялось соответствующее изменение,не была к моменту мягкого сбоя вытолкнута во внешнюю память, иприменять данную запись для восстановления соответствующего блокавнешней памяти не требуется17.12.2009С.Д.Кузнецов.
Базы данных60ЖурнализВосстановление после мягкого сбоя (21)Восстановление физической согласованности базы данных (12)Журнализация постраничных изменений (4)Пять записей обизменении блока bс номерами n-2, n-1,n, n+1, n+2В блоке b содержитсяномер nЭто означает, что в состоянии блока отраженырезультаты операций изменения блока,соответствующих журнальным записям LR(b)n,LR(b)n-1 и LR(b)n-217.12.2009С.Д.Кузнецов. Базы данных61ЖурнализВосстановление после мягкого сбоя (22)Восстановление физической согласованности базы данных (13)Журнализация постраничных изменений (5)Изменения блока,произведенныеоперациями, которымсоответствуют двехронологическипоследние журнальные записиLR(b)n+1 и LR(b)n+2, в егосостоянии во внешней памятине отражены, поскольку не было выполненовыталкивание во внешнюю память страницы буферногопула, содержащей копию блока bПоэтому при восстановлении состояния блока требуетсявыполнить обратные операции изменения блока b, соответствующие журнальным записям LR(b) , LR(b)nn-1 иLR(b)n-217.12.2009С.Д.Кузнецов.
Базы данных62ЖурнализВосстановление после мягкого сбоя (23)Восстановление физической согласованности базы данных (14)Журнализация постраничных изменений (6)В этом подходе имеются два поднаправленияВ первом поднаправлении поддерживаетсяобщий журнал логических и страничныхоперацийЕстественно, наличие двух видов записей,усложняет структуру журналаКроме того, записи о постраничных изменениях,актуальность которых носит локальный характер,существенноинтерпретируемых абсолютно по-разному,и не очень осмысленноувеличивают журнал17.12.2009С.Д.Кузнецов.
Базы данных63ЖурнализВосстановление после мягкого сбоя (24)Восстановление физической согласованности базы данных (15)Журнализация постраничных изменений (7)Поэтому распространено поддержаниеотдельногожурнала постраничных измененийТакой журнал обычно называют физическимжурналом,короткогопоскольку он содержит записи об изменениифизических объектов – блоков внешней памятиВ отличие от этого, журнал логических операцийпринято называть логическим журналом,поскольку в нем содержатся записи об операциях надлогическими объектами – кортежами17.12.2009С.Д.Кузнецов.
Базы данных64ЖурнализВосстановление после мягкого сбоя (25)Восстановление физической согласованности базы данных (16)Журнализация постраничных изменений (8)Как уже отмечалось, логический и физическийжурналы имеют разную природуВо-первых, логический журнал долженподдерживатькак обратное выполнение журнализованных операций(undo),так и их повторное прямое выполнение (redo)В отличие от этого, от физического журналатребуется только поддержка обратноговыполнения постраничных операций17.12.2009С.Д.Кузнецов. Базы данных65ЖурнализВосстановление после мягкого сбоя (26)Восстановление физической согласованности базы данных (17)Журнализация постраничных изменений (9)Во-вторых, логический журнал обычно начинаетзаполняться заново только после выполненияопераций резервного копирования базы данныхили архивирования самого журналаДо этого времени он линейно растетПонятно, что в любом случае для размещенияжурнала выделяется внешняя памятьограниченного размераПредельный размер журнала определяетсяадминистратором базы данных и долженсогласовываться с размером интервалавремени, через которое производится резервноекопирование базы данных17.12.2009С.Д.Кузнецов.