Леонид Борчук - Базы данных: Атомарность транзакций,...
TRANSCRIPT
![Page 1: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/1.jpg)
1
Борчук Леонид
Базы данных: Атомарность транзакций, способы ведения
журналов транзакций и принципы построения транзакционных систем высокой доступности
![Page 2: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/2.jpg)
2
Зачем нужны транзакции
Отказ системы, вызванный отказом элемента, который не может быть заменен запасным из-за отсутствия последнего, считается системным
Избежать системных отказов невозможно
Транз кция (англ. transaction) — группа последовательных ааопераций, которая либо выполняется целиком, либо не выполняется вовсе
Транзакции
![Page 3: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/3.jpg)
3
Примеры системных отказов
Ошибочные элементы данных Разрушение носителя Катастрофа Сбой системы Программные ошибки – деление на ноль и т.д.
Транзакции
![Page 4: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/4.jpg)
4
Свойства транзакции
Atomicity — Атомарность
Consistency — Согласованность
Isolation — Изоляция
Durability — Долговечность
Транзакции
![Page 5: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/5.jpg)
5
Менеджер транзакций
Транзакции
Процессор запросов
Менеджер транзакций
Менеджер протоколирования
Менеджер буфера
Менеджер восстановления
данные
Менеджер транзакций
протокол
![Page 6: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/6.jpg)
6
Пример транзакции
Транзакции
Операция t A в памяти B в памяти A на диске B на диске
READ(A,t) 8 8 8 8
t:=t*2 16 8 8 8
WRITE(A,t) 16 16 8 8
READ(B,t) 8 16 8 8 8
t:=t*2 16 16 8 8 8
WRITE(B,t) 16 16 16 8 8
OUTPUT(A) 16 16 16 16 8
OUTPUT(B) 16 16 16 16 16
A:=A*2;B:=B*2;
READ(A,t); t:=t*2; WRITE(A,t);READ(B,t); t:=t*2; WRITE(B,t);
![Page 7: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/7.jpg)
7
Протоколирование
Обеспечивает атомарность транзакции;
Содержит записи действий транзакции;
Чередует записи нескольких транзакций;
Используется для воссоздания согласованного состояния в случае аварии;
Может вестись разными способами (redo, undo).
Транзакции
![Page 8: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/8.jpg)
8
Протоколирование в режиме undo
Регламентируют деятельность менеджера буферов и предусматривают выполнение действий при фиксации транзакции.
U1: Если транзакция T модифицирует элемент X базы данных, то запись обновления <T,X,v> должна быть занесена в протокол до сохранения нового значения элемента X на диске.
U2: При фиксации результатов транзакции T запись <COMMIT T> следует помещать в протокол после сбрасывания всех измененных значений элементов базы данных на диск, причем интервал между сохранением данных и записью <COMMIT T> должен быть минимально коротким.
Undo
![Page 9: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/9.jpg)
9
Правила
Порядок сохранения информации транзакции T в режиме undo
1. Записи протокола, свидетельствующие об изменениях, внесенных в содержимое элементов базы данных;
2. Новые значения элементов базы данных как таковых;
3. Запись <COMMIT T> протокола.
4. FLUSH LOG – команда форсирования записи блоков протокола менеджером на диск.
Undo
![Page 10: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/10.jpg)
10
Записи протокола
<START T> - выполнение транзакции T начато.
<COMMIT T> - транзакция T успешно завершена. Результаты всех операций модификации должны быть зафиксированы на диске. Менеджер протоколирования подтверждает этот факт.
<ABORT T> - транзакция отменена. Никакие изменения транзакции на диске не отображаются. Если результаты уже были на диске, то они аннулируются менеджером транзакций.
<T,X,v> - записи обновления. Транзакция T изменила прежнее содержимое v элемента X. Ответ на операцию WRITE, а не OUTPUT. Сохраняется только старое значение элемента X.
Undo
![Page 11: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/11.jpg)
11
Пример
.
Undo
Операция t A в памяти
B в памяти
A на диске
B на диске
Протокол
<START T>
READ(A,t) 8 8 8 8
t:=t*2 16 8 8 8
WRITE(A,t) 16 16 8 8 <T,A,8>
READ(B,t) 8 16 8 8 8
t:=t*2 16 16 8 8 8
WRITE(B,t) 16 16 16 8 8 <T,B,8>
OUTPUT(A) 16 16 16 16 8
OUTPUT(B) 16 16 16 16 16
<COMMIT T>
FLUSH LOG
![Page 12: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/12.jpg)
12
Восстановление
.
Undo
Возможна ситуация, когда в результате сбоя некоторые изменения были зафиксированы на диске, в то время как другие – нет. Нарушается принцип атомарности.Ответственность за восстановление возлагается на менеджер восстановления.Менеджер восстановления сканирует журнал и разделяет все транзакции на: - завершенные (в журнале есть запись <COMMIT T>) – в
этом случае по правилу U2 все изменения уже записаны на диск.
- незавершенные (есть запись <START T>, но нет <COMMIT T>) – для восстановления используется правило U1
![Page 13: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/13.jpg)
13
Алгоритм восстановления
.
Undo
Протокол сканируется весь начиная от конца к началу.
Встречая запись вида <T,X,v>:
Если T является зафиксированной транзакцией, то никакие действия не предпринимаются;
В противном случае T – незавершенная транзакция. Элементу X должно быть возвращено старое значение v.
![Page 14: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/14.jpg)
14
Пример восстановления
.
Undo
Сбой произошел после шага 12.
Сбой произошел после операции 11 перед операцией 12.
Сбой произошел между операциями 10 и 11.
Сбой произошел после операции 8.
Сбой произошел до операции 8.
![Page 15: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/15.jpg)
15
Особенности
.
Undo
во время восстановления анализируется вся копия протокола;
размер протокола очень большой.
При этом: записи помеченные <COMMIT T> для
восстановления уже не нужны; в одно и то же время может быть несколько
активных транзакций — в общем случае одна из них может начинаться где угодно.
![Page 16: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/16.jpg)
16
Контрольная точка
.
Undo
Приостановить прием запросов на активацию новых транзакций.
Дождаться, пока все действующие транзакции не выполнят операции фиксации или прерывания транзакций.
Осуществить сброс протокола на диск командой FLUSH LOG.
Внести в протокол запись вида <CKPT> и выполнить его повторный сброс.
Возобновить прием транзакций.
![Page 17: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/17.jpg)
17
Контрольная точка
.
Undo
В результате:
Любая транзакция, приступившая к работе до введения контрольной точки, будет гарантированно завершена (U2).
В процессе восстановления необходимость в отмене операций такой транзакции не возникает.
Сканирование журнала можно начинать не с начала, а с записи <CKPT>.
Часть протокола до записи <CKPT> может быть удалена.
![Page 18: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/18.jpg)
18
Пример
.
Undo
<START T1>
<T1,A,5>
<START T2>
<T2,B,10>
<T2,C,15>
<T1,D,20>
<COMMIT T1>
<COMMIT T2>
<CKPT>
<START T3>
<T3,E,25>
<T3,F,30>
![Page 19: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/19.jpg)
19
Недостаток контрольной точки для протоколирования в режиме undo
.
Undo
приостановка функционирования системы до момента завершения всех активных транзакций;активная транзакция может длиться долго, для всех остальных система будет выглядеть зависшей.
![Page 20: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/20.jpg)
20
Динамическая контрольная точка
.
Undo
1. Внести в протокол запись вида <START CKPT (T1..Tk)>, где T1..Tk — активные транзакции; сбросить протокол на диск.2. Дождаться момента завершения или прерывания всех активных транзакций T1..Tk, не запрещая старта новых транзакций.3. По завершении работы всех транзакций T1..Tk сохранить в протоколе запись <END CKPT> и выполнить команду FLUSH LOG.
![Page 21: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/21.jpg)
21
Восстановление при динамической контрольной точке
.
Undo
Менеджер восстановления сканирует журнал от конца к началу с целью отыскать транзакции. Возможны 2 ситуации:
1. Если первой встречается запись вида <END CKPT>, то все незавершенные транзакции начались после последней записи <START CKPT (T1..Tk)>, так что восстановление можно начинать не с начала протокола, а с этой записи;
![Page 22: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/22.jpg)
22
Восстановление при динамической контрольной точке
.
Undo
2. Если первой встречается запись <START CKPT (T1..Tk)>, то отказ произошел в момент выполнения контрольной точки. Незавершенными могут быть только транзакции (T1..Tk). Восстановление можно начинать с момента возникновения самой ранней из этих транзакций. К сожалению, момент начала часто бывает далеко.
![Page 23: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/23.jpg)
23
Пример восстановления при динамической контрольной точке
.
Undo
<START T1>
<T1,A,5>
<START T2>
<T2,B,10>
<START CKPT (T1,T2)>
<T2,C,15>
<START T3>
<T1,D,20>
<COMMIT T1>
<T3,E,25>
<COMMIT T2>
<END CKPT>
<T3,F,30>
![Page 24: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/24.jpg)
24
Протоколирование в режиме redo
.
Redo
Недостатки undo: невозможность выполнения фиксации транзакции без предварительного сохранения всех измененных данных на диск. критично для коротких транзакций. операции ввода-вывода можно оптимизировать с использованием протоколирования в режиме redo
![Page 25: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/25.jpg)
25
Отличия redo и undo
.
Redo
1. В процессе восстановления данных с использованием undo устраняются изменения, внесенные незавершенными транзакциями , и игнорируются результаты завершенных транзакций. Если применяется протокол redo, игнорируются незавершенные транзакции, а итоги выполнения зафиксированных транзакций воспроизводятся.
2. В режиме протоколирования undo измененные элементы базы данных сохраняются на диске до момента сброса записи <COMMIT T>. В режиме redo запись <COMMIT T> должна появиться на диске прежде, чем будут сохранены измененные значения.
![Page 26: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/26.jpg)
26
Правила redo
.
Redo
R1: Прежде чем транзакция T сможет модифицировать элемент X базы данных на диске, необходимо внести в копию протокола на диске все записи, имеющие отношение к операции модификации X, включая запись обновления вида <T,X,v> и <COMMIT T>
Форма записи совпадает с undo
![Page 27: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/27.jpg)
27
Алгоритм записи redo
.
Redo
1. Записи обновления, отражающие изменения, которым должны подвергнуться элементы базы данных.
2. Запись <COMMIT T>.
3. Модифицированные значения элементов базы данных как таковые
![Page 28: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/28.jpg)
28
Пример
.
Redo
Операция t A в памяти B в памяти
A на диске
B на диске
Протокол
<START T>
READ(A,t) 8 8 8 8
t:=t*2 16 8 8 8
WRITE(A,t) 16 16 8 8 <T,A,16>
READ(B,t) 8 16 8 8 8
t:=t*2 16 16 8 8 8
WRITE(B,t) 16 16 16 8 8 <T,B,16>
<COMMIT T>
FLUSH LOG
OUTPUT(A) 16 16 16 16 8
OUTPUT(B) 16 16 16 16 16
![Page 29: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/29.jpg)
29
Восстановление
Redo
Неизвестно, какие записи успели попасть на диск, так что для надежности нужно повторить все изменения.
1. Идентифицировать все зафиксированные транзакции.
2. Сканировать протокол от начала к концу. Встречая запись вида <T,X,v>:
a) игнорировать ее, если T является незавершенной транзакций;
b) сохранить на диске значение v элемента X, если транзакция T завершена.
3. Для каждой незафиксированной транзакции T сохранить в журнале запись <ABORT T> и выполнить команду FLUSH LOG
![Page 30: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/30.jpg)
30
Контрольная точка
Redo
Особенности: Данные на диск записываются после фиксации транзакции.Менеджер буфера должен отслеживать, какие из блоков буфера являются «грязными» - содержат зафиксированные данные, не сброшенные на диск
![Page 31: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/31.jpg)
31
Контрольная точка
Redo
1. Внести в протокол запись вида <START CKPT (T1,...,Tk)>, где T1,...,Tk — активные транзакции, после чего выполнить сброс протокола командой FLUSH LOG
2. Сохранить на диске «грязные» блоки данных транзакций, завершенных до начала контрольной точки
3. Сохранить в протоколе запись <END CKPT> и выполнить команду FLUSH LOG
![Page 32: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/32.jpg)
32
Пример
Redo
<START T1>
<T1,A,5>
<START T2>
<COMMIT T1>
<T2,B,10>
<START CKPT (T2)>
<T2,C,15>
<START T3>
<T3,D,20>
<END CKPT>
<COMMIT T2>
<COMMIT T3 >
![Page 33: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/33.jpg)
33
Восстановление
Redo
Менеджер восстановления сканирует журнал от конца к началу с целью отыскать транзакции. Возможны 2 ситуации:
1. Если первой встречается запись вида <END CKPT>, то все завершенные транзакции до записи <START CKPT (T1..Tk)> сохранены на диске. Но записи транзакций T1..Tk и стартовавших после контрольной точки на диск не попали. Следует начать восстановление с самой ранней записи <START Ti>.
![Page 34: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/34.jpg)
34
Восстановление
Redo
2. Если первой встречается запись <START CKPT (T1..Tk)>, то отказ произошел в момент выполнения контрольной точки. Нельзя гарантировать, что все транзакции, завершенные к моменту начала контрольной точки, попали на диск. Поэтому нужно переместиться к первой записи <END CKPT> и повторить действия п.1.
![Page 35: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/35.jpg)
35
Пример
Redo
<START T1>
<T1,A,5>
<START T2>
<COMMIT T1>
<T2,B,10>
<START CKPT (T2)>
<T2,C,15>
<START T3>
<T3,D,20>
<END CKPT>
<COMMIT T2>
<COMMIT T3 >
![Page 36: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/36.jpg)
36
Режим undo/redo
Undo/Redo
1. Режим undo требует, чтобы измененные данные сохранялись на диске непосредственно по завершению транзакции, что чревато увеличением количества дисковых операций.
2. Режим redo требует хранения модифицированных блоков данных в буфере до момента завершения транзакции. Это увеличивает требования к оперативной памяти.
3. Использование обоих режимов сопряжено с необходимостью удовлетворения противоречивых требований, касающихся проблемы управления буфером памяти в процессе ведения контрольной точки.
![Page 37: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/37.jpg)
37
Правило
Undo/Redo
UR: Прежде чем транзакция T сможет модифицировать элемент X базы данных на диске, необходимо внести в копию протокола на диске соответствующую запись обновления <T,X,v,w>
Запись <COMMIT T> допускается включать в протокол до или после записи блоков данных на диск.
![Page 38: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/38.jpg)
38
Пример
Undo/Redo
Операция t A в памяти B в памяти
A на диске
B на диске
Протокол
<START T>
READ(A,t) 8 8 8 8
t:=t*2 16 8 8 8
WRITE(A,t) 16 16 8 8 <T,A,8,16>
READ(B,t) 8 16 8 8 8
t:=t*2 16 16 8 8 8
WRITE(B,t) 16 16 16 8 8 <T,B,8,16>
<COMMIT T>
FLUSH LOG
OUTPUT(A) 16 16 16 16 8
OUTPUT(B) 16 16 16 16 16
![Page 39: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/39.jpg)
39
Восстановление
Undo/Redo
1. Повторить операции всех зафиксированных транзакций в порядке от более ранних к более поздним
2. Отменить результаты всех незавершенных транзакций в обратном хронологическом порядке.
Обе группы действий одинаково важны, как и их порядок.
![Page 40: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/40.jpg)
40
Динамическая контрольная точка в режиме протоколирования Undo/Redo
Undo/Redo
1. Внести в протокол запись вида <START CKPT (T1,...,Tk)>, где (T1,...,Tk) — все активные транзакции, и сбросить протокол на диск командой FLUSH LOG.
2. Сохранить на диске информацию всех «грязных» буферов, независимо от того, зафиксированы они или нет.
3. Сохранить в протоколе запись <END CKPT> и выполнить команду FLUSH LOG
![Page 41: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/41.jpg)
41
Пример
Undo/Redo
<START T1>
<T1,A, 4, 5>
<START T2>
<T2,B,9,10>
<COMMIT T1>
<START CKPT (T2)>
<T2,C,14,15>
<START T3>
<T3,D,19,20>
<END CKPT>
<COMMIT T2>
<COMMIT T3 >
![Page 42: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/42.jpg)
42
Резервное копирование
Undo/Redo
Оперативная память
Диск Backup
Цель: защита от отказа дискового устройства
Резервная копия – база данных в состоянии в момент архивирования
![Page 43: Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы](https://reader033.vdocuments.pub/reader033/viewer/2022042700/55833018d8b42adb148b4b58/html5/thumbnails/43.jpg)
43
Резервное копирование
Undo/Redo
Чтобы воссоздать свежее состояние БД, после ее восстановления нужно воспользоваться протоколом, если он доступен.
Чтобы защититься от потери протокола, его копию следует сохранять в том же месте, где хранится архив .
Виды резервной копии:Полный дамп, т.е. исчерпывающая копия БДИнкрементальный дамп – копии тех элементов, что изменились с прошлого резервного копирования
Процесс восстановления напоминает восстановление в режиме “redo”
Недостаток: необходимо останавливать БД для создания резервной копии