Керування транзакціями. Паралелізм

Содержание

Слайд 2

Три проблеми паралелізму

При обробці транзакцій в загальному випадку можливі три типи ситуацій,

Три проблеми паралелізму При обробці транзакцій в загальному випадку можливі три типи
при яких паралельне виконання транзакцій, кожна з яких сама по собі є коректною, через взаємні завади здатні привести до невірного результату.

Слайд 3

T1 T2 … Tn

DB
(цілісний
стан)

T1 T2 … Tn DB (цілісний стан)

Слайд 4

Приклад:

T1: Read(A) T2: Read(A)
A ← A+100 A ← A×2
Write(A) Write(A)
Read(B) Read(B)
B ← B+100 B ← B×2
Write(B) Write(B)
Constraint: A=B

Приклад: T1: Read(A) T2: Read(A) A ← A+100 A ← A×2 Write(A)

Слайд 5

Графік A - послідовний

T1 T2
Read(A); A ← A+100
Write(A);
Read(B); B ← B+100;
Write(B);
Read(A);A ← A×2;
Write(A);

Графік A - послідовний T1 T2 Read(A); A ← A+100 Write(A); Read(B);
Read(B);B ← B×2;
Write(B);

Слайд 6

Графік B - послідовний

T1 T2
Read(A);A ← A×2;
Write(A);
Read(B);B ← B×2;
Write(B);
Read(A); A ← A+100
Write(A);
Read(B); B

Графік B - послідовний T1 T2 Read(A);A ← A×2; Write(A); Read(B);B ←
← B+100;
Write(B);

Слайд 7

Графік C – умовно-послідовний

T1 T2
Read(A); A ← A+100
Write(A);
Read(A);A ← A×2;
Write(A);
Read(B); B ← B+100;
Write(B);

Графік C – умовно-послідовний T1 T2 Read(A); A ← A+100 Write(A); Read(A);A
Read(B);B ← B×2;
Write(B);

Слайд 8

Графік D – не умовно-послідовний

T1 T2
Read(A); A ← A+100
Write(A);
Read(A);A ← A×2;
Write(A);
Read(B);B ←

Графік D – не умовно-послідовний T1 T2 Read(A); A ← A+100 Write(A);
B×2;
Write(B);
Read(B); B ← B+100;
Write(B);

Слайд 9

Графік E - умовно-послідовний

T1 T2’
Read(A); A ← A+100
Write(A);
Read(A);A ← A×1;
Write(A);
Read(B);B ← B×1;
Write(B);
Read(B);

Графік E - умовно-послідовний T1 T2’ Read(A); A ← A+100 Write(A); Read(A);A
B ← B+100;
Write(B);

Такий як Графік D,
тільки з новою T2’

Слайд 10

Проблеми паралелізму

Неправильний кінцевий результат виникає через безконтрольне чергування операцій двох правильний транзакцій.

Проблеми паралелізму Неправильний кінцевий результат виникає через безконтрольне чергування операцій двох правильний транзакцій.

Слайд 11

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

T1 T2
Read(A);
Read(A);
Write(A);
Commit;
Write(A);
Commit;

Проблема втрати результатів оновлення T1 T2 Read(A); Read(A); Write(A); Commit; Write(A); Commit;

Слайд 12

Проблема залежності від незафіксованих результатів

T1 T2
Read(A); A ← A+100
Write(A);
Read(A);A ← A×2;
Rollback
Write(A);
Commit;

Проблема залежності від незафіксованих результатів T1 T2 Read(A); A ← A+100 Write(A);

Слайд 13

Проблема неузгодженої обробки

Проблема неузгодженої обробки

Слайд 14

Конфлікти

Конфлікти типу RR
операції читання не можуть порушувати роботу одна одної
Конфлікти типу WR
може

Конфлікти Конфлікти типу RR операції читання не можуть порушувати роботу одна одної
виникнути проблема неузгодженої обробки
Конфлікти типу RW
може виникнути проблема незафіксованих оновлень
Конфлікти типу WW
може виникнути проблема втраченого оновлення

Слайд 15

Блокування

У випадку, коли при виконанні деякої транзакції необхідно мати гарантії, що певний

Блокування У випадку, коли при виконанні деякої транзакції необхідно мати гарантії, що
об’єкт бази даних не буде неочікувано змінений без відома транзакції, потрібний об’єкт блокується.

Слайд 16

Механізм блокувань

В системі підтримуються блокування двох типів: виняткові блокування (блокування X -

Механізм блокувань В системі підтримуються блокування двох типів: виняткові блокування (блокування X
exclusive) і колективні блокування (блокування S - shared). 
Якщо транзакція A володіє винятковим блокуванням (X), то запит від деякої іншої транзакції B на отримання блокування кортежу t будь-якого типу не може бути негайно задоволений.
Якщо транзакція А володіє колективним блокуванням (S) кортежу t, то виконуються наступні умови: 
запит деякої іншої транзакції B на отримання блокування X кортежу t не може бути негайно задоволений;
запит деякої іншої транзакції B на отримання блокування S кортежу t може і повинен бути негайно задоволений (це означає, що з цього часу транзакція B також буде володіти блокуванням S кортежу).  

Слайд 17

Матриця сумісності

Матриця сумісності

Слайд 18

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

T1 T2
Read(A); lock S
Read(A); lock S
Write(A); lock X
WAIT
WAIT Write(A); lock

Проблема втрати результатів оновлення T1 T2 Read(A); lock S Read(A); lock S
X
WAIT WAIT
WAIT WAIT
WAIT WAIT

Слайд 19

Проблема залежності від незафіксованих результатів

T1 T2
Read(A); lock S
A ← A+100
Write(A);lock X
Read(A);lock S
WAIT
WAIT
Rollback ;(unlock

Проблема залежності від незафіксованих результатів T1 T2 Read(A); lock S A ←
A) A ← A×2;
Write(A); lock X
Commit;(unlock A)

Слайд 21

Взаємне блокування

Взаємоблокування являє собою таку ситуацію, в якій дві або кілька транзакцій

Взаємне блокування Взаємоблокування являє собою таку ситуацію, в якій дві або кілька
одночасно перебувають у стані очікування, причому кожна з них очікує, поки одна з решти транзакцій не звільнить блокування.
Вирішення – вибір транзакції «жертви»

Слайд 22

Упорядкованість

Упорядкованість - це загальноприйнятий критерій правильної організації почергового виконання набору транзакцій; іншими

Упорядкованість Упорядкованість - це загальноприйнятий критерій правильної організації почергового виконання набору транзакцій;
словами, така організація виконання вважається правильною тоді і тільки тоді, коли вона є впорядковуваною (?).
Тобто, якщо при почерговому виконанні заданої множини транзакцій буде отримано такий самий результат, що й при послідовному

Слайд 23

Обґрунтування

Окремі транзакції є правильними 
Будь-яка послідовність транзакцій, на підставі якої може бути організовано

Обґрунтування Окремі транзакції є правильними Будь-яка послідовність транзакцій, на підставі якої може
виконання транзакцій одна за одною, також є правильною 
Почергове виконання операцій окремих транзакцій можна вважати коректним, якщо отримані результати будуть еквівалентні тим, що були б отримані при послідовному виконанні цих же транзакцій