SlideShare a Scribd company logo
1 of 43
Download to read offline
1 
Базы данных: Атомарность 
транзакций, способы ведения 
журналов транзакций и принципы 
построения транзакционных 
систем высокой доступности 
Борчук Леонид
2 
Зачем нужны транзакции 
Отказ системы, вызванный отказом элемента, который не 
может быть заменен запасным из-за отсутствия последнего, 
считается системным 
Избежать системных отказов невозможно 
Транз кция (англ. transaction) — г ааруппа последовательных 
операций, которая либо выполняется целиком, либо не 
выполняется вовсе 
Транзакции
3 
Примеры системных отказов 
 Ошибочные элементы данных 
 Разрушение носителя 
 Катастрофа 
 Сбой системы 
 Программные ошибки – деление на ноль 
 и т.д. 
Транзакции
4 
Свойства транзакции 
Atomicity — Атомарность 
Consistency — Согласованность 
Isolation — Изоляция 
Durability — Долговечность 
Транзакции
5 
Менеджер транзакций 
Процессор 
запросов 
Транзакции 
Менеджер 
транзакций 
Менеджер 
протоколирования 
Менеджер 
буфера 
Менеджер 
восстановления 
протокол 
данные
Операция 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; 
6 
Пример транзакции 
Транзакции 
READ(A,t); t:=t*2; WRITE(A,t); 
READ(B,t); t:=t*2; WRITE(B,t);
7 
Протоколирование 
Обеспечивает атомарность транзакции; 
Содержит записи действий транзакции; 
Чередует записи нескольких транзакций; 
Используется для воссоздания 
согласованного состояния в случае аварии; 
Может вестись разными способами (redo, 
undo). 
Транзакции
8 
Протоколирование в режиме 
undo 
Регламентируют деятельность менеджера буферов и 
предусматривают выполнение действий при фиксации транзакции. 
U1: Если транзакция T модифицирует элемент X базы данных, то 
запись обновления <T,X,v> должна быть занесена в протокол до 
сохранения нового значения элемента X на диске. 
U2: При фиксации результатов транзакции T запись <COMMIT T> 
следует помещать в протокол после сбрасывания всех измененных 
значений элементов базы данных на диск, причем интервал между 
сохранением данных и записью <COMMIT T> должен быть 
минимально коротким. 
Undo
9 
Правила 
Порядок сохранения информации транзакции T в 
режиме undo 
1. Записи протокола, свидетельствующие об 
изменениях, внесенных в содержимое элементов 
базы данных; 
2. Новые значения элементов базы данных как таковых; 
3. Запись <COMMIT T> протокола. 
4. FLUSH LOG – команда форсирования записи блоков 
протокола менеджером на диск. 
Undo
10 
Записи протокола 
<START T> - выполнение транзакции T начато. 
<COMMIT T> - транзакция T успешно завершена. Результаты 
всех операций модификации должны быть зафиксированы 
на диске. Менеджер протоколирования подтверждает этот 
факт. 
<ABORT T> - транзакция отменена. Никакие изменения 
транзакции на диске не отображаются. Если результаты 
уже были на диске, то они аннулируются менеджером 
транзакций. 
<T,X,v> - записи обновления. Транзакция T изменила прежнее 
содержимое v элемента X. Ответ на операцию WRITE, а не 
OUTPUT. Сохраняется только старое значение элемента X. 
Undo
11 
Пример 
Операция t A в 
. 
Undo 
памяти 
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
Возможна ситуация, когда в результате сбоя некоторые 
изменения были зафиксированы на диске, в то время как 
другие – нет. Нарушается принцип атомарности. 
Ответственность за восстановление возлагается на менеджер 
восстановления. 
Менеджер восстановления сканирует журнал и разделяет 
все транзакции на: 
- завершенные (в журнале есть запись <COMMIT T>) – в 
этом случае по правилу U2 все изменения уже записаны 
на диск. 
- незавершенные (есть запись <START T>, но нет <COMMIT 
T>) – для восстановления используется правило U1 
12 
Восстановление 
. 
Undo
Протокол сканируется весь начиная от конца к 
началу. 
Встречая запись вида <T,X,v>: 
Если T является зафиксированной транзакцией, то 
никакие действия не предпринимаются; 
В противном случае T – незавершенная 
транзакция. Элементу X должно быть возвращено 
старое значение v. 
13 
Алгоритм восстановления 
. 
Undo
14 
Пример восстановления 
Сбой . 
произошел после шага 12. 
Сбой произошел после операции 11 перед 
операцией 12. 
Сбой произошел между операциями 10 и 
11. 
Сбой произошел после операции 8. 
Сбой произошел до операции 8. 
Undo
 во время восстановления анализируется вся 
копия протокола; 
 размер протокола очень большой. 
При этом: 
 записи помеченные <COMMIT T> для 
восстановления уже не нужны; 
 в одно и то же время может быть несколько 
