Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мокшин_2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
70.57 Кб
Скачать
  1. Причина потери результатов обновления элементов бд?

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

Рис.3.4. Потеря результатов обновления.

А – элемент БД; Т1, Т2 – транзакции; t-время

Транзакция  Т1 извлекает кортеж А в t1; Транзакция Т2 извлекает кортеж А в t2; Транзакция Т1 обновляет кортеж А (на основе значений, полученных в момент времени t1) в t3; Транзакция Т2 обновляет тот же кортеж А (на основе значений, полученных в момент t2, которые имеют те же значения, что и в t1) в момент t4. Однако результат операции обновления, выполняемой транзакцией Т1 будет утерян, поскольку в момент времени t4 она не будет учтена и потому будет «отменена» операцией обновления, выполненной транзакции Т2.

  1. Из-за чего возникают “грязные данные”?

Чтение «грязных» данных (фиктивные элементы - фантомы):

Рис.3.7. Чтение «грязных» данных

В промежутке между транзакциями была вставлена запись. При этом над частью данными были произведены действия.

Транзакция Т1 дважды выполняет выборку строк с одним и тем же условием. Между выборками вклинивается транзакция Т2, которая добавляет строку, удовлетворяющую условию отбора α. Т1 ничего не знает о существовании Т2, и так как сама она ничего не меняет в базе данных, то ожидает, что после повторного отбора будут отобраны те же самые строки. Результат: Транзакция Т1 в двух одинаковых выборках строк получит разные результаты.

  1. Какие конфликты возникают при параллельной работе транзакций?

Анализ проблемы параллелизма показывает, что если не предпринимать специальных мер, то при совместной работе нарушается свойство (И) транзакций - изолированность. Транзакции реально мешают друг другу получать правильные результаты, если они пересекаются и обращаются к одним и тем же данным.        В результате конкуренции за данными возникают конфликты доступа к данным.

Различают конфликты: ·    W-W (Запись-Запись). Первая транзакция изменила объект и не закончилась. Вторая пытается изменить этот объект. Результат – потеря обновления. ·    R-W (Чтение-Запись) Первая транзакция прочитала объект и не закончилась. Вторая транзакция пытается изменить этот объект. Результат – несовместный анализ. ·    W-R (Запись-Чтение). 1-я транзакция изменила объект и не закончилась. 2-я пытается прочитать этот объект. Результат – чтение двух «грязных» файлов. Конфликты типа R-R (Чтение-чтение) отсутствуют, т.к. данные при чтении не изменяются.

  1. Назовите графики запуска транзакций.

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

Замечание:         При выполнении двух различных последовательных (а, следовательно, верных) графиков, содержащих один и тот же набор транзакций, могут быть получены различные результаты. Пусть Т1 выполняет действие «сложить X с 1», а транзакция Т2 – «Удвоить X». Тогда последовательный график {Т1,Т2} даст результат 2(Х+1), а последовательный график {Т2,Т1} даст результат 2Х+1. Таким образом, может существовать несколько верных графиков запуска транзакций, приводящих к разным результатам при одном и том же начальном состоянии базы данных.