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

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

Транзакции называются конкурирующими, если они пересекаются по времени и обращаются к одним и тем же данным.
В результате конкуренции за данными между транзакциями возникают конфликты доступа к данным.
Различают следующие виды конфликтов:
W-W (Запись Запись).
Первая транзакция изменила объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат потеря обновления.

R-W (Чтение Запись).
Первая транзакция прочитала объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат несовместимый анализ (неповторяемое считывание).

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

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

Если график запуска набора
[стр. 155]

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

Определение 3.
Транзакции называются конкурирующими, если они пересекаются по времени и обращаются к одним и тем же данным.
В результате конкуренции за данными между транзакциями возникают конфликты доступа к данным.
Различают следующие виды конфликтов:
W-W (Запись Запись).
Первая транзакция изменила объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат потеря обновления.

R-W (Чтение Запись).
Первая транзакция прочитала объект и не закончилась.
Вторая транзакция пытается изменить этот объект.
Результат несовместимый анализ (неповторяемое считывание).

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


[стр.,156]

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

Определение 5.
Если график запуска набора транзакций содержит чередующиеся элементарные операции транзакций, то такой график называется чередующимся.
При выполнении последовательного графика гарантируется, что транзакции выполняются правильно, т.е.
при последовательном графике транзакции не "чувствуют" присутствия друг друга.
Определение 6.
Два графика называются эквивалентными, если при их выполнении будет получен один и тот же результат, независимо от начального состояния базы данных.
Определение 7.
График запуска транзакции называется верным (сериализуемым), если он эквивалентен какому-либо последовательному графику.
Замечание.
При выполнении двух различных последовательных (а, следовательно, верных) графиков, содержащих один и тот же набор транзакций, могут быть получены различные результаты.
Действительно, пусть транзакция A заключается в действии "Сложить X с 1", а транзакция B "Удвоить X".
Тогда последовательный график {A, B} даст результат 2(X+1), а последовательный график {B, A} даст результат 2X+1.
Таким образом, может существовать несколько верных графиков запусков транзакций, приводящих к разным результатам при одном и том же начальном состоянии базы данных.
Задача обеспечения изолированной работы пользователей не сводится просто к нахождению правильных (сериальных) графиков запусков транзакций.
Если бы этого было достаточно, то лучшим был бы простейший способ сериализации ставить транзакции в общую очередь по мере их поступления и выполнять строго последовательно.
Таким способом автоматически будет получен правильный (сериальный) график.
Проблема в том, что этот график будет неоптимальным с точки зрения общей производительности системы.
Получается ситуация, в которой борются противоположные силы с одной стороны, стремление обеспечить сериальность за счет ухудшения общей эффективности работы, с другой стороны, стремление улучшить общую эффективность за счет ухудшения сериальности.
Один крайний случай (выполнение транзакций по очереди) мы рассмотрели.
Рассмотрим другой крайний случай попытаемся достичь оптимального графика т.е.
графика с максимальной эффективностью выполнения транзакций.
Для этого сначала нужно уточнить понятие "оптимальность".
С каждым возможным графиком запуска транзакций мы можем связать значение некоей стоимостной функции.
В качестве стоимостной функции можно взять, например, суммарное время выполнения всех транзакций в наборе.
Время выполнения одной транзакции считается от момента, когда транзакция возникла и до момента, когда транзакция выполнила свою последнюю элементарную операцию.
Это время складывается из следующих компонентов: 1.
Время ожидания начала транзакции то время, которое проходит от момента, когда транзакция возникла до момента, когда началась реально выполняться ее первая элементарная операция.
2.
Сумма времен выполнения элементарных операций транзакции.
3.
Сумма времен всех элементарных операций других транзакций, вклинившихся между элементарными операциями транзакции.
Оптимальным будет график, дающий минимум стоимостной функции.
Очевидно, оптимальность графика запуска зависит от выбора стоимостной функции, т.е.
график, оптимальный с точки зрения одних критериев (например, с точки зрения приведенной функции стоимости) не будет

[Back]