Проверяемый текст
(Диссертация 2004)
[стр. 71]

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

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

Результат.
После окончания обеих транзакций, строка
«Р» содержит значение «Р2», занесенное более поздней транзакцией «В».
Транзакция «А» ничего не знает о существовании транзакции «В», и естественно ожидает, что в строке «Р» содержится значение «Р».
Таким образом, транзакция «А» потеряла результаты своей работы (табл.
2.1).
Таблица 2.1 Транзакция А Время Транзакция В Чтение Р=Р0 ti — — *•2 Чтение Р=Р0 Запись Р—>-Р t3 — — U Запись Р2—>Р Фиксация транзакции t5 — Потеря результата обновления 1б Фиксация транзакции Проблема незафиксированной зависимости (чтение «грязных» данных, неаккуратное считывание).
Транзакция
«В» изменяет данные в строке.
После этого транзакция
«А» читает измененные данные и работает с 71
[стр. 4]

Корректность процедуры нормализации декомпозиция без потерь.
Теорема Хеза Выводы ГЛАВА 7.
НОРМАЛЬНЫЕ ФОРМЫ БОЛЕЕ ВЫСОКИХ ПОРЯДКОВ НФБК (Нормальная Форма Бойса-Кодда) 4НФ (Четвертая Нормальная Форма) 5НФ (Пятая Нормальная Форма) Продолжение алгоритма нормализации (приведение к 5НФ) Выводы ГЛАВА 8.
ЭЛЕМЕНТЫ МОДЕЛИ "СУЩНОСТЬ-СВЯЗЬ" Основные понятия ER-диаграмм Пример разработки простой ER-модели Концептуальные и физические ER-модели Выводы ГЛАВА 9.
ТРАНЗАКЦИИ И ЦЕЛОСТНОСТЬ БАЗ ДАННЫХ Пример нарушения целостности базы Понятие транзакции Ограничения целостности Классификация ограничений целостности Классификация ограничений целостности по способам реализации Классификация ограничений целостности по времени проверки Классификация ограничений целостности по области действия Ограничения домена Ограничения атрибута Ограничения кортежа Ограничения отношения Ограничения базы данных Реализация декларативных ограничений целостности средствами SQL Общие принципы реализации ограничений средствами SQL Синтаксис ограничений стандарта SQL Синтаксис операторов SQL, использующих ограничения Выводы ГЛАВА 10.
ТРАНЗАКЦИИ И ПАРАЛЛЕЛИЗМ Работа транзакций в смеси Проблемы параллельной работы транзакций Проблема потери результатов обновления Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание) Проблема несовместимого анализа Неповторяемое считывание Фиктивные элементы (фантомы) Собственно несовместимый анализ Конфликты между транзакциями Блокировки Решение проблем параллелизма при помощи блокировок Проблема потери результатов обновления Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное

[стр.,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]