wyk11 2

background image

Transakcje

Wykład 11
Prowadzący: dr Paweł Drozda

background image

dr Paweł Drozda

Algorytmy zarządzania współbieżnym

wykonaniem transakcji

blokowanie - uszeregowanie transakcji
wynika z kolejności uzyskiwanych
blokad

znaczników czasowych – uszeregowanie
wynika z wartości znaczników
czasowych związanych z transakcjami

optymistyczne – walidacja poprawności
uszeregowania

background image

dr Paweł Drozda

Metody znaczników czasowych (1)

znacznik czasowy (TS) – unikalny

identyfikator wyznaczający kolejność

transakcji (wg kolejności uruchomienia)

generowane przez zegar bądź przez

licznik (poprzez zwiększenie o jeden)

znaczniki czasowe jednostek danych:

ReadTS(x) – znacznik ostatniej transakcji

czytającej x

WriteTS(x) – znacznik ostatniej transakcji

piszącej do x

background image

dr Paweł Drozda

Metody znaczników czasowych (2)

Algorytm

T chce odczytać x

jeśli TS(T) < WriteTS(x), to T wycofywana i
restartowana z nowym TS(T)

gdy TS(T) >= WriteTS(x), to T czyta x; wartość
ReadTS(x)= max(TS(T),ReadTS(x))

T chce pisać do x

jeśli TS(T) < WriteTS(x) lub TS(T) < ReadTS(x), to
T wycofywana i restartowana z nowym TS(T)

wpp T pisze do x; WriteTS(x)=TS(T)

background image

dr Paweł Drozda

Metody znaczników czasowych (3)

Zasada zapisu Thomasa (modyfikacja

podstawowej metody)

T chce pisać do x

jeśli TS(T) < WriteTS(x) – można pominąć

operację zapisu do x (wartość jest przestarzała –

później uruchomiona transakcja zmodyfikowała

tą wartość)

pozostałe przypadki bez zmian

zapewnia szerszy wielodostęp

nie odrzuca transakcji z niepotrzebnymi

zapisami (tylko nie dokonuje zapisu)

background image

dr Paweł Drozda

Metoda znaczników czasowych –
przykład (1)

t

1

t

2

t

3

t

4

t

5

t

6

t

7

t

8

t

9

t

10

t

11

T

1

T

2

T

3

start

r(x)

x=x+10

w(x)

start

r(y)

y=y+20

w(y) 

start

start

r(y)

y=y+30

w(y)

background image

dr Paweł Drozda

Metoda znaczników czasowych –
przykład (2)

t

12

t

12

t

14

t

15

t

16

t

17

t

18

t

19

T

1

T

2

T

3

z=50

w(z) 
commit

r(y)

y=y+20

w(y)

commit

z=100

w(z)

commit

background image

dr Paweł Drozda

Podstawowa metoda znaczników

czasowych - cechy

gwarantuje szeregowalność transakcji -
transakcje wykonywane według
znaczników czasowych

nie gwarantuje odtwarzalności
harmonogramu
przykład:
H

1

= w

1

(x)r

2

(x)w

2

(x)c

2

a

1,

gdzie

TS(T

1

)< TS(T

2

)

background image

dr Paweł Drozda

Modyfikacja metody

Zapewnienie odtwarzalności – konieczna

modyfikacja metody

główna idea – buforowanie operacji odczytu i

zapisu aż do momentu zatwierdzenia transakcji

T1 zapisuje x: WriteTS(x) – aktualizowany, x –

zmieniony dopiero po zatwierdzeniu transakcji

T1

T2 odczytuje daną x zaktualizowaną przez T1:

gdy warunek odczytu jest spełniony to odczyt

odsunięty do momentu zatwierdzenia T1

background image

dr Paweł Drozda

Algorytmy optymistyczne (1)

Trzy stany:

Faza odczytu – modyfikacje

przechowywane w obszarach roboczych

transakcji

Faza walidacji – badanie uszeregowalności

transakcji; transakcje niespełniające

uszeregowalności wycofywane i

restartowane

Faza zapisu – po pomyślnej walidacji

modyfikacje wprowadzane do bazy

background image

dr Paweł Drozda

Algorytmy optymistyczne (2)

Faza walidacji – określa czy transakcje mogą
spowodować kolizję

znaczniki czasowe dla transakcji:

start(T) – rozpoczęcie transakcji

validation(T) – rozpoczęcie walidacji

finish(T) – po zakończeniu transakcji

walidacja pomyślna gdy:

finish(S)<start(T) – sekwencyjnie lub:

jeśli start(T)<finish(S) to:

dane zapisywane przez wcześniejszą transakcję nie mogą
zawierać danych zapisywanych przez bieżącą transakcję

finish(S)<validation(T)

background image

dr Paweł Drozda

Algorytmy optymistyczne (3)

efektywne – gdy konflikty rzadkie

gdy wycofania częste – algorytm
nieefektywny

