лекц_5_Параллелизм

Содержание

Слайд 2

Изолированнность

Современные СУБД являются многопользовательскими системами, т.е. допускают параллельную одновременную работу большого количества

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

Слайд 3

Изолированнность

Простейший способ обеспечить такую иллюзию у пользователя - все поступающие транзакции выстраивать

Изолированнность Простейший способ обеспечить такую иллюзию у пользователя - все поступающие транзакции
в единую очередь и выполнять строго по очереди, но это не параллельная работа
Таким образом, транзакции необходимо выполнять одновременно, но так, чтобы результат был бы такой же, как если бы транзакции выполнялись по очереди.

Слайд 4

Условия

СУБД гарантирует, что, с точки зрения пользователя, будут выполнены два условия:
Эта операция

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

Слайд 5

Работа транзакций в смеси

Элементарные операции различных транзакций могут выполняться в произвольной очередности.

Работа транзакций в смеси Элементарные операции различных транзакций могут выполняться в произвольной
Например, если есть несколько транзакций, состоящих из последовательности операций элементарных:
T= {T1, T2, T3, … Tn} Q={Q1, Q2, Q3, …, Qm}
то реальная последовательность, в которой СУБД выполняет эти транзакции может быть, например, такой:
{T1, Q1, T2, T3, Q2, T4, Q3, Q4, Q5, T5, T6, … }

Слайд 6

Смесь транзакций

Определение: Набор из нескольких транзакций, элементарные операции которых чередуются друг с

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

Слайд 7

Требование к графику запуска транзакций

График запуска должен быть оптимальным, то есть давать

Требование к графику запуска транзакций График запуска должен быть оптимальным, то есть
минимальное среднее время выполнения транзакций каждым пользователем.

Слайд 8

Проблемы параллельной работы транзакций (параллелизма)

Проблема потери результатов обновления
Проблема незафиксированной зависимости (чтение "грязных"

Проблемы параллельной работы транзакций (параллелизма) Проблема потери результатов обновления Проблема незафиксированной зависимости
данных)
Проблема несовместимого анализа

Слайд 9

Обозначения:

Рассмотрим две транзакции, A и B, запускающиеся в соответствии с некоторыми графиками.

Обозначения: Рассмотрим две транзакции, A и B, запускающиеся в соответствии с некоторыми

Пусть транзакции работают с некоторыми объектами базы данных, например со строками таблицы.
Операцию чтения строки P  будем обозначать P=P0 , где  P0 - прочитанное значение.
Операцию записи значения  P1 в строку P будем обозначать P1->P.

Слайд 10

Проблема потери результатов обновления

Две транзакции по очереди записывают некоторые данные в одну

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

Слайд 11

Результат

После окончания обеих транзакций, строка  содержит значение , занесенное более поздней транзакцией B.
Транзакция

Результат После окончания обеих транзакций, строка содержит значение , занесенное более поздней
A ничего не знает о существовании транзакции B, и естественно ожидает, что в строке  содержится значение .
Таким образом, транзакция A потеряла результаты своей работы.

Слайд 12

Проблема незафиксированной зависимости

(чтение "грязных" данных или неаккуратное считывание)
Транзакция B изменяет данные в

Проблема незафиксированной зависимости (чтение "грязных" данных или неаккуратное считывание) Транзакция B изменяет
строке
После этого транзакция A читает измененные данные и работает с ними
Транзакция B откатывается и восстанавливает старые данные

Слайд 13

Проблема незафиксированной зависимости

Проблема незафиксированной зависимости

Слайд 14

Результат

Транзакция A в своей работе использовала данные, которых нет и не было в

Результат Транзакция A в своей работе использовала данные, которых нет и не
базе данных.
После отката транзакции B, должна восстановиться ситуация, как если бы транзакция B вообще никогда не выполнялась.
Таким образом, результаты работы транзакции A некорректны, т.к. она работала с данными, отсутствовавшими в базе данных.

Слайд 15

Проблема несовместимого анализа

