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

проблем.
Выделяют три основные проблемы: проблема потери результатов обновления, проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание), проблема несовместимого анализа.
Анализирование проблем параллелизма показывает, что если не предпринимать специальных мер, то при работе в смеси нарушается свойство (И) транзакций «изолированность».
Транзакции реально мешают друг другу получать правильные результаты,
что в свою очередь естественным образом сказывается на надёжности функционирования программного обеспечения.
2.
Если заранее известен набор всех поступающих транзакций, то теоретически можно перебрать все возможные варианты графиков запусков (их конечное число, хотя и очень большое), и выбрать из них те графики, которые, во-первых, правильные, а во-вторых, оптимальны по выбранному критерию.
Однако в реальной ситуации неизвестно не только какие транзакции будут поступать в какие моменты времени, но и неизвестна длительность периода времени, охватывающего набор транзакций.
Т.к.
транзакции не мешают друг другу, если они обращаются к разным данным или выполняются в разное время,
то имеется два способа разрешить конкуренцию между поступающими в произвольные моменты транзакциями:
притормаживать" некоторые из поступающих транзакций настолько, насколько это необходимо для обеспечения правильности смеси транзакций в каждый момент времени (т.е.
обеспечить, чтобы конкурирующие транзакции выполнялись в разное время).

Данный алгоритм реализуется путем использованием блокировок различных видов или метода временных меток.
предоставить конкурирующим транзакциям "разные" экземпляры данных (т.е.
обеспечить, чтобы конкурирующие транзакции работали с разными версиями данными).

Данный алгоритм реализуется путем использованием данных из журнала транзакций.
[стр. 155]

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

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


[стр.,157]

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

2.
Предоставить конкурирующим транзакциям "разные" экземпляры данных (т.е.
обеспечить, чтобы конкурирующие транзакции работали с разными версиями данными).

Первый метод "притормаживание" транзакций реализуется путем использованием блокировок различных видов или метода временных меток.
Второй метод предоставление разных версий данных реализуется путем использованием данных из журнала транзакций.
Блокировки Основная идея блокировок заключается в том, что если для выполнения некоторой транзакции необходимо, чтобы некоторый объект не изменялся без ведома этой транзакции, то этот объект должен быть заблокирован, т.е.
доступ к этому объекту со стороны других транзакций ограничивается на время выполнения транзакции, вызвавшей блокировку.

[Back]