активных транзакций — в общем случае одна 
из них может начинаться где угодно. 
15 
Особенности 
. 
Undo
16 
Контрольная точка 
 Приостановить прием запросов на 
. 
активацию новых транзакций. 
 Дождаться, пока все действующие 
транзакции не выполнят операции фиксации 
или прерывания транзакций. 
 Осуществить сброс протокола на диск 
командой FLUSH LOG. 
 Внести в протокол запись вида <CKPT> и 
выполнить его повторный сброс. 
 Возобновить прием транзакций. 
Undo
17 
Контрольная точка 
В результате: 
Любая . 
транзакция, приступившая к работе до 
введения контрольной точки, будет 
гарантированно завершена (U2). 
В процессе восстановления необходимость в 
отмене операций такой транзакции не возникает. 
Сканирование журнала можно начинать не с 
начала, а с записи <CKPT>. 
Часть протокола до записи <CKPT> может быть 
удалена. 
Undo
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>
19 
Недостаток контрольной точки для 
протоколирования в режиме undo 
. 
приостановка функционирования системы 
до момента завершения всех активных 
транзакций; 
активная транзакция может длиться 
долго, для всех остальных система будет 
выглядеть зависшей. 
Undo
20 
Динамическая контрольная 
точка 
1. Внести в протокол запись вида 
<START CKPT (T1..Tk)>, где T1..Tk — активные 
транзакции; сбросить протокол на диск. 
2. Дождаться момента завершения или прерывания 
всех активных транзакций T1..Tk, не запрещая старта 
новых транзакций. 
3. По завершении работы всех транзакций T1..Tk 
сохранить в протоколе запись <END CKPT> и 
выполнить команду FLUSH LOG. 
. 
Undo
21 
Восстановление при динамической 
контрольной точке 
Менеджер восстановления сканирует журнал от 
конца к началу с целью отыскать транзакции. 
Возможны 2 ситуации: 
1. Если первой встречается запись вида <END 
CKPT>, то все незавершенные транзакции 
начались после последней записи <START CKPT 
(T1..Tk)>, так что восстановление можно 
начинать не с начала протокола, а с этой записи; 
. 
Undo
22 
Восстановление при динамической 
контрольной точке 
2. Если первой встречается запись 
<START CKPT (T1..Tk)>, то отказ произошел в 
момент выполнения контрольной точки. 
Незавершенными могут быть только 
транзакции (T1..Tk). Восстановление можно 
начинать с момента возникновения самой 
ранней из этих транзакций. К сожалению, 
момент начала часто бывает далеко. 
. 
Undo
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>
24 
Протоколирование в режиме 
redo 
Недостатки undo: 
 невозможность выполнения фиксации 
транзакции без предварительного 
сохранения всех измененных данных на 
диск. 
 критично для коротких транзакций. 
 операции ввода-вывода можно 
