Проверяемый текст
Пушников А.Ю. Введение в системы управления базами данных. Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999.
[стр. 56]

Собственно несовместимый анализ.
Эффект собственно несовместимого анализа также отличается от предыдущих примеров тем, что в смеси присутствуют две транзакции одна длинная, другая короткая.
Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера.
Пусть на всех счетах находятся одинаковые суммы, например, по $100.
Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется
(см.
таблицу 12).
Таблица 12 Транзакция перевода.
! Транзакция А Время Транзакция В ' Чтение счета Рщ 100 и суммирование, i SUM=100.
ti t2 Снятие денег со счета Р3.
Р3: 100-^50 t3 Помещение денег на счет Р1.
Рр 100—>150 ...
и Фиксация транзакции Чтение счета Р2=100 и суммирование.
SUM=200.
t5 — Чтение счета Р]=50 и суммирование.
SUM=250.
t6 — Фиксация транзакции t7 ...
Сумма $250 по всем счетам неправильная должно быть $300 Результат.
Хотя транзакция
«В» все сделала правильно деньги переведены без потери, но в результате транзакция «А» подсчитала неверную общую сумму.
Т.к.
транзакции по переводу денег идут обычно непрерывно, то в данной ситуации следует ожидать, что главный бухгалтер никогда не узнает, сколько же денег в банке.

56
[стр. 154]

Транзакция A ничего не знает о существовании транзакции B, и, т.к.
сама она не меняет значение в строке, то ожидает, что после повторного чтения значение будет тем же самым.
Результат.
Транзакция A работает с данными, которые, с точки зрения транзакции A, самопроизвольно изменяются.
Фиктивные элементы (фантомы) Эффект фиктивных элементов несколько отличается от предыдущих транзакций тем, что здесь за один шаг выполняется достаточно много операций чтение одновременно нескольких строк, удовлетворяющих некоторому условию.
Транзакция A дважды выполняет выборку строк с одним и тем же условием.
Между выборками вклинивается транзакция B, которая добавляет новую строку, удовлетворяющую условию отбора.
Транзакция A Время Транзакция B Выборка строк, удовлетворяющих условию .
(Отобрано n строк) ----Вставка новой строки, удовлетворяющей условию .
--Фиксация транзакции Выборка строк, удовлетворяющих условию .
(Отобрано n+1 строк) --Фиксация транзакции --Появились строки, которых раньше не было Транзакция A ничего не знает о существовании транзакции B, и, т.к.
сама она не меняет ничего в базе данных, то ожидает, что после повторного отбора будут отобраны те же самые строки.
Результат.
Транзакция A в двух одинаковых выборках строк получила разные результаты.
Собственно несовместимый анализ Эффект собственно несовместимого анализа также отличается от предыдущих примеров тем, что в смеси присутствуют две транзакции одна длинная, другая короткая.
Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера.
Пусть на всех счетах находятся одинаковые суммы, например, по $100.
Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется.

Транзакция A Время Транзакция B Чтение счета и суммирование.
----Снятие денег со счета .


[стр.,155]

--Помещение денег на счет .
--Фиксация транзакции Чтение счета и суммирование.
--Чтение счета и суммирование.
--Фиксация транзакции --Сумма $250 по всем счетам неправильная должно быть $300 Результат.
Хотя транзакция
B все сделала правильно деньги переведены без потери, но в результате транзакция A подсчитала неверную общую сумму.
Т.к.
транзакции по переводу денег идут обычно непрерывно, то в данной ситуации следует ожидать, что главный бухгалтер никогда не узнает, сколько же денег в банке.

Конфликты между транзакциями Итак, анализ проблем параллелизма показывает, что если не предпринимать специальных мер, то при работе в смеси нарушается свойство (И) транзакций изолированность.
Транзакции реально мешают друг другу получать правильные результаты.
Однако не всякие транзакции мешают друг другу.
Очевидно, что транзакции не мешают друг другу, если они обращаются к разным данным или выполняются в разное время.
Определение 3.
Транзакции называются конкурирующими, если они пересекаются по времени и обращаются к одним и тем же данным.
В результате конкуренции за данными между транзакциями возникают конфликты доступа к данным.
Различают следующие виды конфликтов:  W-W (Запись Запись).
Первая транзакция изменила объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат потеря обновления.
 R-W (Чтение Запись).
Первая транзакция прочитала объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат несовместимый анализ (неповторяемое считывание).
 W-R (Запись Чтение).
Первая транзакция изменила объект и не закончилась.
Вторая транзакция пытается прочитать этот объект.
Результат чтение "грязных" данных.
Конфликты типа R-R (Чтение Чтение) отсутствуют, т.к.
данные при чтении не изменяются.
Другие проблемы параллелизма (фантомы и собственно несовместимый анализ) являются более сложными, т.к.
принципиальное отличие их в том, что они не могут возникать при работе с одним объектом.
Для возникновения этих проблем требуется, чтобы транзакции работали с целыми наборами данных.


[стр.,161]

Транзакция A Время Транзакция B S-блокировка строк, удовлетворяющих условию .
(Заблокировано n строк) --Выборка строк, удовлетворяющих условию .
(Отобрано n строк) ----Вставка новой строки, удовлетворяющей условию .
--Фиксация транзакции S-блокировка строк, удовлетворяющих условию .
(Заблокировано n+1 строка) --Выборка строк, удовлетворяющих условию .
(Отобрано n+1 строк) --Фиксация транзакции --Появились строки, которых раньше не было Результат.
Блокировка на уровне строк не решила проблему появления фиктивных элементов.
Собственно несовместимый анализ Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера.
Пусть на всех счетах находятся одинаковые суммы, например, по $100.
Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется.

Транзакция A Время Транзакция B S-блокировка счета успешна --Чтение счета и суммирование.
----X-блокировка счета успешна --Снятие денег со счета .
--X-блокировка счета отвергается --Ожидание… S-блокировка счета успешна Ожидание… Чтение счета и суммирование.
Ожидание…

[Back]