Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
II
2- Gestione delle transazioni
LE TRANSAZIONI
Definizione di transazione
begin T1
AZIONI
PROGRAMMA
APPLICATIVO
TRANSAZIONE
T1
end T1
begin T2
AZIONI
TRANSAZIONE
T2
end T2
Una transazione
start transaction;
update ContoCorrente
set Saldo = Saldo + 10 where NumConto = 12202;
update ContoCorrente
set Saldo = Saldo 10 where NumConto = 42177;
commit work;
Il concetto di transazione
Una unit di elaborazione che gode delle propriet
"ACIDE"
Atomicit
Consistenza
Isolamento
Durabilit (persistenza)
Atomicit
Consistenza
Isolamento
10
Durabilit (Persistenza)
11
Atomicit e persistenza:
Gestore dell'affidabilit (Reliability manager)
Isolamento:
Gestore della concorrenza
Consistenza:
Gestore dell'integrit a tempo di esecuzione (con il
supporto del compilatore del DDL)
12
CONTROLLO DI AFFIDABILIT
13
Gestore
delle transazioni
Gestore di
Interrogazioni e aggiornamenti
scansione,accesso diretto,
ordinamento
Gestore dei
metodi daccesso
lettura/scrittura "virtuale"
Gestore
del buffer
Gestore delle
transazioni
Begin,Commit ,Abort
Schedule
Gestore della
concorrenza
Fix, Unfix
Begin,Commit ,Abort
Gestore della
affidabilit
lettura/scrittura fisica
Gestore della
memoria secondaria
Memoria
secondaria
rev. ott. 2009
14
Gestore dell'affidabilit
15
Gestore delle
transazioni
fix, unfix
BD
Log
rev. ott. 2009
16
17
18
19
C(T2)
U(T2,)U(T2,)
B(T3) CK
U(T1,) U(T1,)
Crash
U(T3,) U(T3,)
20
21
22
Checkpoint
23
Checkpoint (2)
24
Dump
25
26
Commit- Precedenza:
si scrive il giornale - parte after - prima del commit
consente di rifare le azioni poich se le pagine modificate
non sono state ancora trascritte dal buffer manager viene
reso disponibile nel log il valore in esse registrato.
27
28
U(T,X,BS,AS)
U(T,Y,BS,AS)
IMMEDIATA
B(T)
U(T,X,BS,AS)
(a)
w(y)
U(T,Y,BS,AS)
DIFFERITA
(b)
w(y)
B(T)
U(T,X,BS,AS)
U(T,Y,BS,AS)
w(x)
MISTA
rev. ott. 2009
(c)
w(x)
Gestione delle transazioni
w(y)
29
Modalit immediata
Il DB contiene valori AS provenienti da transazioni uncommitted
Richiede Undo delle operazioni di transazioni uncommited al
momento del guasto
Non richiede Redo
dump
CK
T1
T2
T3
T4
Niente
Crash
Niente
Niente
Undo
Undo
T5
rev. ott. 2009
30
Modalit differita
Il DB non contiene valori AS di transazioni uncommitted
In caso di abort, non occorre fare niente
Rende superflua la procedura di Undo.
Richiede Redo delle operazioni di transazioni commited al
momento del guasto
dump
CK
T1
T2
T3
T4
Niente
Crash
Redo
Redo
Niente
Niente
T5
rev. ott. 2009
31
dump
CK
T1
T2
T3
T4
Niente
Crash
Redo
Redo
Undo
Undo
T5
rev. ott. 2009
32
Guasti
33
Modello "fail-stop"
Fail
Stop
Normal
Fail
Boot
Fine
Ripristino
Ripristino
34
Processo di restart
35
Ripresa a caldo
Quattro fasi:
1. trovare l'ultimo checkpoint (ripercorrendo il log a ritroso)
2. costruire gli insiemi UNDO (transazioni da disfare) e REDO
(transazioni da rifare)
3. ripercorrere il log all'indietro, fino alla pi vecchia azione delle
transazioni in UNDO e REDO, disfacendo tutte le azioni delle
transazioni in UNDO
4. ripercorrere il log in avanti, rifacendo tutte le azioni delle
transazioni in REDO
36
UNDO = {T2,T3,T4}
Crash
CK
T1
T2
T3
T4
T5
37
UNDO = {T2,T3,T4}
Crash
CK
T1
T2
T3
T4
T5
38
Setup
39
3. Fase UNDO
B(T1)
B(T2)
8. U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
7. U(T3,O2,B3,A3)
9. U(T4,O3,B4,A4)
CK(T2,T3,T4)
1. C(T4)
2. B(T5)
6. U(T3,O3,B5,A5)
10. U(T5,O4,B6,A6)
5. D(T3,O5,B7)
A(T3)
3. C(T5)
4. I(T2,O6,A8)
Setup
Undo
7. O2 =B3
8. O1=B1
40
4. Fase REDO
B(T1)
B(T2)
8. U(T2, O1, B1, A1)
I(T1, O2, A2)
B(T3)
C(T1)
B(T4)
7. U(T3,O2,B3,A3)
9. U(T4,O3,B4,A4)
CK(T2,T3,T4)
1. C(T4)
2. B(T5)
6. U(T3,O3,B5,A5)
10. U(T5,O4,B6,A6)
5. D(T3,O5,B7)
A(T3)
3. C(T5)
4. I(T2,O6,A8)
Setup
Undo
7. O2 =B3
8. O1=B1
9. O3 = A4
10. O4 = A6
Redo
41
Ripresa a freddo
1. Si ripristinano i dati a partire dal backup e si accede al pi
recente record di dump del log;
2. si eseguono tutte le operazioni registrate sul log relativamente
alla parte deteriorata riportandosi all'istante precedente il
guasto;
3. si esegue una ripresa a caldo
42
CONTROLLO DI CONCORRENZA
43
Controllo di concorrenza
44
Gestore
delle transazioni
Gestore di
Interrogazioni e aggiornamenti
scansione,accesso diretto,
ordinamento
Gestore dei
metodi daccesso
lettura/scrittura "virtuale"
Gestore
del buffer
Gestore delle
transazioni
Begin,Commit ,Abort
Schedule
Gestore della
concorrenza
Begin,Commit ,Abort
Gestore della
affidabilit
lettura/scrittura fisica
Gestore della
memoria secondaria
Memoria
secondaria
rev. ott. 2009
45
Gestore delle
transazioni
read, write
Tabella
dei lock
read, write
(non tutte e in ordine ev. diverso)
Gestore della
memoria secondaria
BD
rev. ott. 2009
46
Modello di riferimento
Operazioni di read e write su oggetti astratti x, y, z:
r(x), w(x) ; r(y), w(y); r(z),w(z)
Esemplificazioni di operazioni in memoria centrale su tali
oggetti come se essi fossero numerici ( ignorando che le
operazioni richiedono lintera pagina dove risiedono i dati).
47
w1(x)
commit
t2
bot
r2(x)
x=x+1
w2(x)
commit
48
t2
bot
r2(x)
commit
49
t2
bot
r2(x)
x=x+1
w2(x)
commit
r1(x)
commit
50
t2
bot
r2(y)
y = y - 100
r2(z)
z = z + 100
w2(y)
w2(z)
commit
r1(z)
s=y+z
commit
51
t1
t2
bot
"legge gli stipendi degli impiegati
del dipart. A e calcola la media"
bot
"inserisce un impiegato in
A"
commit
"legge gli stipendi degli impiegati
del dipart. A e calcola la media"
commit
52
Anomalie
Perdita di aggiornamento
Lettura sporca
Letture inconsistenti
Aggiornamento fantasma
Inserimento fantasma
W-W
R-W (o W-W) con abort
R-W
R-W
R-W su dato "nuovo"
53
Il modello di transazione
Transazione:
Sequenza di azioni di lettura e scrittura
Viene omesso ogni riferimento alle operazioni di
manipolazione in memoria da parte della transazione
Ogni transazione pertanto un oggetto sintattico in cui si
conoscono solo le azioni di ingresso e uscita.
esempio di transazione:
t1 : r1(x) r1(y) w1(x) w1(y)
Le transazioni avvengono concorrentemente e pertanto le
operazioni di lettura e scrittura vengono richieste in istanti
successivi da varie transazioni ...
54
Schedule
55
Controllo di concorrenza
56
Idea base
Schedule
Serializzabili
Schedule
Seriali
Schedule
57
Conflict-serializzabilit
Definizione preliminare:
Due azioni ai ed aj sono in conflitto se:
i j
operano sullo stesso oggetto
almeno una di esse una scrittura
due casi: conflitto read-write (rw o wr)
conflitto write-write (ww).
Uno schedule Si si dice conflict-equivalente ad uno schedule Sj
(Si c Sj) se: include le stesse operazioni e ogni coppia di
operazioni in conflitto compare nello stesso ordine in
entrambi gli schedule
58
59
60
61
Schedule
Schedule
CSR
Schedule
Seriali
62
63
Lock
Principio:
Tutte le letture sono precedute da r_lock (lock condiviso) e
seguite da unlock
Tutte le scritture sono precedute da w_lock (lock esclusivo)
e seguite da unlock
Quando una stessa transazione prima legge e poi scrive un
oggetto, pu:
richiedere subito un lock esclusivo
chiedere prima un lock condiviso e poi uno esclusivo (lock
escalation)
Il lock manager riceve queste richieste dalle transazioni e le
accoglie o rifiuta, sulla base della tavola dei conflitti
64
65
66
La classe 2PL
Un sistema transazionale:
ben formato rispetto al locking:
cio se le transazioni richiedono un lock opportuno prima
di accedere alle risorse e lo rilasciano prima del termine
della transazione;
con un gestore dei lock che rispetta le regole della tabella
con le transazioni che seguono il principio del lock a due fasi
caratterizzato dalla serializzabilit delle proprie transazioni.
La classe 2PL contiene schedule che soddisfano queste
condizioni
67
2PL e CSR
t2
t3
Sufficienza: facoltativo
68
S schedule 2PL
Consideriamo per ciascuna transazione listante in cui ha tutte le
risorse e sta per rilasciare la prima
Ordiniamo le transazioni in accordo con questo valore
temporale e consideriamo lo schedule seriale corrispondente
Vogliamo dimostrare che tale schedule equivalente ad S:
allo scopo, consideriamo un conflitto fra unazione di ti e
unazione dei tj con i<j; possibile che compaiano in ordine
invertito in S? no, perch in tal caso tj dovrebbe aver
rilasciato la risorsa in questione prima della sua acquisizione
da parte di ti
69
70
71
72
CSR e 2PL
Schedule
Schedule
CSR
Schedule
2PL
Schedule
Seriali
73
74
Algoritmo TS monoversione
75
76
Esempio TS monoversione
VALORI INIZIALI:
Richiesta
Risposta
read(x,6)
read(x,8)
read(x,9)
write(x,8)
write(x,11)
read(x,10)
ok
ok
ok
no, t8 uccisa
ok
no, t10 uccisa
RTM(x) = 7
WTM(x) = 4
NUOVI VALORI
RTM(x) = 8
RTM(x) = 9
WTM(x) = 11
77
Algoritmo TS multiversione
78
Esempio TS multiversione
VALORI INIZIALI:
Richiesta
Risposta
read(x,6)
read(x,8)
read(x,9)
write(x,8)
write(x,11)
read(x,10)
ok
ok
ok
no, t8 uccisa
ok
ok
RTM(x) = 7
WTM1(x) = 4
NUOVI VALORI
RTM(x) = 8
RTM(x) = 9
WTM2(x) = 11
RTM(x)=10 legge da x1
79
2PL vs TS
Sono incomparabili
Schedule in TS ma non in 2PL
r1(x) w1(x) r2(x) w2(x) r0(y) w1(y)
Schedule in 2PL ma non in TS
r2(x) w2(x) r1(x) w1(x)
Schedule in TS e in 2PL
r1(x) r2(y) w2(y) w1(x) r2(x) w2(x)
80
CSR, 2PL e TS
Tutti
2PL
CSR
TS
Seriali
81
2PL vs TS
82
Stallo (deadlock)
83
84
Time-out
85
Detection
Non si pongono vincoli alle transazioni.
Ad intervalli prefissati, o quando succede qualcosa, il
contenuto della tabella dei lock esaminato e comparato
con le richieste pendenti.
Si costruisce un grafico delle richieste.
Se in tale grafico esiste un ciclo, c un deadlock.
Il ciclo deve essere spezzato uccidendo almeno una
transazione.
86
Prevenction
87
Prevenction
Tecnica approssimata:
tutte le transazioni richiedono i lock nello stesso tempo;
non sempre la transazione conosce tutto quello di cui avr
bisogno;
non tutti i deadlock sono eliminati.
Tecnica approssimata:
ad ogni transazione associato un timestamp;
se un lock non concesso, la transazione aspetta solo se
essa pi giovane della transazione che detiene il lock;
non tutti i lock sono eliminati.
88
89
SET TRANSACTION
[READ ONLY|READ WRITE]
[ISOLATION LEVEL [READ UNCOMMITTED| READ
COMMITTED|REPETEABLE READ|SERIALIZABLE]]
Le transazioni possono essere a sola lettura oppure read /write
(caso di default).
Le transazioni a sola lettura non richiedono lock-esclusivi.
Lisolamento tra le transazioni definito tramite livelli crescenti.
I livelli ad isolamento basso (uncommitted, ...) semplificano il
controllo della concorrenza e vanno usati quindi quando ne
ricorrono nella transazione le condizioni di funzionamento.
Tutti i livelli richiedono il 2PL stretto per le scritture.
la perdita di aggiornamento che coinvolge due
transazioni che scrivono entrambe sempre evitata
90
91
92
93
Lock di predicato
Caso peggiore:
Il blocco sull'intera relazione
Se siamo fortunati:
Il blocco sull'indice
94
Uncommited Read
Transazione1
Transazione 2
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITTED
BEGIN TRAN
UPDATE authors
SET au_lname='Smith'
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
ROLLBACK TRAN
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
95
Commited Read
Transazione1
Transazione 2
SET TRANSACTION ISOLATION LEVEL
READ COMMITTED
BEGIN TRAN
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
UPDATE authors
SET au_lname='Smith'
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
COMMIT TRAN
96
Repeatable Read
Transazione 1
Transazione 2
SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ
BEGIN TRAN
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
UPDATE authors
SET au_lname='Jones'
--la query si blocca!
SELECT au_lname
FROM authors
WHERE au_lname='Smith'
COMMIT TRAN
97
Serializable (1/2)
Transazione 1
Transazione2
SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ
BEGIN TRAN
SELECT title FROM titles
WHERE title_id LIKE 'BU%'
INSERT titles
VALUES ('BU2000',
'Inside SQL Server 2000',
'popular_comp', '0877', 59.95,
5000, 10, 0, null, 'Sep 10, 2000')
SELECT title FROM titles
WHERE title_id LIKE 'BU%'
--risultato diverso!
COMMIT TRAN
98
Serializable (2/2)
Transazione 1
Transazione 2
SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE
BEGIN TRAN
SELECT title FROM titles
WHERE title_id LIKE 'BU%'
INSERT titles
VALUES ('BU3000',
'Itzik and His Black Belt SQL Tricks',
'popular_comp', '0877',
39.95, 10000, 12, 15000, null,
'Sep 15 2000')
--la query si blocca!
SELECT title FROM titles
WHERE title_id LIKE 'BU%'
--risultato uguale!
COMMIT TRAN
rev. ott. 2009
99