- •Добряк Павел Вадимович управление данными
- •Управление данными
- • Угту-упи, 2012
- •Введение
- •1. Основные определения
- •1.1. Элементы баз данных
- •1.2. Технологии управления данными
- •1.3. Модели данных
- •2. Реляционная модель
- •2.1. Основные понятия реляционной модели
- •2.2. Нормализация
- •2.3. Проблемы проектирования реляционных баз данных
- •Задачи для самостоятельного решения
- •3. Реляционные алгебра и исчисления
- •3.1. Реляционная алгебра
- •3.2. Реляционное исчисление на кортежах
- •3.3. Реляционное исчисление на доменах
- •4.1. Введение в sql
- •4.2. Пример реляционной базы данных
- •4.3. Запросы к одной таблице
- •4.4. Запросы к нескольким таблицам
- •4.5. Вложенные запросы
- •4.6. Вложенные подзапросы и кванторы
- •4.7. Объединение однотипных запросов
- •4.8. Рекурсивные запросы
- •Объединение однотипных запросов.
- •Запросы для самостоятельного программирования
- •5. Olap и хранилища данных
- •5.1. Архитектура хранилищ данных
- •5.2. Аналитические запросы
- •6. Триггеры, хранимые процедуры, события
- •7. Транзакции
- •7.1. Функции транзакций
- •7.2. Уровни изолированности
- •7.3. Сериализация транзакций
- •7.4. Синхронизационный захват
- •7.5. Метод временных меток
- •8. Обзор перспективных направлений баз данных
- •9. Объектные технологии в субд
- •9.1. Три манифеста баз данных
- •9.2. Объектная модель sql
- •9.3. Модель данных odmg и язык oql
- •10. Запросы к интернет-страницам
- •10.1. Теговая парадигма
- •10.2. Язык запросов xQuery
- •11. Пространственные базы данных
- •12. Лабораторные работы
- •13. Курсовая работа
- •13.1. Концептуальное проектирование
- •13.2. Семантическое проектирование
- •13.3. Физическое проектирование. Реляционная модель данных
- •13.4. Запросы
- •Объединение однотипных запросов.
- •13.5. Интеллектуализация базы данных.
- •13.6. Клиентская часть информационной системы
- •13.7. Дополнительные элементы базы данных
- •Вопросы к экзамену
- •1. Основные определения.
- •2. Реляционная модель
- •3. Реляционные алгебра и исчисления
- •10. Запросы к интернет-страницам
- •11. Пространственные базы данных
- •Литература
- •Список иллюстраций список таблиц
- •Список листингов
- •Алфавитный указатель
- •Список сокращений
7.3. Сериализация транзакций
В условиях многопользовательского режима СУБД должна иметь план сериализации транзакций – способ выполнения набора транзакций, при котором результат совместного их выполнения эквивалентен результату некоторого последовательного выполнения этих же транзакций.
Между транзакциями могут существовать следующие виды конфликтов:
W-W - транзакция 2 пытается изменять объект, измененный не закончившейся транзакцией 1;
R-W - транзакция 2 пытается изменять объект, прочитанный не закончившейся транзакцией 1;
W-R - транзакция 2 пытается читать объект, измененный не закончившейся транзакцией 1.
Широко распространены два подхода к сериализации транзакций:
синхронизационные захваты объектов БД,
использование временных меток.
Оба этих подхода имеют следующие разновидности:
Пессимистические методы, ориентированные на ситуации, когда конфликты возникают часто, конфликты распознаются и разрешаются немедленно при их возникновении.
Оптимистические методы основываются на том, что результаты всех операций модификации БД сохраняются в рабочей памяти транзакций. Реальная модификация БД производится только на стадии фиксации транзакции. Тогда же проверяется, не возникают ли конфликты с другими транзакциями.
Разработчику клиентских программ, работающих с БД, необходимо иметь представление о методе сериализации транзакций, используемом в СУБД, так как от этого метода зависят настройки объектов из клиентской программы, которые обращаются к БД. От значений этих настроек будет зависеть разрешение конфликтов между пользователями.
7.4. Синхронизационный захват
В общих чертах протокол синхронизационного захвата состоит в том, что перед выполнением любой операции в транзакции T над объектом базы данных r от имени транзакции T запрашивается синхронизационный захват объекта r в соответствующем режиме (в зависимости от вида операции):
совместный режим - S (Shared), означающий разделяемый захват объекта и требуемый для выполнения операции чтения объекта;
монопольный режим - X (eXclusive), означающий монопольный захват объекта и требуемый для выполнения операций занесения, удаления и модификации.
Совместимость режимов показана в Табл. 59.
Табл. 59. Совместимость режимов в синхронизационном захвате
|
X |
S |
- |
да |
да |
X |
нет |
нет |
S |
нет |
да |
Транзакция выполняется в двухфазном режиме:
первая фаза транзакции - накопление захватов;
вторая фаза (фиксация или откат) - освобождение захватов.
Существуют тупики (deadlock).
Пусть транзакции T1 и T2 установили монопольные захваты объектов r1 и r2 соответственно;
после этого T1 требуется совместный захват r2, а T2 - совместный захват r1;
ни одна из транзакций не может продолжаться, следовательно, монопольные захваты не будут сняты, а совместные - не будут удовлетворены.
Проблема решается построением двудольного графа (первая половинка – вершины-объекты, вторая – вершины-транзакции). Deadlock соответствует цикл в графе (см. Рис. 27). СУБД, работающая по принципу синхронизационного захвата, должна всё время искать циклы в двудольном графе, чтобы распознать тупики.
Рис. 27. Тупик при синхронизационном захвате
Первоначально захватывались крупные объекты: страницы, отношения, файлы. В случае захвата отношения решалась проблема кортежей-фантомов. Недостаток такого решения – уменьшение возможности параллельного обращения транзакций к одним и тем же данным.
Существуют расширения метода:
Гранулированные захваты (для составных объектов), вводятся дополнительные типы захватов;
Предикатные захваты – захватываются не объекты а предикаты (условия, которым удовлетворяют объекты), решается проблема фантомов.
В гранулированных захватах вводятся три дополнительных режима захвата. При захвате объекта в режиме S или X нужно захватить объект верхнего уровня в один из дополнительных режимов. Совместимость режимов показана в Табл. 61, описание дополнительных режимов – в Табл. 60. I*** по отношению к некоторому составному объекту O означает намерение захватить некоторый входящий в O объект в *** режиме.
Табл. 60. Дополнительные режимы в гранулированном захвате
Обозначение |
Название |
Описание |
IS (Intented for Shared lock) |
в совместном режиме |
при намерении читать кортежи из отношения R это отношение должно быть захвачено в режиме IS (а до этого в таком же режиме должен быть захвачен файл). |
IX (Intented for eXclusive lock) |
в монопольном режиме |
при намерении удалять кортежи из отношения R это отношение должно быть захвачено в режиме IX (а до этого в таком же режиме должен быть захвачен файл). |
SIX (Shared, Intented for eXclusive lock) |
в монопольном режиме |
если выполняется длинная операция просмотра отношения с возможностью удаления некоторых просматриваемых кортежей, то экономичнее всего захватить это отношение в режиме SIX (а до этого захватить файл в режиме IS). |
Табл. 61. Совместимость режимов в гранулированном захвате
|
X |
S |
IX |
IS |
SIX |
- |
да |
да |
да |
да |
да |
X |
нет |
нет |
нет |
нет |
нет |
S |
нет |
да |
нет |
да |
нет |
IX |
нет |
нет |
да |
да |
нет |
IS |
нет |
да |
да |
да |
да |
SIX |
нет |
нет |
нет |
да |
нет |
Гранулированные захваты решают проблему кортежей-фантомов только в случае захвата отношения, что не экономично. В предикатных захватах захватывается только часть отношения, соответствующая условиям простого вида, которые часто встречаются в запросах.
Будем называть простым условием конъюнкцию простых предикатов, имеющих вид «имя-атрибута { = > < } значение». Для простых условий совместимость предикатных захватов легко определяется на основе следующей геометрической интерпретации. Пусть R отношение с атрибутами a1, a2, ..., an, а m1, m2, ..., mn - множества допустимых значений a1, a2, ..., an соответственно (все эти множества - конечные). Тогда можно сопоставить R конечное n-мерное пространство возможных значений кортежей R. Любое простое условие "вырезает" m-мерный прямоугольник в этом пространстве (m <= n). Тогда S-X, X-S, X-X -предикатные захваты от разных транзакций совместимы, если соответствующие прямоугольники не пересекаются. Это иллюстрируется следующим примером, показывающим, что в каких бы режимах не требовала транзакция 1 захвата условия (1<=a<=4) & (b=5), а транзакция 2 - условия (1<=a<=5) & (1<=b<=3), эти захваты всегда совместимы. См. Рис. 28.
Рис. 28. Пространство предикатного захвата
