BD2 wyklad 6

background image

Bazy danych 2

Wykład 6

Transakcje

background image

Transakcje



Def. Transakcjami nazywamy logiczne jednostki pracy które
wprowadzaj

ą

zmiany do bazy danych lub które wyszukuj

ą

dane



O transakcjach mówimy w kontek

ś

cie:



aktualizacji bazy danych



wspó

ł

u

ż

ytkowania danych przez wielu u

ż

ytkowników i powstawania

wzajemnych konfliktów



Transakcja mo

ż

e obejmowa

ć

jedn

ą

instrukcj

ę

lub wi

ę

ksz

ą

ilo

ść

instrukcji.

background image

Właściwości transakcji



Niepodzielno

ść

ść

ść

ść

– albo wszystkie instrukcje wchodz

ą

ce w sk

ł

ad transakcji s

ą

wykonane albo

ż

adna



Spójno

ść

ść

ść

ść

– wszystkie transakcje musz

ą

zachowa

ć

spójno

ść

i integralno

ść

bazy

danych



Izolacja – je

ś

li transakcja modyfikuje dane, to te dane mog

ą

by

ć

czasowo

niespójne, dlatego musz

ą

by

ć

niedost

ę

pne dla innych transakcji dopóty, dopóki

transakcja nie sko

ń

czy ich u

ż

ywa

ć



Trwa

łłłł

o

ść

ść

ść

ść

– gdy transakcja si

ę

ko

ń

czy, to wszystkie zmiany przez ni

ą

dokonane

musz

ą

zosta

ć

w pe

ł

ni utrwalone

background image

Transakcja – sekwencja logiczna

Logiczna sekwencja jest nast

ę

ę

ę

ę

puj

ą

ą

ą

ą

ca

