Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры к зачету.doc
Скачиваний:
38
Добавлен:
16.04.2019
Размер:
906.75 Кб
Скачать

23. Проблемы параллельной работы транзакций. Проблема несовместимого анализа (три вида).

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

Проблема №1: проблема потерь результатов обновления.

Проблема №2: проблема незафиксированной зависимости (неаккуратное считывание),(чтение грязных данных).

Проблема №3: проблема несовместимого анализа.

Транзакция А

время t

Транзакция В

чтение Р1=100, SUM=100

-

-

чтение Р2=100, SUM=200

чтение Р3=50, SUM=250

t1

t2

t3

t4

t5

х

запись Р1=150, Р3=50

Фиксация

х

х

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

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

Конкурирующие транзакции – если они пересекаются по времени, обращаются к одним и тем же данным и хотя бы одна из них изменяет эти данные.

Типы конфликтов:

W-W (запись-запись) потеря результатов обновления

R-W (чтение-запись) неповторяемое считывание

W-R (запись- чтение) чтение «грязных» данных

График запуска набора транзакций называется ПОСЛЕДОВАТЕЛЬНЫМ , если транзакции выполняются строго по очереди, т.е. элементарные операции транзакций не чередуются друг с другом.

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

Если график набора транзакций содержит чередующиеся элементарные операции, то такой график называется чередующимся.

График запуска транзакций называется верным (сериализуемым), если он эквивалентен

какому-либо последовательному графику.

25. Понятия X- и s-блокировок, протокол доступа к данным с использованием этих типов блокировок.

1.Монотельная блокировка (Х-блокировка)

(x-lock, x-exclusive) - блокировка без взаимного доступа, блокировка записи.

Если транзакция заблокировала данные x-lock, то всякий доступ к этим данным со стороны других транзакций отвергаются.

2.Разделяемая блокировка (S-блокировка,S-lock, S- shared)- блокировка чтения, блокировка с взаимным доступом.

Если транзакция заблокировала данные при помощи S- блокировки, то:

  1. все запросы др. транзакций на х-блок. этих данных будут отвергнуты.

  2. «-» на S-блокир будут приняты.

Матрица совместимости блокировок

Транзакции В пытается наложить

Транзакция А наложила

S-lock

x-lock

S-lock

да

нет (конфликт R-W)

x-lock

нет (конфликт W-R)

нет (конфликт W-W)

Протокол доступа к данным

  1. Прежде чем прочитать объект, транзакция должна наложить на этот объект S-lock

  2. Прежде чем обновит объект, транзакция должна наложить на этот объект х-lock.

Если данные до этого были заблокированы S-lock, то перед обновлением она д.б. заменена на х-lock.

Если блокировка объекта другой транзакции отвергается от того, что он уже заблокирован первой, то вторая транзакция переходит в состояние ожидания до тех пор пока первая транзакция не снимет свою блокировку.

х-lock, наложенные транзакции сохраняются до конца этой транзакции.

26. Использование X- и S-блокировок блокировок при решении проблем параллельной работы транзакций. Решение проблем потери результатов обновления и незафиксированной зависимости. Решение проблемы параллелизма с помощью применения блокировок

1)Проблема потери результатов обновления

А

Время

В

S-lock строки Р-успешна

t1

Х

Чтение Р=Ро

t2

х

-

t3

S-lock Р-успешна

-

t4

Чтение Р=Ро

X-lock Р-отвергаются

t5

-

ожидание

t6

X-lock Р-отвергаются

ожидание

t7

Ожидание

Возникла ситуация тупика (deod-lock)

2)Проблема незафиксированной зависимости

А

Время

В

Х

t1

S-lock строки Р-успешна

Х

t2

Чтение Р=Ро

Х

t3

Х-lock Р-успешна

Х

t4

Запись Р1=Р

S-lock Р-отвергаются

t5

-

ожидание

t6

Фиксация(-//-) Откат(блокировки сняты)

S-lock Р-успешна

t7

х

Чтение Р=Ро (Р1)

t8

Проблема решена