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

2.
Во время выполнения этой операции не выполняются никакие другие операции других транзакций (строгая очередность элементарных операций).
Например, элементарными операциями транзакции будут считывание страницы данных с диска или запись страницы данных на диск (страница данных это минимальная единица для дисковых операций СУБД).
Условие 2 на самом деле является именно логическим условием, т.
к.
реально система может выполнять несколько различных элементарных операций в один и тот же момент.
Например, данные могут храниться на нескольких физически различных дисках и операции чтения-записи на эти диски могут выполняться одновременно.
Элементарные операции различных транзакций могут выполняться в произвольной очередности (конечно, внутри каждой транзакции последовательность элементарных операций этой транзакции является строго определенной).
Например, если есть несколько транзакций, состоящих из последовательности
элементарных операций: Т={Т,,Т2,Тз,..,Тп}, 0={0ь(Ь0з>--Лп}, S={S„S2,S},...,Si}, то реальная последовательность, в которой СУБД выполняет эти транзакции, может быть, например, такой: {T.,QbT2,Si,T3,S2,S3,Q2,.
■•}• Набор из нескольких транзакций, элементарные операции которых чередуются друг с другом, называется смесью транзакций.
Последовательность, в которой выполняются элементарные операции заданного набора транзакций, называется графиком запуска набора транзакций.

Обеспечение изолированности пользователей, таким образом, сводится к выбору подходящего (в каком-то смысле правильного) графика запуска транзакций.
Одновременно с этим график запуска должен быть
70
[стр. 151]

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

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

Замечание.
Очевидно, что для заданного набора транзакций может быть несколько (вообще говоря, достаточно много) различных графиков запуска.


[стр.,152]

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

[Back]