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

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

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

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

Замечание.
При выполнении двух различных последовательных (а, следовательно, верных) графиков, содержащих один и тот же набор транзакций, могут быть получены различные результаты.
Действительно, пусть транзакция
«А» заключается в действии "Сложить X с 1", а транзакция «В» "Удвоить X".
Тогда последовательный график {А, В} даст результат 2(Х+1), а последовательный график {В, А} даст результат 2Х+1.
Таким образом, может существовать несколько верных графиков запусков транзакций, приводящих к разным результатам при одном и том же начальном состоянии базы данных.
Задача обеспечения изолированной работы пользователей не сводится просто к нахождению правильных (сериальных) графиков запусков транзакций.
Если бы этого было достаточно, то лучшим был бы простейший способ сериализации ставить транзакции в общую очередь по мере их поступления' и выполнять строго последовательно.
Таким способом автоматически будет получен правильный (сериальный) график.
Проблема в том, что этот график будет неоптимальным с точки зрения общей производительности системы.
Получается ситуация, в которой борются противоположные силы с одной стороны, стремление обеспечить сериальность за счет ухудшения общей эффективности работы, с другой стороны, стремление улучшить общую эффективность за счет ухудшения сериальности.

58
[стр. 156]

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

Определение 6.
Два графика называются эквивалентными, если при их выполнении будет получен один и тот же результат, независимо от начального состояния базы данных.

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

Один крайний случай (выполнение транзакций по очереди) мы рассмотрели.
Рассмотрим другой крайний случай попытаемся достичь оптимального графика т.е.
графика с максимальной эффективностью выполнения транзакций.
Для этого сначала нужно уточнить понятие "оптимальность".
С каждым возможным графиком запуска транзакций мы можем связать значение некоей стоимостной функции.
В качестве стоимостной функции можно взять, например, суммарное время выполнения всех транзакций в наборе.
Время выполнения одной транзакции считается от момента, когда транзакция возникла и до момента, когда транзакция выполнила свою последнюю элементарную операцию.
Это время складывается из следующих компонентов: 1.
Время ожидания начала транзакции то время, которое проходит от момента, когда транзакция возникла до момента, когда началась реально выполняться ее первая элементарная операция.
2.
Сумма времен выполнения элементарных операций транзакции.
3.
Сумма времен всех элементарных операций других транзакций, вклинившихся между элементарными операциями транзакции.
Оптимальным будет график, дающий минимум стоимостной функции.
Очевидно, оптимальность графика запуска зависит от выбора стоимостной функции, т.е.
график, оптимальный с точки зрения одних критериев (например, с точки зрения приведенной функции стоимости) не будет

[стр.,172]

Кроме того, можно задать признаки READ ONLY или READ WRITE.
Если указан признак READ ONLY, то предполагается, что транзакция будет только читать данные.
При попытке записи для такой транзакции будет сгенерирована ошибка.
Признак READ ONLY введен для того, чтобы дать производителям СУБД возможность уменьшать количество блокировок путем использования других методов сериализации (например, метод выделения версий).
Оператор SET TRANSACTION должен удовлетворять следующим условиям:  Если предложение ISOLATION LEVEL отсутствует, то по умолчанию принимается уровень SERIALIZABLE.
 Если задан признак READ WRITE, то параметр ISOLATION LEVEL не может принимать значение READ UNCOMMITTED.
 Если параметр ISOLATION LEVEL определен как READ UNCOMMITTED, то транзакция становится по умолчанию READ ONLY.
В противном случае по умолчанию транзакция считается как READ WRITE.
Выводы Современные многопользовательские системы допускают одновременную работу большого числа пользователей.
При этом если не предпринимать специальных мер, транзакции будут мешать друг другу.
Этот эффект известен как проблемы параллелизма.
Имеются три основные проблемы параллелизма:  Проблема потери результатов обновления.
 Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание).
 Проблема несовместимого анализа.
График запуска набора транзакций называется последовательным, если транзакции выполняются строго по очереди.
Если график запуска набора транзакций содержит чередующиеся элементарные операции транзакций, то такой график называется чередующимся.
Два графика называются эквивалентными, если при их выполнении будет получен один и тот же результат, независимо от начального состояния базы данных.
График запуска транзакции называется верным (сериализуемым), если он эквивалентен какому-либо последовательному графику.

Решение проблем параллелизма состоит в нахождении такой стратегии запуска транзакций, чтобы обеспечить сериализуемость графика запуска и не слишком уменьшить степень параллельности.
Одним из методов обеспечения сериальности графика запуска является протокол доступа к данным при помощи блокировок.
В простейшем случае различают S-блокировки (разделяемые) и X-блокировки (монопольные).
Протокол доступа к данным имеет вид: 1.
Прежде чем прочитать объект, транзакция должна наложить на этот объект S-блокировку.
2.
Прежде чем обновить объект, транзакция должна наложить на этот объект X-блокировку.
Если транзакция уже заблокировала объект S-блокировкой (для чтения), то перед обновлением объекта S-блокировка должна быть заменена X-блокировкой.
3.
Если блокировка объекта транзакцией B отвергается оттого, что объект уже заблокирован транзакцией A, то транзакция B переходит в состояние ожидания.
Транзакция B будет находиться в состоянии ожидания до тех пор, пока транзакция A не снимет блокировку объекта.
4.
X-блокировки, наложенные транзакцией A, сохраняются до конца транзакции A.

[Back]