русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Управление транзакциями


Дата добавления: 2015-07-09; просмотров: 719; Нарушение авторских прав


Поддержание механизма транзакции – показатель развитости СУБД. Корректное поддержание транзакции одновременно является основой обеспечения целостности БД, а также составляет базис изолированности пользователей в многопользовательских СУБД.

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

При завершении операции оператором COMMIT результаты фиксируются во внешней памяти. При завершении оператором ROLLBACK – гарантировано отсутствуют во внешней памяти.

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

Различают 2 вида ограничения целостности:

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

2 – откладываемое ограничение – ограничения, которые проверяются в конце транзакции.

Изолированность пользователей

 

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

Выделяют следующие уровни изолированности транзакций:



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

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

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

4 – кортежи-фантомы – транзакция 1 выполняет оператор A в выборке кортежей отношения R. До её завершения транзакция 2 вставляет в отношение R новый кортеж, удовлетворяющий условию, и успешно завершается. Транзакция 1 повторно выполняет оператор A и в результате видит кортеж, который отсутствовал при первом выполнении оператора.

 

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

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

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

Сериализация транзакций – это механизм их выполнения по некоторому сериальному плану, который не слишком бы ограничивал их параллельность.

Между транзакциями могут существовать следующие виды конфликтов:

1 – транзакция 2 пытается изменить объект, изменяемый не закончившейся транзакцией 1

2 – транзакция 2 пытается изменить объект, прочитанный не закончившейся транзакцией 1

3 – транзакция 2 пытается читать объект, изменяемый не закончившейся транзакцией 1

Методы сериализации транзакций:

1 – подход, основанный на синхронизационных захватах объектов БД

2 - подход, основанный на использовании временных меток

Обнаруживают конфликты и устраняют их.

Наиболее распространенным в централизованных СУБД является подход, основанный на соблюдении двухфазного протокола синхронизационных захватов объектов БД. Протокол состоит в том, что перед выполнением любой операции в транзакции T над объектом БД R от имени транзакции T запрашивается синхронизационный захват объекта R в соответствующем режиме.

Режимы захвата:

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

2 – монопольный режим – монопольный захват объекта и требуемый для операций вставки, удаления, модификации.

Захваты объектов несколькими транзакциями по чтению совместимы, т.е. нескольким транзакциям допускается читать один и тот же объект. Все остальные операции являются несовместимыми.

Для обеспечения сериализации транзакций синхронизационные захваты объектов, произведенные по инициативе транзакций, можно снимать только при её завершении. Это требует двухфазный протокол. В соответствии с этим протоколом выполнение разбивается на две фазы:

1 – накопление;

2 – освобождение.

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

Граф ожидания транзакций – ориентированный двудольный граф, в котором существуют 2 вида вершин: вершины, соответствующие транзакциям и вершины, соответствующие объектам захвата. Также существует дуга от вершины транзакции к вершине объекта, если для этой транзакции существует удовлетворенный захват объекта. Также существует дуга из вершины объекта к вершине транзакции, если транзакция ожидает удовлетворение захвата объекта.

Если в графе ожидания транзакции существует хотя бы 1 цикл, то существует возможность тупика.

Разрушение тупика начинается с выбора в цикле транзакции, так называемой, транзакцией жертвы, т.е. транзакции, которой решено пожертвовать, чтобы обеспечить возможность обеспечения других транзакций. Выбирается самая дешевая. Стоимость определяется на основе оценки, в которую входит время выполнения, число накопленных затратов и приоритет. При выборе такой транзакции производится её откат, вследствие чего осуществляется освобождение захватов, произведенные этой транзакцией.

Существует, альтернативны метод, хорошо работающий в условии редких конфликтов, не требующий построения графа ожидания – метод временных меток. Основная идея:

Если Т1 началась раньше Т2, то система обеспечивает такой режим выполнения, как если бы Т1 была бы полностью закончена до начала Т2. Для каждой Т предписывает временная метка t, соответствующая времени начала транзакции. При выполнении Т над объектом R, Т помечает его своей временной меткой и типом операции.

Перед выполнением операции над объектом R Т1 выполняет следующее:

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

2 – если Т не завершилась, то Т1 проверяет конфликтность операций. Если операции неконфликтны, при объекте R остается метка с меньшим значением и Т1 выполняет свою операцию.

3 – если Т1 и Т конфликтуют, то если t(Т) > t(T1) производится откат Т и Т1 продолжает работу.

4 – если t(T)<t(T1), то Т1 получает новую временную метку и начинается заново.

Недостатки: более частые откаты транзакций, в отличие от синхронизационных захватов.



<== предыдущая лекция | следующая лекция ==>
Проектирование и нормализация БД | Элементы языка SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.