Л11_TRANS.ppt
- Количество слайдов: 18
Транзакции Корректное поддержание транзакций является основой обеспечения целостности баз данных, а также составляют базис изолированности пользователей в многопользовательских системах. Транзакция – это логическая единица работы, представляющая собой согласованное выполнение некоторого набора операций (элементарных), в результате выполнения которого БД переходит из одного согласованного состояния (S 1) в другое согласованное состояние (S 2). В процессе выполнения транзакции БД находится в несогласованном состоянии. БД (S 1) ROLLBACK БД (S 2) COMMIT Администратор (диспетчер) транзакций – системный компонент, обеспечивающий поддержку транзакций Основной принцип выполнения транзакции - «все или ничего» . (либо обеспечивается полное и правильное выполнения всех операций, составляющих транзакцию, либо возвращение БД в исходное состояние)
Транзакции Программа по обработке БД представляет собой согласованный набор транзакций. Основные свойства транзакций (АСИД=ACID): Атомарность (Atomicity) - выполняется все или ничего. Согласованность (Consistency) – транзакции обеспечивают перевод БД из одного зафиксированного согласованного состояния в другое. Изолированность (Isolation) – транзакции отделены одна от другой и «не видят» результаты выполнения друга до полного завершения. Долговечность (Durability) – результаты успешного выполнения транзакции должны сохраняться, даже если в следующий момент в системе происходят какие либо сбои. БД (S 1) БД (S 2) Ti БД (Si) БД (S 1) Tj БД (Sj) COMMIT БД (S 1) БД (S 2)
Журнализация изменений базы данных Надежность хранения баз данных предполагает, в частности, возможность восстановления согласованного состояния БД после любого рода аппаратных и программных сбоев. Для выполнения восстановлений необходима дополнительная информация, которая поддерживается в виде журнала изменений БД. Журнал (специальный файл регистрации изменений) хранит детали выполняемых операций. Моменты окончания транзакций записываются в журнал как точки фиксации (syncropoint). COMMIT устанавливает новую точку фиксации, а ROLLBACK – возвращает БД к предыдущей точке фиксации (перед началом данной транзакции). Ситуации, при которых требуется производить восстановление состояния БД: Ø Индивидуальный откат транзакции. Ø Восстановление после внезапной потери содержимого оперативной памяти (мягкий сбой). Теряется та часть БД, которая к моменту сбоя содержалась в буферах оперативной памяти. Ø Восстановление после поломки внешнего носителя базы данных (жесткий сбой). Основой восстановления является архивная копия и журнал изменений базы данных.
Журнализация и буферизация Для сокращения числа обращений к ВЗУ осуществляется буферизация данных в ОЗУ. При нормальной работе очередная страница буфера «выталкивается» во внешнюю память журнала только при полном заполнении записями. Протокол журнализации (и управления буферизацией) Write Ahead Log (WAL) - "пиши сначала в журнал", Запись об изменении объекта базы данных должна попадать во внешнюю память журнала раньше, чем измененный объект оказывается во внешней памяти базы данных. По заполнению страницы или завершению ВЗУ ОЗУ транзакции Буфер Файл Операция журнала изменения объекта БД Буфер БД БД Запись файла журнала содержит информацию, необходимую как для отмены операции, так и для ее повторного выполнения (используется структура двунаправленного списка) Идент. транз. время операция объект Значение Предыд. до после запись Послед. запись
Схема отката транзакции Журнал транзакций Ti: Операция 1 начало Выбрать первую запись списка Ti: Операция x Ti: Последняя операция Выбрать запись об очередной операции Выполнить «обратную» операцию Записать результат в журнал Список закончен? В общем журнале все записи относящиеся к одной транзакции связываются в двунаправленный список. Началом списка при откате транзакции является ее последняя операция Да Зафиксировать конец транзакции конец Нет
Восстановление после мягкого сбоя Состояние внешней памяти БД называется физически согласованным, если наборы страниц всех объектов согласованы, т. е. соответствуют состоянию объекта либо после его корректного изменения, либо до изменения. Контрольные точки (КТ) или tpc (time of physical consistency) точки – моменты времени, в которые во внешней памяти содержатся согласованные результаты операций, завершившихся до соответствующего момента времени, и отсутствуют результаты операций, которые не завершились, а буфер журнала вытолкнут во внешнюю память. КТ могут приниматься системой автоматически при накоплении в журнале определенного числа записей. При перезагрузке системы после мягкого сбоя журнал анализируется от контрольной точки. Любая транзакция, для которой на момент сбоя в файле журнала присутствуют записи «Начало транзакции» (begin transaction) и «Транзакция завершена» (commit transaction), должна быть выполнена повторно. Любая транзакция, для которой на момент сбоя в файле журнала присутствуют записи «Начало транзакции» (begin transaction) и «Отмена транзакции» (rollback transaction) – игнорируется при восстановлении (т. к. она не внесла реальных изменений в хранимую БД и отмены ее действий не требуется).
Восстановление после мягкого сбоя При записи КТ фиксируется список выполняемых в этот момент транзакций. К моменту мягкого сбоя возможны следующие состояния транзакций : redo Время При перезагрузке: Т 1 – не рассматривается; Т 2, Т 4 – выполняются повторно; Т 3, Т 5 - отменяются Т 1 Т 2 Т 3 не требует обработки Т 4 Т 5 (tpc) Контрольная точка (tf) Отказ системы Ø Для транзакции T 1 никаких действий производить не требуется (т. к. закончилась до момента tpc, и все ее результаты отражены во внешней памяти базы данных. ) Ø Для транзакции T 2 нужно повторно выполнить оставшуюся часть операций (т. к. во внешней памяти отсутствуют результаты операций, которые выполнялись в T 2 после момента tpc, а транзакция T 2 успешно завершилась до момента мягкого сбоя, в журнале содержатся записи обо всех изменениях, произведенных этой транзакцией).
Восстановление после мягкого сбоя Время redo Т 1 Т 2 Т 3 undo Т 4 (tpc) Контрольная точка При перезагрузке: Т 1 – не рассматривается; Т 2, Т 4 – выполняются повторно; Т 3, Т 5 - отменяются Т 5 (tf) Отказ системы игнорируется Ø Для транзакции T 3 нужно выполнить в обратном направлении первую часть операций (т. к. Т 3 не завершилась до сбоя, но результаты операций T 3, которые были выполнены до момента tpc присутствуют во вешней памяти). Ø Для транзакции T 4 нужно выполнить полную повторную прямую интерпретацию операций (т. к. началась после момента tpc и закончиться до момента сбоя). Ø Для транзакции T 5 никаких действий предпринимать не требуется (т. к. началась после момента tpc и результаты ее операций полностью отсутствуют во внешней памяти базы данных).
Восстановление после жесткого сбоя Основой восстановления после жесткого сбоя являются журнал и архивная копия базы данных. Восстановление начинается с обратного копирования базы данных из архивной копии. Затем все закончившиеся к моменту сбоя транзакции (завершение которых зафиксировано в журнале, но не отражено в БД) повторно выполняются в прямом направлении (redo). Архивация Исходная версия БД Архивная копия БД Текущий сеанс работы с БД 1 -й этап Рабочая версия БД Восстановление из архива Восстановленная версия БД 2 -й этап Важно выбрать рациональную политику архивации для базы данных !!! Журнал изменений БД Повторное выполнение транзакций
Транзакции и целостность баз данных Механизмы поддержания ограничений целостности предусматривают возможность нарушения целостности БД «внутри» транзакции, но должны обеспечивать соблюдение условий целостности БД к моменту завершения транзакции. Различаются два вида ограничений проверяемые и откладываемые. целостности: немедленно К немедленно проверяемым ограничениям целостности относятся такие ограничения, проверку которых бессмысленно или даже невозможно откладывать. Немедленно проверяемые ограничения соответствуют уровню отдельных операторов языкового уровня СУБД. При их нарушениях не производится откат транзакции, а лишь отвергается соответствующий оператор Откладываемые ограничения целостности - это ограничения на базу данных, а не на какие-либо отдельные операции. По умолчанию такие ограничения проверяются при завершении транзакции, и их нарушение вызывает автоматическую замену оператора COMMIT на оператор ROLLBACK
Параллелизм – возможность одновременной обработки системой многих транзакций с доступом к одним и тем же данным в одно и то же время. Обеспечивает повышение производительности системы, но порождает проблемы согласованности выполнения транзакций Основные проблемы, возникающие при параллельной обработке транзакций: Транзакция Время Транзакция А В Извлечение T 1 корт. Р T 2 Извлечение корт. Р Обновление T 3 корт. Р T 4 Обновление корт. Р Потеря результата обновления Транзакции А и В работают с одним и тем же кортежем Р. В момент времени Т 4 в результате обновления транзакцией В произойдет потеря обновления, произведенного транзакцией А в момент времени Т 3.
Параллелизм Основные проблемы, возникающие при параллельной обработке транзакций: Транзакция А Время Транзакция В T 1 Обновление корт. Р - - Извлечение корт. Р T 2 - - T 3 Отмена транзакции Незафиксированная зависимость В момент времени Т 2 транзакция А извлекает данные, обновленные в момент времени Т 1 транзакцией В. Но обновление отменяется в момент Т 3. Таким образом А выполняется на основе данных, которые предполагались в кортеже Р на момент Т 2, но небыли и не будут зафиксированы. Транзакция А Время Транзакция В В данном случае обновление, T 1 Обновление корт. Р производимое транзакцией А зависимо от изменений начатых в момент Т 1 и все обновления будут утрачены в момент времени Т 3, так кортеж будет возвращен к состоянию до Т 1. - - Обновление корт. Р T 2 - - T 3 Отмена транзакции Несовместимый анализ – возникает когда одна транзакция использует данные, которые в ходе ее выполнения изменяются другой транзакцией.
Механизм блокировок Одна из основных методик, позволяющих решать проблемы параллелизма – блокировка. Суть ее заключается в том, что объект, который в ходе выполнения транзакции не должен изменяться непредсказуемым образом и без ее ведома, блокируется от других транзакций. Существует два базовых типа блокировок: Ø блокировка без взаимного доступа (монопольная блокировка e. Xclusive locks – X -блокировка) Ø блокировка с взаимным доступом (Shared locks - S -блокировка). X S - X N N Y S N Y Y - Y Y Y Матрица совместимости X и S блокировок: Ø N – конфликтная ситуация (запрашиваемая блокировка не удовлетворяется) Ø Y- полная совместимость (запрос на блокировку удовлетворяется)
Механизм блокировок Протокол доступа к данным при использовании блокировок: 1. Транзакция перед извлечением кортежа накладывает на него S – блокировку 2. Транзакция перед блокировку обновлением кортежа накладывает X- 3. Если запрашиваемая блокировка отвергается из-за конфликта с имеющейся блокировкой, то транзакция переходит в состояние ожидания до снятия имеющейся блокировки 4. Установленная транзакции X-блокировка сохраняется до завершения Методика блокировок позволяет решать проблемы параллелизма, но порождает новую проблему – возникновение тупиковых ситуаций. Тупиковой называется ситуация, когда транзакции, наложив на один и тот же кортеж S – блокировки, одновременно ждут завершения друга Поиск выхода из тупиковой ситуации состоит в определении транзакции «жертвы» , отмена которой разорвет цикл ожидания и выведет систему из тупиковой ситуации.
Сериализация транзакций План (способ) выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций. Сериализация транзакций - это механизм их выполнения по некоторому сериальному плану. Обеспечение такого механизма является основной функцией компонента СУБД, ответственного за управление транзакциями. Система, в которой поддерживается сериализация транзакций обеспечивает реальную изолированность пользователей. Базовые подходы к сериализации транзакций: Ø использование синхронизационных захватов объектов базы данных Ø использовании временных меток. Оба подхода предполагают обнаружение конфликтов транзакций и их устранение.
Синхронизационные захваты Наиболее распространенным в централизованных СУБД (включая системы "клиент-сервер") является подход, основанный на соблюдении двухфазного протокола синхронизационных захватов объектов БД. Двухфазный протокол синхронизационных захватов - 2 PL выполнение транзакции разбивается на две фазы: первая фаза транзакции - накопление захватов; вторая фаза (фиксация или откат) - освобождение захватов. Возможные объекты захвата: Ø файл - физический (с точки зрения базы данных) объект, область хранения нескольких отношений и, возможно, индексов; Ø отношение - логический объект, соответствующий множеству кортежей данного отношения; Ø страница данных - физический объект, хранящий кортежи одного или нескольких отношений, индексную или служебную информацию; Ø кортеж (запись) - элементарный физический объект базы данных. В большинстве современных систем используются покортежные синхронизационные захваты.
Синхронизационные захваты Одним из наиболее существенных недостатков метода сериализации транзакций на основе синхронизационных захватов является возможность возникновение тупиков (deadlocks) между транзакциями. Граф ожидания транзакций - это ориентированный двудольный граф, в котором существует два типа вершин - вершины, соответствующие транзакциям, и вершины, соответствующие объектам захвата. Существует дуга, ведущая из вершины-транзакции к вершине-объекту, если для этой транзакции существует удовлетворенный захват объекта. Существует дуга из вершины-объекта к вершине-транзакции, если транзакция ожидает удовлетворения захвата объекта. Тi Dx Тj Dy Транзакции Объекты захвата Если в графе ожидания транзакций имеется хотя бы один цикл, то в системе существует ситуация тупика
Метод временных меток обеспечивает такой режим выполнения транзакции T 1 , начавшейся раньше транзакции T 2, как если бы T 1 была целиком выполнена до начала T 2. Каждая транзакция T имеет временную метку t (времени начала T). При выполнении операции над объектом r транзакция T помечает его своей временной меткой t (времени начала T) и типом операции (чтение-R или изменение-W). Любая транзакция Tx при обращении к объекту r анализирует имеющиеся у объекта временные метки и, в зависимости от ситуации: Ø Выполняется совместно с «неконфликтной» транзакцией Ty. Ø В случае конфликтной ситуации если t(Tx) < t(Ty) (Tx "старше" Ty), то Tx помечает объект своей меткой вызывая откат работавшей с объектом r транзакции Ty , в противном случае Tx получает новую временную метку и начинается заново Недостатком метода временных меток является потенциально более частые откаты транзакций, чем в случае использования синхронизационных захватов. Это связано с тем, что конфликтность транзакций определяется более грубо. Метод применяется в условиях редких конфликтов транзакций
Л11_TRANS.ppt