ПРОБЛЕМЫ ПАРАЛЛЕЛИЗМА.ppt
- Количество слайдов: 23
ПРОБЛЕМЫ ПАРАЛЛЕЛИЗМА n n Основные термины Основные проблемы при обработке транзакций Решения проблем Тупиковые ситуации
Основные термины Параллелизм – возможность одновременной обработки СУБД многих транзакций с доступом к одним и тем же данным в одно и то же время. S-блокировка – (X locks, e. Xclusive locks) блокировка без взаимного доступа или монопольная блокировка. X-блокировка – (S locks, Shared locks) блокировка со взаимным доступом. Диаграмма состояния ожидания – перечень транзакций, которые ожидают окончания выполнения других транзакций.
Основные проблемы при обработке транзакций n n n Потери результатов обновления Проблема незафиксированной зависимости Проблема несовместимого анализа
Потери результатов обновления Рассмотрим ситуацию, показанную на рисунке 1. Транзакция А извлекает некоторый кортеж р в момент времени t 1. Транзакция В извлекает тот же кортеж в момент времени t 2. Затем транзакция А обновляет кортеж p в t 3, а В - в t 4. Но результат обновления, выполненный транзакцией А, будет утерян, поскольку в момент времени t 4 она не будет учтена и потому будет «отменена» операцией обновления, выполненной транзакцией В. Решение проблем
Потеря в момент времени t 4 результатов обновления Обе транзакции извлекают один и тот же кортеж Транзакция А Время Транзакция В - | - Извлечение кортежа р t 1 - - | - - t 2 Извлечение кортежа p - | - Обновление кортежа р t 3 - - | - - t 4 Обновление кортежа p - Обновление, выполненное транзакцией А, затерто обновлением, выполненным транзакцией В
Проблема незафиксированной зависимости появляется, если с помощью некоторой транзакции осуществляется извлечение некоторого кортежа, который в данный момент обновляется другой транзакцией, но это обновление еще не закончено. Таким образом, если обновление не завершено, существует некоторая вероятность, что она не будет завершена никогда. Решение проблем
Рассмотрим пример, показанный на рисунке 2. Транзакция А в момент времени t 2 встречается с невыполненным обновлением. Затем это обновление отменяется в момент времени t 3. Таким образом, транзакция А выполняется на основе фальшивого предположения, что кортеж p имеет некоторое значение в момент времени t 2. В итоге после выполнения транзакции А будет получен неверный результат.
Транзакция А становится зависимой от невыполненного изменения в момент времени t 2 Транзакция А Время Транзакция В - | - - t 1 Обновление кортежа p - | - Извлечение кортежа p t 2 - - | - - t 3 Отмена выполнения транзакции - - Транзакция В отменяет Транзакция А извлекает После выполнения транзакции А выполненное обновление кортеж p получен неверный результат будет кортежа р
Рассмотрим пример, показанный на рисунке 3. Здесь не только транзакция А становится зависимой от изменения, не выполненного в момент времени t 2, но также в t 3 фактически утрачивается результат обновления, поскольку отмена выполнения транзакции В в момент времени t 3 приводит к восстановлению кортежа p к исходному значению.
Транзакция А обновляет невыполненное изменение в момент времени t 2, и результаты этого обновления утрачиваются в момент времени t 3 Транзакция А Время Транзакция В - | - - t 1 Обновление кортежа p - | - Обновление кортежа p t 2 - - | - - t 3 Отмена выполнения транзакции Транзакция А обновляет кортеж p Потеря обновления и восстановление кортежа p до исходного значения
Проблема несовместимого анализа Рассмотрим пример, показанный на рисунке 4. Здесь изображены транзакция А, суммирующая балансы, и транзакция В, которая производит перевод суммы 10 со счета 3 на счет 1. Полученный в итоге транзакции А результат 110 неверен, и если он будет записан в БД, то в ней может возникнуть проблема несовместимости.
Исходные данные: СЧЕТ 1=40, СЧЕТ 2=50, СЧЕТ 3=30, Транзакция А Время Транзакция В - | - Извлечение кортежа СЧЕТ 1: Sum=40 t 1 - - | - Извлечение кортежа СЧЕТ 2: Sum=90 t 2 - - t 3 Извлечение кортежа СЧЕТ 3: - | - - t 4 Обновление кортежа СЧЕТ 3: 30 -> 20 | - t 5 Извлечение кортежа СЧЕТ 1: | - - t 6 Обновление кортежа СЧЕТ 1: 40 -> 50 - | - - t 7 Завершение выполнения транзакции - | Извлечение кортежа СЧЕТ 3: Sum=110 (а не 120) t 8 Транзакция А не учитывает изменения суммы на счете 1 и Перевод суммы 10 со получает неверный счета 3 на счет 1 результат -
Решение проблем параллелизма n n n Решение проблемы потери результатов обновления Решение проблемы незафиксированной зависимости Решение проблемы несовместимого анализа
Решение проблемы потери результатов обновления Решение проблемы заключается в применении протокола блокировки для чередующихся операций (рисунок 5). Операция обновления для транзакции А в момент времени t 3 не будет выполнена, поскольку она является неявным запросом с заданием X-блокировкой для кортежа p, а этот запрос вступает в конфликт с S-блокировкой, уже заданной транзакцией B. Таким образом, транзакция А переходи в состояние ожидания. По аналогичным причинам транзакция В переходит в состояние ожидания. В таком случае результаты любых обновлений не будут утрачены, решение этой проблемы с помощью блокировки возможно только при решении другой проблемы (тупиковая ситуация).
Транзакция А Время Транзакция В Извлечение кортежа р (Задание S-блокировки для р) Обновление не выполнено, т. к. для кортежа р задана Sблокировка Обновление кортежа р (Задание X-блокировки для р) Ожидание | - t 1 - | Извлечение кортежа р (Задание S-блокировки для р) Обновление не выполнено, т. к. для кортежа р задана Xблокировка Обновление кортежа p (Задание X-блокировки для р) Ожидание t 2 | t 3 | t 4 Возникновение тупиковой ситуации
Решение проблемы незафиксированной зависимости Проблема незафиксированной зависимости решается с помощью чередующегося выполнения операций согласно протоколу блокировки. Операция для транзакции А в момент времени t 2 не будет выполнена. Транзакция А переходит в состояние ожидания до тех пор, пока не будет прекращено выполнение транзакции В. Тогда заданная транзакцией В блокировка будет снята и транзакция А может быть выполнена.
Транзакция А Извлечение не выполнено, т. к. задана Х-блокировка Время Транзакция В | - t 1 Обновление кортежа p (Задание X-блокировки для р) - | - Извлечение кортежа p (Задание S-блокировки для р) t 2 - Ожидание | - Ожидание t 3 Отмена выполнения (Снятие X-блокировки) Извлечение кортежа p (Задание S-блокировки для р) t 4 - После снятия блокировки происходит возобновление транзакции
Транзакция А Время Транзакция В Обновление не выполнено, т. к. задана Х-блокировка | - t 1 Обновление кортежа p (Задание X-блокировки для р) - | - Обновление кортежа p (Задание X-блокировки для р) t 2 - Ожидание | - Ожидание t 3 Отмена выполнения (Снятие X-блокировки) Обновление кортежа p (Задание X-блокировки для р) t 4 - После снятия блокировки происходит возобновление транзакции
Решение проблемы несовместимого анализа Решение данной проблемы заключается в применении чередования транзакций согласно протоколу блокировки. Операция обновления в момент времени t 6 не будет выполнена и переходит в состояние ожидания. Точно так же операция для транзакции А в момент времени t 7 не будет выполнена и переходит в состояние ожидания. Блокировка хотя и помогает решить одну проблему, но приводит к необходимости решения другой – тупиковой ситуации.
Исходные данные: СЧЕТ 1=40, СЧЕТ 2=50, СЧЕТ 3=30, Транзакция А Время Транзакция В Извлечение кортежа СЧЕТ 1: (Задание S-блокировки для р) Sum=40 t 1 - Извлечение кортежа СЧЕТ 2: (Задание S-блокировки для р) Sum=90 t 2 - - t 3 Извлечение кортежа СЧЕТ 3: (Задание S-блокировки для р) - t 4 Обновление кортежа СЧЕТ 3: (Задание S-блокировки для р) 30 -> 20 - t 5 Извлечение кортежа СЧЕТ 1: (Задание S-блокировки для р) - t 6 Обновление кортежа СЧЕТ 1: (Задание S-блокировки для р) Извлечение кортежа СЧЕТ 3: Sum=110 (а не 120) t 7 ожидание Ожидание | ожидание Возникновение тупиковой ситуации
ТУПИКОВАЯ СИТУАЦИЯ Тупиковая ситуация возникает при использовании блокировки, т. е. тогда, когда две или более транзакции одновременно находятся в состоянии ожидания, причем для продолжения работы каждая из транзакций ожидает прекращения выполнения другой транзакции. На рисунке 6 показана тупиковая ситуация, включающая две транзакции. Желательно, чтобы при возникновении тупиковой ситуации система могла обнаружить ее и найти из нее выход.
Пример тупиковой ситуации Транзакция А Время Транзакция В - | - Блокировка p 1 без взаимного доступа t 1 - - | - t 2 Блокировка p 2 без взаимного доступа | - Транзакция -А ожидает снятие блокировки с р2 Блокировка p 2 без взаимного доступа t 3 Ожидание | Ожидание t 4 Блокировка p 1 без взаимного доступа Ожидание | Ожидание Выход из тупиковой ситуации Транзакция В ожидает снятия блокировки с р1 - Тупиковая ситуация
Выход из тупиковой ситуации Для обнаружения тупиковой ситуации следует обнаружить цикл в диаграмме состояний ожидания. Поиск выхода из тупиковой ситуации состоит в выборе одной из заблокированных транзакций в качестве жертвы и отмене ее выполнения. Таким образом, с нее снимается блокировка, а выполнение другой транзакции может быть возобновлено. Существует два подхода: n Автоматический перезапуск транзакций с самого начала при условии, что обстоятельства, которые привели к тупиковой ситуации, не повторятся вновь n В программу, связанную с данной транзакцией, посылается сообщение о «вызвавшей тупиковую ситуацию транзакциижертвы» для обработки этой ситуации в самой программе.
ПРОБЛЕМЫ ПАРАЛЛЕЛИЗМА.ppt