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

• Проблема потери результатов обновления.
Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание).
Проблема несовместимого анализа.
Рассмотрим подробно эти проблемы.

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

Результат.
После окончания обеих транзакций, строка
«Р» содержит значение «Рэ», занесенное более поздней транзакцией «В».
Транзакция «А» ничего не знает о существовании транзакции «В», и естественно ожидает, что в строке «Р» содержится значение «Ррх Таким образом, транзакция «А» потеряла результаты своей работы (см.
таблицу 71).
Таблица 7 Потери транзакции А.
Транзакция А Время j Транзакция В ! Г“".............
' ■' ' ‘-11............
" '-'-1.............
1..................
" ...................' ■" ; Чтение Р=Р0 ti 1 Iр— t2 J Чтение P=P0 j Запись Pi—>P t3 1 r i t4 j Запись P2—>P j Фиксация транзакции tj 1 ..
“ .
„ iГ-^6 j Фиксация транзакции J Потеря результата обновления 1 ! Проблема незафиксированной зависимости (чтение ’’грязных” данных, неаккуратное считывание).
Транзакция «В» изменяет данные в строке.
После этого транзакция
«А» читает измененные данные и работает с ними.
Транзакция
«В» откатывается и восстанавливает старые данные.
С чем же работала транзакция «А»(см.
таблицу 8)? 53
[стр. 152]

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

Рассмотрим две транзакции, A и B, запускающиеся в соответствии с некоторыми графиками.
Пусть транзакции работают с некоторыми объектами базы данных, например со строками таблицы.
Операцию чтение строки будем обозначать , где прочитанное значение.
Операцию записи значения в строку будем обозначать .
Проблема потери результатов обновления Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения.

Транзакция A Время Транзакция B Чтение ----Чтение Запись ----Запись Фиксация транзакции ----Фиксация транзакции Потеря результата обновления Результат.
После окончания обеих транзакций, строка
содержит значение , занесенное более поздней транзакцией B.
Транзакция A ничего не знает о существовании транзакции B, и естественно ожидает, что в строке содержится значение .
Таким образом, транзакция A потеряла результаты своей работы.
Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание)

[стр.,159]

Проблема потери результатов обновления Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения.
Транзакция A Время Транзакция B S-блокировка успешна --Чтение ----S-блокировка успешна --Чтение X-блокировка отвергается --Ожидание… X-блокировка отвергается Ожидание… Ожидание… Ожидание… Ожидание… Обе транзакции успешно накладывают S-блокировки и читают объект .
Транзакция A пытается наложить X-блокирокировку для обновления объекта .
Блокировка отвергается, т.к.
объект уже S-заблокирован транзакцией B.
Транзакция A переходит в состояние ожидания до тех пор, пока транзакция B не освободит объект.
Транзакция B, в свою очередь, пытается наложить Xблокирокировку для обновления объекта .
Блокировка отвергается, т.к.
объект уже Sзаблокирован транзакцией A.
Транзакция B переходит в состояние ожидания до тех пор, пока транзакция A не освободит объект.
Результат.
Обе транзакции ожидают друг друга и не могут продолжаться.
Возникла ситуация тупика.
Проблема незафиксированной зависимости (чтение
"грязных" данных, неаккуратное считывание)
Транзакция B изменяет данные в строке.
После этого транзакция
A читает измененные данные и работает с ними.
Транзакция
B откатывается и восстанавливает старые данные.
Транзакция A Время Транзакция B --S-блокировка успешна --Чтение --X-блокировка успешна --Запись S-блокировка отвергается --Ожидание… Откат транзакции (Блокировка снимается)

[Back]