[BEGIN [WORK]/

START TRANSACTION
[nazwa_transakcji]

Wykonaj polecenie 1

SAVEPOINT nazwa

Wykonaj polecenie 2

Wykonaj polecenie 3

ROLLBACK TO SAVEPOINT nazwa

Wykonaj polecenie 4

COMMIT [WORK] [TRANSACTION]
(zmiany zostaj

ą

zapisane w bazie)

[BEGIN [WORK]/

START TRANSACTION
[nazwa_transakcji]

Wykonaj polecenie 1

ROLLBACK [WORK] [TRANSACTION]

(baza danych powraca do stanu
pierwotnego)

background image

Transakcja z punktami zapisu

Przykład

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100.00

WHERE name = 'Alice';

SAVEPOINT my_savepoint;
UPDATE accounts SET balance = balance + 100.00

WHERE name = 'Bob';

ROLLBACK TO my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Wally';
COMMIT TRANSACTION;

background image

UWAGI



Standard SQL nie definiuje frazy BEGIN. Transakcje w tym standardzie
rozpoczynaj

ą

si

ę

bowiem automatycznie wraz z wykonaniem pierwszej

instrukcji.



W programistycznym SQL zako

ń

czenie programu ko

ń

czy z

powodzeniem tak

ż

e ostatni

ą

transakcj

ę

, nawet je

ż

eli nie zosta

ł

o

wydane polecenie COMMIT, za

ś

zako

ń

czenie z b

łę

dem powoduje

wycofanie aktualnej transakcji.

background image

Problem utraty zmian

Przyczyna zaburzeń: Transakcja T

1

czyta dane podczas, gdy są one

modyfikowane przez transakcję T

2

background image

Problem niezatwierdzonych
zależ

ż

ż

żnoś

ś

ś

ści (brudny odczyt)

Przyczyna zaburzeń: Transakcja T

3

jest wykonywana przy założeniu,

że modyfikacja wykonana przez przez transakcję T

4

została

zakończona z powodzeniem

background image

Problem analizy niespójnoś

ś

ś

ści

Przyczyna zaburzeń: Transakcja T

6

czyta dane, które są modyfikowane

przez transakcję T

5

background image

Kontrola współłłłbież

ż

ż

żnoś

ś

ś

ści



Uwaga: DBMS powinien zapewniać pewien „mechanizm” umożliwiający
zarządzanie operacjami wykonywanymi jednocześnie na bazie danych bez
dopuszczania do niepożądanych oddziaływań pomiędzy nimi.



Jednym z nasuwających się rozwiązań jest zezwolenie na wykonywanie
tylko jednej transakcji w danym czasie; takie postępowanie jednak w
znacznym stopniu wpływa na wydajność bazy danych.



Rozwiązaniem lepszym (w kontekście wydajności) jest jakaś forma
„przeplatania” transakcji, wiąże się z tym pojęcie

szeregowalności

[Papadimitriou, 1979]

background image

Pojęcie szeregowalności



Def.

Harmonogram

jest to ciąg operacji wykonywanych jednocześnie

transakcji, w których zachowany jest porządek operacji każdej transakcji.



Def.

Harmonogram sekwencyjny

to harmonogram, w którym operacje

każdej transakcji są wykonywane kolejno, bez przeplatania operacji z
różnych transakcji.



W przypadku harmonogramu sekwencyjnego transakcje nie
oddziaływają na siebie, ponieważ w danym czasie jest wykonywana
tylko jedna transakcja.



Kolejność transakcji nie jest ustalona, zatem wynik każdego
sekwencyjnego wykonania transakcji nie musi być taki sam.



Def.

Harmonogram

niesekwencyjny jest to harmonogram, w którym

operacje ze zbioru jednocześnie wykonywanych transakcji, są
przeplecione.

background image

Pojęcie szeregowalności



Def. Harmonogram wykonywanych jednocześnie transakcji nazywamy

szeregowalnym

jeśli doprowadza on do takiego samego stanu bazy

danych jak pewne wykonanie sekwencyjne tych transakcji.



Fakt:

Harmonogram szeregowalny jest harmonogramem poprawnym,

czyli zapewnia takie wykonanie transakcji współbieżnie nie dopuszczając
do niepożądanych oddziaływań pomiędzy nimi.



Uzasadnienie:



Indywidualne transakcje są poprawne



Dowolny harmonogram sekwencyjny jest poprawny



Zatem harmonogram szeregowalny jest poprawny, bo doprowadza
bazę do stanu takiego jak harmonogram szeregowalny.

background image

Pojęcie szeregowalności



Dla zapewnienia szeregowalno

ś

ci wa

ż

ne jest wzajemne uporz

ą

dkowanie

operacji odczytu i zapisu transakcji:



Je

ż

eli dwie transakcje jedynie czytaj

ą

ten sam element danych, to ich

wzajemna kolejno

ść

nie jest istotna



Je

ż

eli dwie transakcje czytaj

ą

lub zapisuj

ą

ż

ne elementy danych, to

nie koliduj

ą

ze sob

ą

i ich wzajemna kolejno

ść

nie jest istotna.



Je

ż

eli jedna transakcja zapisuje element danych, a druga go

odczytuje lub zapisuje, to kolejno

ść

wykonania tych transakcji ma

znaczenie.

background image

Pojęcie szeregowalności

background image

Techniki kontroli wielodostępu

Metoda blokad (często stosowana przez

byłego juz posła Andrzeja.L)

background image

Metody oparte na blokadach

Metoda oparta na blokadach polega na tym,

ż

e transakcja, która

odwo

ł

uje si

ę

do danych blokuje innym transakcjom dost

ę

p do danych.

Rozró

ż

niamy dwa typy blokad:

Blokada do odczytu R (read locks) – je

ż

eli transakcji zostanie

przyznana blokada read locks jednostki danych, to transakcja mo

ż

e

odczytywa

ć

warto

ść

tej jednostki, ale nie mo

ż

e jej zmienia

ć

Blokada do zapisu W (write locks) - je

ż

eli transakcji zostanie

przyznana blokada write locks jednostki danych, to transakcja mo

ż

e

zarówno odczytywa

ć

warto

ść

tej jednostki, jak i j

ą

zmienia

ć

Sposób przyznawania dzia

ł

ania blokad przedstawia macierz:

Y

N

R

N

N

W

R

W

background image

Protokól dostępu danych

1.

Transakcja, która wymaga dost

ę

pu do jednostki danych wyst

ę

puje o

przyznanie blokady dzielonej (je

ż

eli zamierza jedynie odczyta

ć

warto

ść

jednostki) lub blokady wy

łą

cznej (je

ż

eli zamierza odczyta

ć

i

modyfikowa

ć

warto

ść

jednostki)

2.

Je

ż

eli jednostka nie zosta

ł

a wcze

ś

niej zablokowana przez inn

ą

transakcj

ę

, to blokada jest przydzielana transakcji, która o ni

ą

wyst

ę

puje.

3.

Je

ż

eli pro

ś

ba o blokad

ę

jednostki zosta

ł

a odrzucona, poniewa

ż

jest w

konflikcie z blokad

ą

ju

ż

za

ł

o

ż

on

ą

, to transakcja przechodzi w stan

oczekiwania, a

ż

blokada zostanie zwolniona.

4.

Transakcja utrzymuje blokad

ę

jednostki, a

ż

do momentu jej jawnego

odwo

ł

ania w trakcie wykonania lub do czasu zako

ń

czenia (poprzez

odrzucenie lub wype

ł

nienie).

background image

Protokół dostępu danych - przykład

bal

x

=100 bal

y

=400

T9 ->T10
bal

x

=220 bal

y

=330

T10 ->T9
bal

x

=210 bal

y

=340

Stosujemy blokowanie
bal

x

=220 bal

y

=340  schemat nie jest szeregowalny

background image

Protokól blokowania dwufazowego– 2PL

Schemat protoko

ł

u blokowania dwufazowego jest nast

ę

puj

ą

cy:

1.

Zanim transakcje rozpocznie przetwarzanie jednostki musi uzyska

ć

blokad

ę

tej jednostki; transakcja

żą

da za

ł

o

ż

enia wszystkich

potrzebnych blokad

2.

Po zwolnieniu blokady transakcja nie mo

ż

e ju

ż

nak

ł

ada

ć

nowych

blokad.

Twierdzenie (Eswaran i in., 1976)

Je

ż

eli wszystkie transakcje spe

ł

niaj

ą

protokó

ł

dwufazowego

blokowania, to wszystkie harmonogramy niesekwencyjne s

ą

szeregowalne.

background image

2PL – zapobieganie utracie zmian

background image

2PL

2PL

zapobieganie brudnemu odczytowi

zapobieganie brudnemu odczytowi

background image

2PL

2PL

zapobieganie wyst

zapobieganie wyst

ą

ą

pieniu

pieniu

problemu analizy niesp

problemu analizy niesp

ó

ó

jno

jno

ś

ś

ci

ci

background image

2PL – wydaje się wspaniale

ale ...

background image

2PL

2PL

problem

problem

(wycofanie kaskadowe)

(wycofanie kaskadowe)

Sztywny 2PL – blokady zdejmowane w momencie zakończenia transakcji

Ś

Ś

Ś

Ścisłłłły 2PL- blokady wyłączne ( do zapisu) zdejmowane w momencie

zakończenia transakcji

background image

2PL

2PL

problem

problem

(zakleszczenie)

(zakleszczenie)

Metoda wykluczeń

ń

ń

ń – transakcja, która wystąpiła o blokadę czeka na nią tylko określony czas

Metoda zapobiegania zakleszczeniom – system nie dopuszcza do blokady

Metoda wykrywania zakleszczeń

ń

ń

ń o odtwarzania – system wykrywa zakleszczenie i

odrzuca jedną z transakcji, a później ją wznawia

background image

Współbieżność w SQL – poziomy izolacji



Standard SQL nie zawiera

ż

adnych jawnych mo

ż

liwo

ś

ci blokowania,

umo

ż

liwia stosowanie ró

ż

nych poziomów izolacji transakcji od innych

transakcji, poziomy izolacji definiowane s

ą

na podstawie tego, które z

narusze

ń

szeregowalno

ś

ci dopuszczaj

ą

.

background image

Współbieżność w SQL – poziomy
izolacji



Brudny odczyt (Dirty read): pierwsza transakcja modyfikuje wiersz, a
druga go czyta, zanim zmiana zosta

ł

a zatwierdzona przez instrukcj

ę

COMMIT. Je

ś

li pierwsza transakcja zosta

ł

a anulowana, zmiana nie

mia

ł

a miejsca i druga transakcja przeczyta

ł

a wiersz, który naprawd

ę

nigdy nie istnia

ł



Niepowtarzalny odczyt (Non-repeatable read): pierwsza transakcja
czyta wiersz. Druga go usuwa lub modyfikuje i wykonuje COMMIT
przed pierwsz

ą

. Teraz pierwsza transakcja mog

ł

aby przeczyta

ć

ten

sam wiersz jeszcze raz i otrzyma

ć

inne wyniki zanim zostanie sama

zatwierdzona.



Odczyt widmo (Phantom): pierwsza transakcja odczytuje wiersze
spe

ł

niaj

ą

ce predykat. Druga wstawia warto

ś

ci (instrukcja INSERT) lub

je modyfikuje (UPDATE) tak,

ż

e one równie

ż

spe

ł

niaj

ą

predykat.

Nast

ę

pne wykonanie tego samego zapytania przez pierwsz

ą

transakcj

ę

da inne wyniki.

background image

Wsp

Wsp

ó

ó

ł

ł

bie

bie

ż

ż

no

no

ść

ść

w SQL

w SQL

poziomy

poziomy

izolacji

izolacji



niedozwolone czytanie wierszy z blokadą write lock



blokada read lock założona na wszystkie wiersze zawierające

informacje na zadany temat (nie tylko te spełniajace warunek

selekcji)

SERIALIZABLE



niedozwolone czytanie wierszy z blokadą write lock



Blokada read lock założona na wszystkie wiersze będące

wynikiem zapytania i utrzymywana do końca transakcji

REPEATABLE
READ



niedozwolone czytanie wierszy z blokadą write lock



blokada read lock założona i utrzymywana tylko na czas

czytania wiersza

READ
COMMITED



dozwolone czytanie wierszy z założoną blokadą write lock



brak blokady read lock

READ
UNCOMMITED

Charakterystyka

Poziomy
izolacji

background image

Współbieżność w SQL – poziomy izolacji

NIE

NIE

NIE

SERIALIZABLE

TAK

NIE

NIE

REPEATABLE READ

TAK

TAK

NIE

READ COMMITED

TAK

TAK

TAK

READ
UNCOMMITED

Odczyt
widmo

Niepowtarzalny
odczyt

Brudny
odczyt

Poziom izolacji

background image

Definiowanie poziomu izolacji w SQL



SET TRANSACTION ISOLATION LEVEL
{READ UNCOMMITED | READ COMMITED | REPEATABLE READ |
SERIALIZABLE}



Im wyższy poziom izolacji tym większe bezpieczeństwo, ale wolniejsze
działanie BDMS



Jeżeli wszystkie transakcje są na poziomie SERIALIZABLE, to system
gwarantuje szeregowalność harmonogramów.

background image

Jawne blokady (zależne od dialektu)



Wiersze i tabele można blokować wyłącznie wewnątrz
transakcji, po zakończeniu transakcji wszystkie blokady
zostaną zwolnione, nie ma sposobu jawnego zwolnienia
blokady



Blokowanie wierszy spełniających warunek



SELECT ….. FOR UPDATE



Blokowanie tabel



LOCK TABLE table-name
IN { SHARE | EXCLUSIVE } MODE

background image

Dziękuję za uwagę!


Wyszukiwarka

Podobne podstrony:
BD2 wyklad 4
BD2 wyklad 3
BD2 wyklad 5
BD2 wyklad 1
BD2 wyklad 2
BD2 wyklad 4
Napęd Elektryczny wykład
wykład5
Psychologia wykład 1 Stres i radzenie sobie z nim zjazd B
Wykład 04
geriatria p pokarmowy wyklad materialy
ostre stany w alergologii wyklad 2003
WYKŁAD VII
Wykład 1, WPŁYW ŻYWIENIA NA ZDROWIE W RÓŻNYCH ETAPACH ŻYCIA CZŁOWIEKA
Zaburzenia nerwicowe wyklad
Szkol Wykład do Or

więcej podobnych podstron