Проблема несовместимого анализа включает следующие варианты:
Неповторяемое считывание
Фиктивные элементы (фантомы)
Собственно несовместимый анализ

Проблема несовместимого анализа Проблема несовместимого анализа включает следующие варианты: Неповторяемое считывание Фиктивные

Слайд 16

Неповторяемое считывание

Транзакция A дважды читает одну и ту же строку. Между этими

Неповторяемое считывание Транзакция A дважды читает одну и ту же строку. Между
чтениями вклинивается транзакция B, которая изменяет значения в строке.

Слайд 17

Результат

Транзакция A работает с данными, которые, с точки зрения транзакции A, самопроизвольно

Результат Транзакция A работает с данными, которые, с точки зрения транзакции A, самопроизвольно изменяются.
изменяются.

Слайд 18

Фиктивные элементы (фантомы)

Транзакция A дважды выполняет выборку строк с одним и тем

Фиктивные элементы (фантомы) Транзакция A дважды выполняет выборку строк с одним и
же условием. Между выборками вклинивается транзакция B, которая добавляет новую строку, удовлетворяющую условию отбора.

Слайд 19

Фиктивные элементы

Результат. Транзакция A в двух одинаковых выборках строк получила разные результаты.

Фиктивные элементы Результат. Транзакция A в двух одинаковых выборках строк получила разные результаты.

Слайд 20

Собственно несовместимый анализ

в смеси присутствуют две транзакции - одна длинная, другая короткая.
Длинная

Собственно несовместимый анализ в смеси присутствуют две транзакции - одна длинная, другая
транзакция выполняет некоторый анализ по всей таблице, например, подсчитывает общую сумму денег на счетах клиентов банка для главного бухгалтера. Пусть на всех счетах находятся одинаковые суммы, например, по $100. Короткая транзакция в этот момент выполняет перевод $50 с одного счета на другой так, что общая сумма по всем счетам не меняется.

Слайд 21

Собственно несовместимый анализ

Результат. Хотя транзакция B все сделала правильно - деньги переведены

Собственно несовместимый анализ Результат. Хотя транзакция B все сделала правильно - деньги
без потери, но в результате транзакция A подсчитала неверную общую сумму.

Слайд 22

Конфликты между транзакциями

при работе в смеси нарушается свойство (И) транзакций - изолированность.

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

Слайд 23

Конфликты между транзакциями

Транзакции называются конкурирующими, если они пересекаются по времени и обращаются к

Конфликты между транзакциями Транзакции называются конкурирующими, если они пересекаются по времени и
одним и тем же данным.

Слайд 24

Виды конфликтов

W-W (Запись - Запись). Первая транзакция изменила объект и не закончилась.

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

Слайд 25

Способы разрешения конкуренции транзакций

Притормаживание некоторых транзакций

Предоставление транзакциям разных версий данных

Блокировки

Журнал транзакций

Способы разрешения конкуренции транзакций Притормаживание некоторых транзакций Предоставление транзакциям разных версий данных Блокировки Журнал транзакций

Слайд 26

Блокировки

Основная идея блокировок заключается в том, что если для выполнения некоторой транзакции

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

Слайд 27

Типы блокировок

Монопольные блокировки (X-блокировки, X-locks - eXclusive locks) - блокировки без взаимного доступа (блокировка записи).
Разделяемые

Типы блокировок Монопольные блокировки (X-блокировки, X-locks - eXclusive locks) - блокировки без
блокировки (S-блокировки, S-locks - Shared locks) - блокировки с взаимным доступом (блокировка чтения).

Слайд 28

Блокировки

Если транзакция A блокирует объект при помощи X-блокировки, то всякий доступ

Блокировки Если транзакция A блокирует объект при помощи X-блокировки, то всякий доступ
к этому объекту со стороны других транзакций отвергается.
Если транзакция A блокирует объект при помощи S-блокировки, то
запросы со стороны других транзакций на X-блокировку этого объекта будут отвергнуты,
запросы со стороны других транзакций на S-блокировку этого объекта будут приняты.

Слайд 29

Матрица совместимости блокировок

Матрица совместимости блокировок