Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория СУБД Часть 1 Копачев Алексей Геннадьевич, БГУИР (Мет пособие).pdf
Скачиваний:
60
Добавлен:
15.06.2014
Размер:
582.55 Кб
Скачать

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 | В

____| |____