Введение в системы управления базами данных




Глава 10. Транзакции и параллелизм


    Глава 10. Транзакции и параллелизм
    Глава 10. Транзакции и параллелизм В данной главе изучаются возможности параллельного выполнения транзакций несколькими пользователями, т.е. свойство (И) - изолированность транзакций. Современные...
    Работа транзакций в смеси
    Работа транзакций в смеси Транзакция рассматривается как последовательность элементарных атомарных операций. Атомарность отдельной элементарной операции состоит в том, что СУБД гарантирует, что, с...
    Определение 1
    Определение 1 . Набор из нескольких транзакций, элементарные операции которых чередуются друг с другом, называется смесью транзакций ....
    Определение 2
    Определение 2 . Последовательность, в которой выполняются элементарные операции заданного набора транзакций, называется графиком запуска набора транзакций. Замечание . Очевидно, что для заданного...
    Проблемы параллельной работы транзакций
    Проблемы параллельной работы транзакций Каким образом транзакции различных пользователей могут мешать друг другу? Различают три основные проблемы параллелизма: Проблема потери результатов обновлен...
    Проблема потери результатов обновления
    Проблема потери результатов обновления Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения....
    Таблица 1
    Таблица 1 Транзакция A Время Транзакция B Чтение --- --- Чтение Запись --- --- ....
    Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание)
    Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание) Транзакция B изменяет данные в строке. После этого транзакция A читает измененные данные и работает с ними...
    Таблица 2
    Таблица 2 Транзакция AВремяТранзакция B --- Чтение --- Запись Чтение --- Работа с прочитанными данными Проблема несовместимого анализа
    Проблема несовместимого анализа Проблема несовместимого анализа включает несколько различных вариантов: Неповторяемое считывание . Фиктивные элементы ( фантомы ). Собственно несовместимый анализ ....
    Неповторяемое считывание
    Неповторяемое считывание Транзакция A дважды читает одну и ту же строку. Между этими чтениями вклинивается транзакция B, которая изменяет значения в строке....
    Таблица 3
    Таблица 3 Транзакция A Время Транзакция B Чтение --- --- Чтение --- Запись --- Фиктивные элементы (фантомы)
    Фиктивные элементы (фантомы) Эффект фиктивных элементов несколько отличается от предыдущих транзакций тем, что здесь за один шаг выполняется достаточно много операций - чтение одновременно несколь...
    Таблица 4
    Таблица 4 Транзакция A Время Транзакция B Выборка строк, удовлетворяющих условию . (Отобрано n строк) --- --- Вставка новой строки, удовлетворяющей условию . --- Фиксация транзакции Выборка строк,...
    Собственно несовместимый анализ
    Собственно несовместимый анализ Эффект собственно несовместимого анализа также отличается от предыдущих примеров тем, что в смеси присутствуют две транзакции - одна длинная, другая короткая. Длинн...
    Таблица 5
    Таблица 5 Транзакция A Время Транзакция B Чтение счета и суммирование. --- --- Снятие денег со счета . ---...
    Конфликты между транзакциями
    Конфликты между транзакциями Итак, анализ проблем параллелизма показывает, что если не предпринимать специальных мер, то при работе в смеси нарушается свойство (И) транзакций - изолированность. Тр...
    Определение 3
    Определение 3 . Транзакции называются конкурирующими , если они пересекаются по времени и обращаются к одним и тем же данным. В результате конкуренции за данными между транзакциями возникают конфл...
    Определение 4
    Определение 4 . График запуска набора транзакций называется последовательным , если транзакции выполняются строго по очереди, т.е. элементарные операции транзакций не чередуются друг с другом....
    Определение 5
    Определение 5 . Если график запуска набора транзакций содержит чередующиеся элементарные операции транзакций, то такой график называется чередующимся . При выполнении последовательного графика гар...
    Определение 6
    Определение 6 . Два графика называются эквивалентными , если при их выполнении будет получен один и тот же результат, независимо от начального состояния базы данных ....
    Определение 7
    Определение 7 . График запуска транзакции называется верным ( сериализуемым ), если он эквивалентен какому-либо последовательному графику. Замечание . При выполнении двух различных последовательны...
    Блокировки
    Блокировки Основная идея блокировок заключается в том, что если для выполнения некоторой транзакции необходимо, чтобы некоторый объект не изменялся без ведома этой транзакции, то этот объект долже...
    Таблица 6
    Таблица 6 Транзакция B пытается наложить блокировку: Транзакция A наложила блокировку: S-блокировку X-блокировку S-блокировку Да НЕТ (Конфликт R-W) X-блокировку НЕТ (Конфликт W-R)НЕТ (Конфликт W-W...
    Решение проблем параллелизма при помощи блокировок
    Решение проблем параллелизма при помощи блокировок Рассмотрим, как будут себя вести транзакции, вступающие в конфликт при доступе к данным, если они подчиняются протоколу доступа к данным....
    Проблема потери результатов обновления
    Проблема потери результатов обновления Две транзакции по очереди записывают некоторые данные в одну и ту же строку и фиксируют изменения....
    Таблица 7
    Таблица 7 Транзакция A Время Транзакция B S-блокировка - успешна --- Чтение --- --- S-блокировка - успешна --- ...
    Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание)
    Проблема незафиксированной зависимости (чтение "грязных" данных, неаккуратное считывание) Транзакция B изменяет данные в строке. После этого транзакция A читает измененные данные и работает с ними...
    Таблица 8
    Таблица 8 Транзакция A Время Транзакция B --- S-блокировка - успешна --- Чтение --- X-блокировка - успешна --- ...
    Неповторяемое считывание
    Неповторяемое считывание Транзакция A дважды читает одну и ту же строку. Между этими чтениями вклинивается транзакция B, которая изменяет значения в строке....
    Таблица 9
    Таблица 9 Транзакция A Время Транзакция B S-блокировка - успешна --- Чтение --- --- X-блокировка - отвергается --- Фиктивные элементы (фантомы)
    Фиктивные элементы (фантомы) Транзакция A дважды выполняет выборку строк с одним и тем же условием. Между выборками вклинивается транзакция B, которая добавляет новую строку, удовлетворяющую услов...
    Таблица 10
    Таблица 10 Транзакция A Время Транзакция B S-блокировка строк, удовлетворяющих условию . (Заблокировано n строк) --- Выборка строк, удовлетворяющих условию . (Отобрано n строк) --- --- Вставка нов...
    Собственно несовместимый анализ
    Собственно несовместимый анализ Длинная транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера. Пусть на в...
    Таблица 11
    Таблица 11 Транзакция A Время Транзакция B S-блокировка счета - успешна --- Чтение счета и суммирование. --- --- X-блокировка счета Разрешение тупиковых ситуаций
    Разрешение тупиковых ситуаций Итак, при использовании протокола доступа к данным с использованием блокировок часть проблем разрешилось (не все), но возникла новая проблема - тупики: Проблема потер...
    Таблица 12
    Таблица 12 Транзакция A Время Транзакция B Блокировка объекта - успешна --- --- Блокировка объекта -успешна Блокировка объекта - конфликтует с блокировкой, наложенной транзакцией B ...
    Преднамеренные блокировки
    Преднамеренные блокировки Как видно из анализа поведения транзакций, при использовании протокола доступа к данным не решается проблема фантомов. Это происходит оттого, что были рассмотрены только...
    Таблица 13
    Таблица 13 Транзакция B пытается наложить на таблицу блокировку: Транзакция A наложила на таблицу блокировку: IS S IX SIX X IS Да Да Да Да Нет S Да Да Нет Нет Нет IX Да Нет Да Нет Нет SIX Да Нет Н...
    Таблица 14
    Таблица 14 Транзакция A Время Транзакция B S-блокировка таблицы (с целью потом блокировать строки) - успешна --- S-блокировка строк, удовлетворяющих условию . (Заблокировано n строк) --- Выборка с...
    Предикатные блокировки
    Предикатные блокировки Другим способом блокирования является блокировка не объектов базы данных, а условий, которым могут удовлетворять объекты. Такие блокировки называются предикатными блокировка...
    Метод временных меток
    Метод временных меток Альтернативный метод сериализации транзакций, хорошо работающий в условиях редких конфликтов транзакций и не требующий построения графа ожидания транзакций основан на использ...
    Механизм выделения версий данных
    Механизм выделения версий данных Использование блокировок гарантирует сериальность планов выполнения смеси транзакций за счет общего замедления работы - конфликтующие транзакции ожидают, когда тра...
    Таблица 15
    Таблица 15 Транзакция A Время Транзакция B Проверка SCN счета - SCN транзакции больше SCN счета. Чтение счета без наложения блокировки и суммирование. --- --- X-блокировка счета - успешна --- Теорема Есварана о сериализуемости...
    : Перед выполнение каких-либо операций с некоторым объектом, транзакция должна заблокировать этот объект. После снятия блокировки, транзакция не должна накладывать никаких других блокировок. Транз...
    Теорема Есварана
    Теорема Есварана . Если все транзакции в смеси подчиняются протоколу двухфазной блокировки, то для всех чередующихся графиков запуска существует возможность упорядочения. Протокол называется двухф...
    Уровни изоляции
    Уровни изоляции Стандарт SQL не предусматривает понятие блокировок для реализации сериализуемости смеси транзакций. Вместо этого вводится понятие уровней изоляции. Этот подход обеспечивает необход...
    Таблица 16
    Таблица 16 Уровень изоляции Неаккуратное считывание Неповторяемое считывание Фантомы READ UNCOMMITTED Да Да Да READ COMMITTED Нет Да Да REPEATABLE READ Нет Нет Да SERIALIZABLE Нет Нет Нет Таблица...
    Синтаксис операторов SQL, определяющих уровни изоляции
    Синтаксис операторов SQL, определяющих уровни изоляции Уровень изоляции транзакции задается следующим оператором: SET TRANSACTION { ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE...
    Выводы
    Выводы Современные многопользовательские системы допускают одновременную работу большого числа пользователей. При этом если не предпринимать специальных мер, транзакции будут мешать друг другу. Эт...








Начало