оптимизировать с использованием 
протоколирования в режиме redo 
. 
Redo
1. В процессе восстановления данных с использованием undo 
устраняются изменения, внесенные незавершенными 
транзакциями , и игнорируются результаты завершенных 
транзакций. Если применяется протокол redo, игнорируются 
незавершенные транзакции, а итоги выполнения 
зафиксированных транзакций воспроизводятся. 
2. В режиме протоколирования undo измененные элементы 
базы данных сохраняются на диске до момента сброса записи 
<COMMIT T>. В режиме redo запись <COMMIT T> должна 
появиться на диске прежде, чем будут сохранены измененные 
значения. 
25 
Отличия redo и undo 
. 
Redo
R1: Прежде чем транзакция T сможет модифицировать 
элемент X базы данных на диске, необходимо внести в 
копию протокола на диске все записи, имеющие отношение 
к операции модификации X, включая запись обновления 
вида <T,X,v> и <COMMIT T> 
26 
Правила redo 
. 
Форма записи совпадает с undo 
Redo
1. Записи обновления, отражающие изменения, 
которым должны подвергнуться элементы базы 
данных. 
2. Запись <COMMIT T>. 
3. Модифицированные значения элементов базы 
данных как таковые 
27 
Алгоритм записи redo 
. 
Redo
28 
Пример 
Операция t A в памяти B в 
. 
Redo 
памяти 
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
29 
Восстановление 
Неизвестно, какие записи успели попасть на диск, так что для 
надежности нужно повторить все изменения. 
1. Идентифицировать все зафиксированные транзакции. 
2. Сканировать протокол от начала к концу. Встречая запись 
вида <T,X,v>: 
a) игнорировать ее, если T является незавершенной 
транзакций; 
b) сохранить на диске значение v элемента X, если 
транзакция T завершена. 
3. Для каждой незафиксированной транзакции T сохранить в 
журнале запись <ABORT T> и выполнить команду FLUSH 
LOG 
Redo
Особенности: Данные на диск 
записываются после фиксации транзакции. 
Менеджер буфера должен отслеживать, 
какие из блоков буфера являются 
«грязными» - содержат зафиксированные 
данные, не сброшенные на диск 
30 
Контрольная точка 
Redo
1. Внести в протокол запись вида <START 
CKPT (T1,...,Tk)>, где T1,...,Tk — активные 
транзакции, после чего выполнить сброс 
протокола командой FLUSH LOG 
2. Сохранить на диске «грязные» блоки данных 
транзакций, завершенных до начала 
контрольной точки 
3. Сохранить в протоколе запись <END CKPT> 
и выполнить команду FLUSH LOG 
31 
Контрольная точка 
Redo
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 >
33 
Восстановление 
Менеджер восстановления сканирует журнал от 
конца к началу с целью отыскать транзакции. 
Возможны 2 ситуации: 
1. Если первой встречается запись вида <END 
CKPT>, то все завершенные транзакции до записи 
<START CKPT (T1..Tk)> сохранены на диске. Но 
записи транзакций T1..Tk и стартовавших после 
контрольной точки на диск не попали. Следует 
начать восстановление с самой ранней записи 
<START Ti>. 
Redo
34 
Восстановление 
2. Если первой встречается запись 
<START CKPT (T1..Tk)>, то отказ произошел 
в момент выполнения контрольной точки. 
Нельзя гарантировать, что все транзакции, 
завершенные к моменту начала контрольной 
точки, попали на диск. Поэтому нужно 
переместиться к первой записи <END CKPT> 
и повторить действия п.1. 
Redo
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 >
1. Режим undo требует, чтобы измененные данные сохранялись 
на диске непосредственно по завершению транзакции, что 
чревато увеличением количества дисковых операций. 
2. Режим redo требует хранения модифицированных блоков 
данных в буфере до момента завершения транзакции. Это 
увеличивает требования к оперативной памяти. 
3. Использование обоих режимов сопряжено с необходимостью 
удовлетворения противоречивых требований, касающихся 
проблемы управления буфером памяти в процессе ведения 
контрольной точки. 
36 
Режим undo/redo 
Undo/Redo
UR: Прежде чем транзакция T сможет 
модифицировать элемент X базы данных на 
диске, необходимо внести в копию протокола на 
диске соответствующую запись обновления 
<T,X,v,w> 
Запись <COMMIT T> допускается включать 
в протокол до или после записи блоков данных 
на диск. 
37 
Правило 
Undo/Redo
38 
Пример 
Операция t A в памяти B в 
Undo/Redo 
памяти 
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
Обе группы действий одинаково важны, как и 
их порядок. 
39 
Восстановление 
1. Повторить операции всех зафиксированных 
транзакций в порядке от более ранних к более 
поздним 
2. Отменить результаты всех незавершенных 
транзакций в обратном хронологическом 
порядке. 
Undo/Redo
40 
Динамическая контрольная точка в режиме 
протоколирования Undo/Redo 
1. Внести в протокол запись вида <START 
CKPT (T1,...,Tk)>, где (T1,...,Tk) — все 
активные транзакции, и сбросить протокол на 
диск командой FLUSH LOG. 
2. Сохранить на диске информацию всех 
«грязных» буферов, независимо от того, 
зафиксированы они или нет. 
3. Сохранить в протоколе запись <END CKPT> 
и выполнить команду FLUSH LOG 
Undo/Redo
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 >
42 
Резервное копирование 
Undo/Redo 
Оперативная память 
Диск Backup 
Цель: защита от отказа дискового устройства 
Резервная копия – база данных в состоянии в момент 
архивирования
Чтобы воссоздать свежее состояние БД, после ее 
восстановления нужно воспользоваться протоколом, если он 
доступен. 
Чтобы защититься от потери протокола, его копию следует 
сохранять в том же месте, где хранится архив . 
Виды резервной копии: 
Полный дамп, т.е. исчерпывающая копия БД 
Инкрементальный дамп – копии тех элементов, что 
изменились с прошлого резервного копирования 
Процесс восстановления напоминает восстановление в 
режиме “redo” 
Недостаток: необходимо останавливать БД для создания 
резервной копии 
43 
Резервное копирование 
Undo/Redo

More Related Content

More from Yandex

Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 
Эталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовЭталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовYandex
 
Поиск списков в неструктурированных данных
Поиск списков в неструктурированных данныхПоиск списков в неструктурированных данных
Поиск списков в неструктурированных данныхYandex
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыYandex
 

More from Yandex (20)

Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 
Эталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатовЭталонное описание фильма на основе десятков дубликатов
Эталонное описание фильма на основе десятков дубликатов
 
Поиск списков в неструктурированных данных
Поиск списков в неструктурированных данныхПоиск списков в неструктурированных данных
Поиск списков в неструктурированных данных
 
Производительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформыПроизводительность параметрического поиска на основе опенсорс-платформы
Производительность параметрического поиска на основе опенсорс-платформы
 

Леонид Борчук - Базы данных: Атомарность транзакций, способы ведения журналов транзакций и принципы построения транзакционных систем высо

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