Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Транзакции и сериализация транзакций.

Поиск

Транзакция – неделимая с точки зрения воздействия на СУБД последовательность действий манипулирования данными выполняющееся по принципу «все или ничего» и переводящая БД из одного целостного состояния в другое. При завершении транзакции оператором COMMITрезультаты гарантированно фиксируются во внешней памяти. При завершении транзакции оператором ROLLBAСK результаты гарантированно отсутствуют во внешней памяти. Транзакции обладают 4 важными свойствами (АСИД):

- атомарность – транзакция представляет собой набор законченных действий, выполнение которых происходит по принципу все или ничего;

- согласованность – транзакция переводит БД из одного согласованного состояния (целостного) в другое;

- изолированность – при выполнении транзакции данные могут находиться некоторое время в несогласованном состоянии, такие данные не должны быть видны другим транзакциям до завершения изменений. Таким образом, система обеспечивает каждой транзакции иллюзию изолированного выполнения;

- долговечность – если транзакция зафиксирована, то есть завершилась оператором COMMIT, то ее результаты должны быть долговечны.

Целостность БД соответствие имеющейся в БД информации, ее внутренней логике, структуре и всем явно заданным правилам. Каждое правило, налагающие некоторые ограничения на возможные состояния БД называется ограничением целостности. Целостность БД не гарантирует достоверности этой информации, однако обеспечивает ее правдоподобность, отвергая невероятные невозможные значения. Конкурирующие транзакции – это транзакции, которые пересекаются по времени их исполнения и обращаются к одним и тем же данным. В результате конкуренции за данными могут возникнуть следующие виды конфликтов:

- write-write(запись-запись) – первая транзакция изменила объект и не завершилась, а вторая транзакция пытается изменить этот же объект, в результате происходит потеря обновлений.

- read-write (чтение-запись) – первая транзакция прочитала объект и не завершилась, а вторая транзакция пытается изменить этот же объект, в результате происходит несовместимый анализ данных.

-write-read(запись-чтение) – первая транзакция изменяла объект и не завершилась, вторая транзакция пытается прочитать этот объект, в результате происходит чтение «грязных» данных.

Уровни изолированности информации.

Предельной задачей системы является обеспечение изолированности пользователей т.е. создание надежной и достоверной иллюзии, того что каждый пользователь работает с БД в одиночку. Для обеспечения целостности БД используются следующие уровни изолированности:

1. Отсутствие потерянных изменений – транзакция1 изменяет объект БД А. До завершения транзакции1 транзакция2 также изменяет объект А. Транзакция2 завершается оператором ROLLBACK, тогда при повторном чтении объекта А транзакция1 не видит изменений этого объекта произведенных ранее. Такая ситуация называется ситуацией потерянных изменений. Для избежания требуются чтобы до завершения транзакции1 никакая другая транзакция не смогла изменять объект А.

2. Отсутствие чтения «грязных» данных - транзакция1 изменяет объект БД А. Параллельно с этим транзакция2 читает объект А, т.к. транзакция1 еще не завершена, то транзакция2 видит несогласованные «грязные» данные. Чтобы избежать ситуацию чтения грязных данных до завершения транзакции1 изменяющей объект А никакая другая транзакция не должна читать объект А.

3. Отсутствие неповторяющихся чтений – транзакция1 читает объект А. До завершения транзакции1 транзакция2 изменяет объект А и успешно завершается командой COMMIT. Транзакция1 повторно читает объект А и видит его измененное состояние для того чтобы избежать неповторяющихся чтений до завершения транзакции1 никакая транзакция не должна изменять объект А.

Сериализация транзакций.

План выполнения набора транзакций называется сериальным, если результат совместного выполнения транзакций эквивалентен результату некоторого последовательного выполнения этих же транзакций.

Сериализация транзакций – механизм выполнения транзакций по некоторому сериальному плану. Система, в которой поддерживается сериализациятранзакций, обеспечивает реальную изолированность пользователя, суть которой состоит в обнаружении конфликтов между транзакциями и их устранение. Для реализации сериализации транзакции используют метод синхронизационных захватов и метод временных меток. К данным методам применяются следующие подходы:

1. Пессимистический (если конфликты возникают часто между транзакциями, конфликты распознаются и разрешаются немедленно при их возникновении).

