Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Что такое транзакция. Транзакции и целостность БД




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

Операция считается транзакцией, если она удовлетворяет требованиям ACID-теста (Atomicity, Consistency, Isolation, Durability атомарность, согласованность, изолированность, долговечность).

Атомарность:Транзакция может заканчиватся commit-результаты фиксируются, rollback- ликвидировать результаты транзакции.

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

Изолированность – паралельно выполняющиеся транзакции не мешают друг другу.

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

Виды ограничений целостности в распределенных ИС

Делятся на: немедленно проверяемые(связано с операторами, нету отката транзакции, просто отвергается операция, до конца транзакции откладывать проверку нет смысла, сотруднику 100 лет нет) и откладываемые – накладываются на всю БД или на несколько таблиц, ограничения проверяются, когда транзакция заканчивается(существует и принудительная проверка, когда есть подозрение на нарушение целостности, транзакция прерывается, идет обращение к пользователю), если что происходит откат.

Уровни изолированности транзакций (УИТ)

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

При соблюдении целостности возможны следующие нарушения изолированности пользователей и соответствующие им уровни изолированности транзакций:

0) отсутствие потерянных изменений

1) отсутствие чтения грязных данных;

2) отсутствие неповторяющихся чтений

3) кортежи-фантомы

УИТ: отсутствие потерянных изменений

2 транзакции, 1 вносит изм, 2 вносит изм до первой, но заканчивается оп. Ролбек, тогда первая транзакция не видит изменений

УИТ: отсутствие чтения грязных данных

1 транзакция меняет объект А, 2 транзакция читает об А, 2 транзакц при этом видит грязную инф.Как избежать? Блокировка чтения объекта А до окончания транзакции 1.

УИТ: отсутствие неповторяющихся чтений

Транз 1 читает об А, в это время транз 2 успешно поменяла объект А, приходится повторно читать об А.Как изб? До завершения транз 1 никакая другая транз не имеет права менять об А.

УИТ: кортежи-фантомы.

Т1 вибирает кортеж с отношения R c условием выборки S. До завершения Т1, Т2 вставляет в R новый кортеж г, удовлетворяющий условию S и завершается. Т1 повторно выполняется и появляется новый кортеж.

Требуется логический уровень синхронизации транзакций.

Сериализация транзакций. Конфликт между транзакциями

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

Конфликты:

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

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

W-R – Т2 пытается читать объект, измененный не закончившейся Т1.

Существуют два базовых подхода к сериализации транзакций:

основанный на синхронизационных захватах объектов базы данных;

основанный на использовании временных меток.

Синхронизационные захваты

Наиболее распространенными является подход, оснований на соблюдении 2-фазного протокола, синхронизационных захватов объектов БД. Существует 2 режима синхронизационных захватов:

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

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

2-фазный протокол 2PL:

1) первая фаза транзакции – накопление захватов

2) вторая фаза – освобождение захватов

Какие же объекты брать для захвата, это могут быть кортежи, отношения, страницы. Используются покортежные синхронизационные захваты.

При соблюдении 2ух фазной синхронизации обеспечивается 3тий уровень изолированности.

Гранулированные синхронизационные захваты.

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

IS – при намерении читать кортеж из R это отношение должно быть захвачено в IS ( а до этого в таком же режиме должен быть захвачен файл); IX – при намерении удалять кортежи из R это отношение должно быть захвачено в IХ ( а до этого в таком же режиме должен быть захвачен файл); SIX – если выполняется длинная операция просмотра отношения с возможностью удалений некоторых просматриваемых кортежей, то экономичнее захватить в режиме SIX, а до этого – файл в режиме IS.

Предикатные синхронизационные захваты.

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

R – отношение с атрибутами a1…aп; m1…mп – множества допустимых значений соответствующих атрибутов. Можно сопоставить R конечное п-мерное пространство возможных значений кортежей R. Любое простое условие вырезает m-мерный прямоугольник в этом пространстве(m<=n). Если эти прямоугольники не пересекаются, то предикатные захваты от разных транзакций совместимы.

Понятие тупика.

Тупики – ситуация, когда некая транзакция может ожидать бесконечно.

Например Т1 и Т2 захватили монопольно объекты 1 и 2.После этого Т1 тербуется совместный захват о1, а Т2 совм захват о2.И они ожидают бесконечно. Одним из недостатков метода синхронизации транзакции на основе синхронизационных захватов является возможность возникновения тупиков между транзакциями. Тупики возможны всегда и при гранулированном и предикатном методах. Тупики необходимо обнаруживать и искусственно истреблять.

Граф ожидания транзакций

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

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

Хорошо работает в условиях редких конфликтов и не требует построения графа ожидания транзакции. Для каждой транзакции Т предписывается временная метка t соответствующая времени начала T. При выполнении операции над объектом Г транзакция Т помечает его своей временной меткой и типом операции. Точка перед выполнением операции над Г T1 выполняет:

1) если T закончилось, то T1 помечает Г и выполняет свою операцию

2) если не закончилась, то T1 проверяет конфликтность операций. Если не конфликтны при Г остается или проставляется временная метка с меньшим значением и T1 выполняет операцию

3) T1 и T – конфликтны. Если t(T)>t(T1) T откатывается и T1 продолжает работу.

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










Последнее изменение этой страницы: 2018-05-31; просмотров: 192.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...