szerszy wielodostęp w porównaniu do
blokowania

background image

dr Paweł Drozda

Ziarnistość danych (1)

założenie algorytmów – dostęp
transakcji do pewnej jednostki danych

Elementy bazy danych (ziarnistość):

cała baza

plik

strona (sektor na dysku)

rekord

wartość w polu rekordu

background image

dr Paweł Drozda

Ziarnistość (2) - blokady

Ziarnistość dla blokowania:

czy blokować całą bazę – czy

poszczególne pola rekordów?

im większa część blokowana – większe

prawdopodobieństwo zakleszczenia,

węższy wielodostęp

większa część bazy modyfikowana –

szybsze blokowanie całej bazy niż

poszczególnych rekordów

wybór w zależności od transakcji

background image

dr Paweł Drozda

Hierarchia jednostek blokowania

Plik

1

Baza

danych

Plik

2

Plik

3

Strona

3

Strona

2

Strona

1

Rekord

2

Rekord

1

Pole

2

Pole

1

Poziom 0

Poziom 1

Poziom 2

Poziom 3

Poziom 4

background image

dr Paweł Drozda

Ziarnistość - blokowanie

zablokowany węzeł  zablokowane

następniki (gdy zablokowany rekord1
zablokowane również pole1, pole2)

żądanie zablokowania węzła –
konieczne sprawdzenie czy któryś z
następników nie został zablokowany

efektywne przeszukanie następników –
blokowanie jednostek hierarchicznych

background image

dr Paweł Drozda

Blokowanie jednostek hierarchicznych

blokada intencjonalna – blokada
zakładana na każdy węzeł nadrzędny

np. przy blokowaniu Strona

1

blokada

intencjonalna założona na Plik

2

, baza danych

typy blokad intencjonalnych

intencjonalna do odczytu IR
intencjonalna do zapisu IW
wszystkie elementy do odczytu i intencjonalna

do zapisu RIW

background image

dr Paweł Drozda

Kompatybilność blokad

IR

IW

R

RIW W

IR

Ok.

Ok.

Ok.

Ok.

X

IW

Ok.

Ok.

X

X

X

R

Ok.

X

Ok.

X

X

RIW Ok.

X

X

X

X

W

X

X

X

X

X

background image

dr Paweł Drozda

Szeregowalność blokowania

hierarchicznego

warunki szeregowalności:

transakcja nie może blokować, jeśli coś

odblokowała

transakcji nie wolno zablokować węzła,

jeśli nie zablokuje jego bezpośredniego

poprzednika blokadą intencjonalną

przed odblokowaniem węzła muszą

zostać odblokowani wszyscy poprzenicy

zakleszczenia obsługiwane jak

wcześniej

background image

dr Paweł Drozda

Poziomy izolacji (1)

Większość SZBD nie zapewnia
szeregowalności transakcji

Poziom izolacji wprowadzany do znalezienia
kompromisu pomiędzy współbieżnością a
poprawnością wykonania transakcji

Możliwe poziomy izolacji:

READ UNCOMMITTED

READ COMMITED

REPEATABLE READ

SERIALIZABLE

background image

dr Paweł Drozda

Poziomy izolacji (2)

SERIALIZABLE

Odczytuje wyłącznie dane zatwierdzone

Do momentu zakończenia transakcji żadna dana

nie zostanie zmieniona przez inną transakcje

Blokuje dostęp do tabeli

Zapewnia szeregowalność

REPEATABLE READ

Tak samo jak SERIALIZABLE – tylko, że blokuje

dostęp do danych a nie całej tabeli

Pojawia się problem „fantomów” – gdy jedna

transakcja czyta dane, druga w tym samym czasie

dodaje lub uaktualnia

background image

dr Paweł Drozda

Poziomy izolacji (3)

READ COMMITTED

Odczytuje tylko zatwierdzone dane

Zapisane dane nie zostaną zmienione przez
inną transakcję do momentu zakończenia
transakcji

Brak gwarancji, że dane odczytane nie
zostaną zmienione przez inną transakcję

Problem niepowtarzalnego odczytu – gdy ta
sama dana jest czytana dwa razy a w
międzyczasie inna transakcja ją modyfikuje

background image

dr Paweł Drozda

Poziomy izolacji (4)

READ UNCOMMITTED

Dopuszczenie odczytywania danych, które

zostały zmienione przez niezatwierdzone

transakcje – może czytać dodane wiersze które

później będą wycofane (Czytanie na brudno)

Najniższy poziom izolacji

Poziom izolacji SQL – ustawiany przed

uruchomieniem transakcji

SET TRANSACTION ISOLATION LEVEL

(SERIALIZABLE | REPEATABLE READ | READ

COMMITTED | READ UNCOMMITTED)

background image

dr Paweł Drozda

Poziomy izolacji - zestawienie

Czytanie na
brudno

Niepowtarzalny
odczyt

Fantom