2. Оптимистический (заключается в том, что результаты всех модификаций БД сохранятся в рабочей памяти транзакции, реальная модификация БД происходит на стадии фиксации транзакции. Тогда же проверяется не возникают ли конфликты с другими транзакциями)

Синхронизационные захваты. Тупики

Суть метода заключается в том что перед выполнением любой операции транзакции Т над объектом базы данных О от имени транзакции Т запрашивается синхронизационный захват объекта О в соответствующем режиме в зависимости от вида операции.

Режимы синхронизационных захватов:

-совместный режим (shared- S)- означает, что захват объекта разделяется между транзакциями. Применяется для выполнения операции чтения объекта.

- монопольный режим (exclusive – X) – означает монопольный захват объекта и требует выполнения операций занесения модификации и удаления данных.

Одним из наиболее минусов это тупики. Можно представить два подхода к обнаружению тупиковых ситуаций:

- СУБД не следит за обнаружение тупиков, транзакции сами принимают решение, кто из них будет жертва;

- за возникновением тупиков следит сама СУБД, она же и принимает решение какой транзакцией пожертвовать.

Метод временных меток

Основная суть метода заключается в следующем – если транзакция Т1 началась раньше Т2, то система обеспечивает такой режим выполнения, как если бы Т1 была целиком выполнена до начала Т2. Для каждой транзакции предписывается временная метка, соответствующая началу транзакции. Для каждой транзакции Т предписывается временная метка «т» которой помечается объект Р, так же указывается тип операции. Перед выполнением операции над объектом Р транзакция Т1 выполняет следующие действия:

- проверяет не закончилась ли транзакция Т так же пометившая этот объект, если Т закончилось, то Т1 помечает объект Р и выполняет свою операцию.

- Если транзакция Т не завершилась, то Т1 проверяет конфликтность операций. Если операции не конфликтны то при объекте Р остается или устанавливается временная метка «т1» и транзакция Т1 выполняется.

- Если транзакцияТи Т1 конфликтны, то проверяется если «т» больше «т1», то транзакция Т является более молодой чем Т1 производится откат Т и Т1 продолжает свою работу

- если Т старше Т1, то Т1 получает новую временную метку и начинается заново.

18.10.2013

Журнализация изменений БД.

Одним из основных требований к современным СУБД является надежность хранения БД. Это требование предполагает возможность восстановления согласованного состояния БД после любого рода программных и аппаратных сбоев. Для этого необходимо некоторая дополнительная информация, которая содержится в виде журнала изменений БД. Таким образом, цель журнализации изменений БД обеспечение возможности согласованного состояния БД после любого сбоя. Общие принципы восстановления:

- результаты зафиксированных транзакций должны быть сохранены в восстановленном состоянии БД,

-результаты незафиксированных транзакций не должны быть сохранены в восстановленной БД.

Ситуации при которых необходимо восстанавливать состояние БД:

1. Индивидуальный откат транзакций (транзакция завершена оператором ROLLBACK) – такие операции могут возникать при возникновении исключительных моментов в прикладной программе (деление на 0, выбор транзакции в виде жертвы при тупике и т.д.). Для восстановления БД нужно устранить последствия операторов модификации БД которые выполнялись в этой транзакции.

2. «мягкий» сбой (внезапная потеря содержимого оперативной памяти) – ситуация характеризуется потерей той части БД, которая к моменту сбоя содержалась в буферах ОП.

3. «жёсткий» сбой (поломка основного носителя БД) – даже в таких случаях СУБД должна быть в состоянии восстановить БД. Основой для восстановления послужат журнал изменений БД и ее архивная копия.

Для восстановления во всех случаях необходимы избыточные данные содержащие последовательность записи. Эти записи и содержатся в журналах изменения БД.

Существуют 2 основных варианта ведения журнальной информации:

- для каждой транзакции поддерживается отдельный локальный журнал изменений, кроме этого поддерживается общий журнал изменений БД для восстановления БД после «мягких» и «жестких» сбоях.

- данный подход позволяет быстро устранять индивидуальные откаты и восстановления БД после «мягких» и «жестких» сбоях. Основан на поддержании только общего журнала изменений БД, который используется и при выполнении индивидуальных откатов.

23.10.2013



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 445; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.249.89 (0.009 с.)