5. Система управления параллелизмом. Данная система управляет параллельными запросами к БД.
ПОНЯТИЕ ТРАНЗАКЦИИ
Определение: транзакция определяет элементарную единицу работы, выполняемую некоторым приложением.
Пример:
Begin transaction
X=x-10
Y=y+10
Commit work
End transaction
ОТСЮДА
Каждая транзакция должна обладать следующими свойствами
1) атомарность – данное свойство подразумевает то, что транзакция должна быть неделимой выполняемой единицей
2) согласованность – данное свойство требует, чтобы при выполнении транзакции ни одно из ограничений целостности в базу данных не нарушалось.
3) изолированность – это свойство требует, чтобы выполнение транзакции никаким образом не влияло на результаты выполнения других транзакций, которые могут выполняться параллельно.
4) Устойчивость – это свойство требует, чтобы результат корректно выполненной транзакции не был потерян.
УПРАВЛЕНИЕ ПАРАЛЕЛИЗМОМ
Архитектура системы управления паралелизмом.
РИС.
Для корректного выполнения параллельных транзакций система управления паралелизмом должна решать следующие возможные проблемы:
1) проблема потери изменений. Предположим, что выполняются 2 одинаковые транзакции, выполняющие идентичные действия над некоторым объектом базы данных.
t1: Г(x), x=x+1, w(x)
t2: Г(x), x=x+1, w(x)
Каждая из транзакций выполняет действия над объектом х.
Transaction 1 bot (начало транзакции) Г1(x) x = x+1 w1(x) commit |
Transaction 2 bot Г2(x) x = x+1 w2(x) commit |
Транзакции ничем не синхронизируются.
Предположим, что начальное значение х=2
При последовательном выполнении этих двух транзакции конечное знасение х должно = 4.
При параллельном выполнении (как на рисунке) конечное значение х = 3
2) dirty read
на примере предыдущих двух транхакций во второй происзодит грязное чтение.
3) несогласованное чтение.
16.04.02
1) проблема фантомных изменений GHOST UPDATE
РАСМОтрим базу данных, содержащую 3 объекта X, Y, Z. Причем в этой базе данных налагается следующее ограничение целостности:
X+Y+Z = 1000
Предположим, что выполняется следующие 2 транзакции.
t1 bot r1(x) r1(y) r1(z) s = x+y+z commit |
t2 bot r2(y) y = y-100 r2(z) z = z-100 w2(y) w2(z) commit |
Транзакция t2 при своем выполнении не нарущает ограничение целостности и не изменяет общую сумму объектов x, y,z. Однако с транзакцией t1 переменная s, которой присваевается сумма x+y+z , получает значение 1100.
БЛОКИРОВКА
Механизм управления паралелизмом, используемый почти всеми коммерческими СУБД называется блокировкой. Этот механизм позволяет избежать проблем, рассмотренных выше.
Блокировка основывается на следующем простом принципе. Все операции чтоения и записи должны быть защищены посредством выполнения следующих трех примитивов:
1) r_lock
2) w_lock
3) unlock
Во время выполнения операции чтения и записи должны выполняться следующие требования:
Каждая операция чтения должна начинаться с выполнения примитива r_lock и заканчиваться примитивом unlock. Блокировка подобного типа называется разделяемой потому, что более чем одна блокировка такого же типа может быть применена к одному и тому же объекту данных.
Каждая операция записи должна начинаться с выполнения примитива w_lock и заканчиваться выполнением примитива unlock. Блокировка эттого типа назвается исключительной, поскольку никакие другие группировки не могут быть наложены на этот же объект данных.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.