- •Работа транзакций в смеси
- •Проблема параллельной работы транзакций
- •Блокировки
- •Разрешение тупиковых ситуаций.
- •Предикатные блокировки
- •Метод временных меток
- •Механизм выделения версий данных
- •Теория Есварана
- •Протокол двухфазной блокировки
- •Реализация изолированности транзакций средствами языка SQL
- •Транзакции и восстановление данных
- •Виды восстановления данных
- •Индивидуальный откат транзакций
- •Восстановление после мягкого сбоя
- •Восстановление после жесткого сбоя
- •Представление знаний в интеллектуальных системах.
- •Данные и знания. Основные определения
- •Модели представления знаний
- •Способы описания.
- •Стратегии решения организации поиска
- •Логический подход. Представление простых фактов в логических системах
- •Типовая организация СУБД. Внутренняя организация реляционной СУБД
- •Внутренняя организация реляционной СУБД.
- •Хэширование
- •Журнальная информация
- •Служебная информация
- •Язык SQL. Функции и основные возможности
- •Определение ограничения целостности и тригеров
- •Представление БД
- •Определение управляющих структур
- •Авторизация доступа к отношениям и их полям
- •Точки сохранения и отката транзакций. Встроенный SQL
- •Динамический SQL
- •Определение представлений.
- •Определение привилегий.
- •Средства манипулирования данными.
- •Табличные выражения.
- •Использование SQL при прикладном программировании.
- •Встроенный SQL
- •Одиночные операторы манипулирования данных.
- •Некоторые черты SQL’92 и SQL–3 (SQL’99)
9
для условия ά, |
|
|
|
заблокировано n строк) |
|
|
|
|
|
|
|
ά (n) (чтение строк) |
t2 |
- |
|
- |
t3 |
ά (Вставка новой строки |
|
по условию ά) |
|||
|
|
||
- |
t4 |
End |
|
S, ά, (n+1) |
t5 |
- |
|
ά (n+1) |
t6 |
X, P |
|
End |
t7 |
Wait |
Блокировка на уровне строк пока не решила проблему фиктивных элементов.
В) Собственно несовместимый анализ.
A |
T |
B |
|
S, P1 |
t1 |
- |
|
P1 = 100 |
t2 |
- |
|
Sum = 100 |
|||
|
|
||
- |
t3 |
X, P3 |
|
- |
t4 |
P3 :100 = 50 |
|
- |
t5 |
X, P1 |
|
S, P2 |
t6 |
Wait |
|
P2 = 100 |
t7 |
Wait |
|
Sum = 200 |
|||
|
|
||
S, P3 |
t8 |
Wait |
|
Wait |
t9 |
Wait |
Клинч
Разрешение тупиковых ситуаций.
Ситуации тупика возникают при наличии не менее 2-ух транзакций, каждая из которых выполняет несколько операций. Один из методов выхода из тупиковой ситуации – откат одной из транзакций (жертвы).
При выборе жертвы возможны следующие варианты:
1)СУБД не следит за возникновением тупиков и транзакции сами решают, кому быть жертвой
2)СУБД следит за возникновением тупиков и сама следит кого выбирать
вкачестве жертвы
При таком подходе система следит за возникновением тупика путем построения графа ожидания транзакций. Граф ожидания транзакций – двудольный направленный граф, в котором есть 2 типа вершин: вершина транзакций и вершина объекта захвата. Ситуация тупика возникает, если образуется хотя бы 1 цикл. В качестве меры – одна из транзакций откатывается.
10
Преднамеренная блокировка.
1)Блокировка самой БД
2)Блокировка файлов БД
3)Блокировка таблиц
4)Блокировка страниц
5)Блокировка отдельных строк
6)Блокировка отдельных полей
Достоинства блокировок: уменьшение накладных расходов системы. При использовании блокировок различной величины есть проблема обнаружения уже имеющихся. Для решения подобных ситуаций используется протокол преднамеренных блокировок.
Суть механизма: перед тем, как пометить блокировкой некоторый объект, надо сначала пометить преднамеренной блокировкой все объекты, в состав которых входит блокируемый объект. Тогда наличие преднамеренной блокировки будет признаком для другой транзакции.
Вводятся новые типы блокировок.
1)Преднамеренная блокировка с возможностью взаимного доступа (ISблокировка). Накладывается на некоторый объект Т и означает намерение блокировать некоторый входящий в него объект в режиме S например для того, чтобы читать строки из таблицы Т вся таблица должна быть заблокирована в режиме IS. До этого в таком же режиме должен быть заблокирован файл.
2)Блокировка без взаимного доступа (IX-блокировка). Накладывается на некоторый объект Т и означает намерение блокировать некоторый входящий в него объект в режиме X. Например, если хотим удалять/модифицировать строки в таблице Т, то вся таблица должна быть помечена Х-блокировкой.
3)Преднамеренная блокировка как со взаимным доступом, так и без него (SIX-блокировка). Означает разделяемую блокировку всего составного объекта
Тс намерением блокировать входящие в него объекты в режиме Х. Расширенные блокировки – для блокировки сложных объектов (например
таблицы).
A |
|
B |
|
|
|
|
|
|
IS |
S |
IX |
SIX |
X |
IS |
|
+ |
+ |
+ |
+ |
- |
S |
|
+ |
+ |
- |
- |
- |
IX |
|
+ |
- |
+ |
- |
- |
SIX |
|
+ |
- |
- |
- |
- |
X |
|
- |
- |
- |
- |
- |
+ - |
блокировки совместимы |
|
|
|
||
-- блокировки несовместимы
Всоответствии с матрицей скорректируем и протокол:
1)При задании Х-блокировки для сложного объекта неявно Х- блокировкой блокируются все дочерние объекты
2)При блокировке S или SIX -блокировкой сложного объекта неявно накладывается S-блокировка на все дочерние объекты.
11
3)Прежде чем заблокировать S и IS –блокировкой какой-либо объект, транзакция должна заблокировать IS или более сильной блокировкой как минимум 1 родительский объект данного.
4)Прежде чем наложить X,IX,SIX-блокировку, транзакция должна задать IX или более сложную блокировку для всех родительских объектов.
5)Перед тем, как будут отменены все блокировки для данного объекта, надо отменить блокировки для всех дочерних объектов.
Понятие относительной силы блокировки можно выразить так:
X
|
SIX |
|
S |
||
IX |
||
|
||
|
|
IS
Замечание: протокол преднамеренных блокировок не определяет однозначно, как блокировать родительский объект при блокировке дочернего. Проблема несовместного анализа. В хочет добавить строку.
A |
t |
B |
|
S-блокировка таблицы |
Sтабл |
t1 |
- |
|
|
S,α, n |
t2 |
- |
|
По условию α блокировка n строк |
Select |
t3 |
- |
|
Выборка по α , отобрано n строк |
α, n |
|
|
|
|
- |
t4 |
IX |
|
Блокировка IX отвергается |
- |
t5 |
wait |
|
|
S,α, n |
t6 |
wait |
|
|
Select |
t7 |
wait |
|
|
α, n |
|
|
|
|
end |
t8 |
|
|
|
|
t9 |
IX |
|
Добавляем строку |
|
t10 |
α, n +1 |
|
|
|
t11 |
end |
|
нет. Так как транзакция А только читает, |
Результат |
– |
фантомов |
|
минимально гарантированная блокировка – S-блокировка таблицы.
Предикатные блокировки
12
Блокировать не объект БД, а условие выполнения операции. Преимущества – простота реализации предотвращения некоторых коллизий. Недостатки – при попытке реально использовать возникает проблема определения совместимости условий.
Метод временных меток
Хорошо работает в условиях редких конфликтов. Не требует построения графа ожидания. Реализация: для каждой транзакции Т предписывается временная метка t, означающая начало транзакции. При операции над какимлибо объектом БД транзакция Т помечает его меткой t и типом опции (чтение – запись). Транзакция B перед выполнением опции над обьектом r , (B-r) выполняется следующие действия:
1)если А завершилось, то В помечает этот О. своей меткой и обрабатывает его.
2)если тр-я А не зав-сь, то В проверяет конфликтность ситуации. Если операции не конфликтны (2е операции чтения), то у О. r остаётся более ранняя метка (транзакции А), но В выполняет свою операцию.
3)Если операции конфликтуют, то сравнив времена начала транзакций:
если t(A)>t(B), тогда откатывается А (А является более молодой) если t(A)<t(B), то откатывается В
4) откатившаяся транзакция получает новую временную метку и начинается заново
“ - ” – частые откаты, нет понятия важности и стоимости транзакции.
Механизм выделения версий данных
Основан на представлении транзакциям 2х или более разных версий данных. Является альтернативным механизмом блокировок – не исп-т блок-к.
Суть метода:
1)Для каждой транзакции или запроса заполняется текущий системный номер (SCN).
2)При записи страницы данных на диск фиксируется SCN транзакции, которая её занесла, и этот номер становится текущим для данной страницы.
3)Транзакции, читающие данные, ничего не блокируют в БД.
4)Транзакция А читает данные, и её А.SCN сравнивается с Page.SCN. Если А.SCN>Page.SCN, то А читает эти данные. Если А.SCN < Page.SCN, то некоторая транзакция В, начавшаяся позже А, уже изменила и меняет данные.
Вэтом случае А смотрит журнал изменений в обратном порядке и находит страницу с номером А.SCN >Page.SCN.
Т.о. гарантируется использование тех данных, которые были актуальными на начало А.
Несовместный анализ, подсчёт денег на банковских счетах.
А | t | В
____| |____