READ
UNCOMMITED

możliwe

możliwe

możliwe

READ
COMMITED

Nie występuje

możliwe

możliwe

REPEATABLE
READ

Nie występuje

Nie występuje

możliwe

SERIALIZABLE

Nie występuje

Nie występuje

Nie
występuje

background image

dr Paweł Drozda

Transakcje – SQL (1)

Dostępne dla parametru engine

ustawionego na InnoDB (podobnie jak przy

wymuszaniu więzów integralności

referencyjnej)

CREATE TABLE Studenci(…) engine=InnoDB;

Dwa tryby pracy z transakcjami

autocommit – każda operacja od razu zatwierdzana

(chyba, że się zaznaczy transakcje)

Bez autocommit – możliwość grupowania poleceń

w transakcję (konieczność potwierdzania commit

lub wycofania rollback)

background image

dr Paweł Drozda

Transakcje – SQL (2)

Ustawienie autocommit:

SET AUTOCOMMIT =1; - domyślnie

SET AUTOCOMMIT =0; - możliwość

grupowania instrukcji w transakcje

Zmiana ustawienia na stałe:

Zapis w pliku my.ini lub my.cnf w sekcji

[mysqld] init_connect=‘SET AUTOCOMMIT=0’

Sprawdzenie ustawienia trybu

autocommit:

SELECT @@AUTOCOMMIT;

background image

dr Paweł Drozda

Transakcje SQL (3)

Polecenia:

START TRANSACTION – rozpoczyna transakcje

AUTOCOMMIT=0 – START TRANSACTION
niepotrzebne – uruchamiane automatycznie

AUTOCOMMIT=1 – START TRANSACTION
uruchamia transakcje, COMMIT lub ROLLBACK
kończy blok transakcji

COMMIT – zatwierdza wykonanie transakcji

ROLLBACK – wycofuje transakcje

background image

dr Paweł Drozda

Transakcja przykład

Student(id,nazwisko,rok)
SET AUTOCOMMIT=0;
UPDATE Student set rok=rok+1;
INSERT INTO Student VALUES(123,’Nowak’,3);
EXIT; - zmiany niezachowane
COMMIT; EXIT; - zmiany zachowane

SET AUTOCOMMIT=1;

UPDATE Student set rok=rok+1;
START TRANSACTION;
INSERT INTO Student VALUES(123,’Nowak’,3);
ROLLBACK;
insert niezachowany, update zachowany

background image

dr Paweł Drozda

Transakcje SQL (4)

Blokowanie wierszy dla InnoDB:

Blokowanie do aktualizacji:

SELECT … FROM … WHERE … FOR
UPDATE
;

Blokowanie do czytania:

SELECT … FROM … WHERE … LOCK IN
SHARE MODE
;

background image

dr Paweł Drozda

Transakcje - przykład

AUTOCOMMIT=1;
BEGIN TRANSACTION;
SELECT rok FROM Student FOR UPDATE;
UPDATE Student SET rok=rok+1;
COMMIT;

AUTOCOMMIT=1;
BEGIN TRANSACTION;
SELECT * FROM Student WHERE nazwisko=‘kowal’ LOCK IN SHARE

MODE;

INSERT INTO Oceny VALUES(1,2,4);
COMMIT;

background image

dr Paweł Drozda

Transakcje SQL (5)

Blokowanie tabel – dla parametru
engine ustawionego na MyISAM –
domyślnie

Polecenia:

LOCK TABLES tabela1 typBlokady, …;

typBlokady = READ|WRITE

UNLOCK TABLES; - odblokowuje dostęp
do tabel

background image

dr Paweł Drozda

Transakcje – przykład

Sesja1

sesja2

LOCK TABLES Student READ, Oceny WRITE;

SELECT * FROM Student;
- zostanie wykonana
SELECT * FROM Oceny;
- czeka na odblokowanie tabeli
Oceny

UNLOCK TABLES;

wykonanie zapytania


Document Outline


Wyszukiwarka

Podobne podstrony:
E wyk11 id 827343 Nieznany
IB wyk11
fp-wyk11, UE Katowice FiR, finanse publiczne
ssf-wyk11
IB wyk11 11
WYK11
PO wyk11 v2
pra-wyk11, UE Katowice FiR, prawo
cw 5 wyk11, Politechnika Wrocławska, W-5 Wydział Elektryczny, Fizyka G2, fiza laborki, fiza kalit, f
io wyk11
materialy wykladowe wyk11 d id Nieznany
ub-wyk11, FIR UE Katowice, SEMESTR IV, Ubezpieczenia, ubezpieczenia
fpr-wyk11, FIR UE Katowice, SEMESTR IV, Finanse przedsiębiorstw, Finanse Przedsiębiorstwa
ban-wyk11, UE Katowice FiR, bankowość
isd wyk11
WYK11 1S
wyk11 pole magn
el1011 wyk11 generatory

więcej podobnych podstron