Basi di dati vol.2 Capitolo 2 Gestione delle...

52
1 Basi di dati vol.2 Capitolo 2 Gestione delle transazioni 26/05/2005 26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 2 Esempio di sistema informativo Esempio di sistema informativo GESTIONE GESTIONE IMPIANTI IMPIANTI ELENCHI ELENCHI ABBONATI ABBONATI IMMISSIONE DI IMMISSIONE DI ORDINI DI ORDINI DI SERVIZIO SERVIZIO GESTIONE GESTIONE RETE RETE AMMINISTRAZIONE AMMINISTRAZIONE GESTIONE GESTIONE ELENCHI ELENCHI ABBONATI ABBONATI CLIENTI CLIENTI BOLLETTE BOLLETTE COMMUTAZIONE COMMUTAZIONE RISORSE E RISORSE E MANUTENZIONE MANUTENZIONE

Transcript of Basi di dati vol.2 Capitolo 2 Gestione delle...

1

Basi di dati vol.2Capitolo 2

Gestione delle transazioni

26/05/2005

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 2

Esempio di sistema informativoEsempio di sistema informativo

GESTIONEGESTIONEIMPIANTIIMPIANTI

ELENCHIELENCHIABBONATIABBONATI

IMMISSIONE DI IMMISSIONE DI ORDINI DI ORDINI DI SERVIZIOSERVIZIO

GESTIONEGESTIONERETERETE

AMMINISTRAZIONEAMMINISTRAZIONE

GESTIONE GESTIONE ELENCHI ELENCHI ABBONATIABBONATI

CLIENTICLIENTI

BOLLETTEBOLLETTECOMMUTAZIONECOMMUTAZIONE

RISORSE E RISORSE E MANUTENZIONEMANUTENZIONE

2

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 3

Esempio di transazioneEsempio di transazione

ELENCHIELENCHIABBONATIABBONATI

GESTIONEGESTIONEIMPIANTIIMPIANTI

IMMISSIONE DI IMMISSIONE DI ORDINI DI ORDINI DI SERVIZIOSERVIZIO

GESTIONEGESTIONERETERETE

AMMINISTRAZIONEAMMINISTRAZIONE

GESTIONE GESTIONE ELENCHI ELENCHI ABBONATIABBONATI

CLIENTICLIENTI

BOLLETTEBOLLETTECOMMUTAZIONECOMMUTAZIONE

RISORSE E RISORSE E MANUTENZIONEMANUTENZIONE

11

33

22

66

55

88

77

1111

1010

99

44

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 4

DEFINIZIONE DI TRANSAZIONE

• Transazione: parte di programma caratterizzata da un inizio (begin-transaction, start transaction in SQL), una fine (end-transaction, non esplicitata in SQL) e al cui interno deve essere eseguito una e una sola volta uno dei seguenti comandi– commit work per terminare correttamente– rollback work per abortire la transazione

• Un sistema transazionale (OLTP) e’ in grado di definire ed eseguire transazioni per conto di un certo numero di applicazioni concorrenti

3

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 5

DIFFERENZA FRA APPLICAZIONE E TRANSAZIONE

begin T1

begin T2

end T1

end T2

TRANSAZIONE T2

TRANSAZIONE T1

PROGRAMMAAPPLICATIVO

AZIONI

AZIONI

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 6

Una transazione

start transaction;update ContoCorrente

set Saldo = Saldo + 10 where NumConto = 12202;update ContoCorrenteset Saldo = Saldo – 10 where NumConto = 42177;

commit work;

4

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 7

Una transazione con varie decisioni

start transaction;update ContoCorrente

set Saldo = Saldo + 10 where NumConto = 12202;update ContoCorrenteset Saldo = Saldo – 10 where NumConto = 42177;

select Saldo into A from ContoCorrentewhere NumConto = 42177;

if (A>=0) then commit workelse rollback work;

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 8

Transazioni in JDBC

• Scelta della modalità delle transazioni: un metodo definito nell'interfaccia Connection:

setAutoCommit(boolean autoCommit)

• con.setAutoCommit(true)

– (default) "autocommit": ogni operazione è una transazione

• con.setAutoCommit(false)

– gestione delle transazioni da programmacon.commit()con.rollback()

– non c'è start transaction

5

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 9

Il concetto di transazione

• Una unità di elaborazione che gode delle proprietà"ACIDE" – Atomicità– Consistenza– Isolamento– Durabilità (persistenza)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 10

Atomicità

• Una transazione è una unità atomica di elaborazione• Non può lasciare la base di dati in uno stato intermedio

– un guasto o un errore prima del commit debbono causare l'annullamento (UNDO) delle operazioni svolte

– un guasto o errore dopo il commit non deve avere conseguenze; se necessario vanno ripetute (REDO) le operazioni

• Esito– Commit = caso "normale" e più frequente (99% ?)– Abort (o rollback)

• richiesto dall'applicazione = suicidio• richiesto dal sistema (violazione dei vincoli, concorrenza,

incertezza in caso di fallimento) = omicidio

6

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 11

Consistenza

• La transazione rispetta i vincoli di integrità• Conseguenza:

– se lo stato iniziale è corretto– anche lo stato finale è corretto

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 12

Isolamento

• La transazione non risente degli effetti delle altre transazioniconcorrenti– l'esecuzione concorrente di una collezione di transazioni

deve produrre un risultato che si potrebbe ottenere con una esecuzione sequenziale

• Conseguenza: una transazione non espone i suoi stati intermedi– si evita l' "effetto domino"

7

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 13

Durabilità (Persistenza)

• Gli effetti di una transazione andata in commit non vanno perduti ("durano per sempre"), anche in presenza di guasti– Commit significa impegno

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 14

Transazioni e moduli di DBMS

• Atomicità e durabilità– Gestore dell'affidabilità (Reliability manager)

• Isolamento:– Gestore della concorrenza

• Consistenza:– Gestore dell'integrità a tempo di esecuzione (con il supporto

del compilatore del DDL)

8

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 15

Memoriasecondaria

Gestore dellamemoria secondaria

Gestoredel buffer

Gestore deimetodi d’accesso

Gestore di Interrogazioni e aggiornamenti

Gestore delletransazioni

Gestore dellaconcorrenza

Gestore dellaaffidabilità

Gestore degli accessi e delle interrogazioni

Gestoredelle transazioni

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 16

Gestore dell'affidabilità

• Gestisce l'esecuzione dei comandi transazionali– start transaction (B, begin)– commit work (C)– rollback work (A, abort)e le operazioni di ripristino (recovery) dopo i guasti :– warm restart e cold restart

• Assicura atomicità e durabilità• Usa il log:

– Un archivio permanente che registra le operazioni svolte– Due metafore:

• il filo di Arianna • i sassolini e le briciole di Hansel e Gretel

9

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 17

Architettura del controllore dell'affidabilità

BD

Log

Gestore dellamemoria secondaria

Gestoredel buffer

Gestore deimetodi d’accesso

Gestore delletransazioni

Gestore della affidabilità

fix, unfix begin, commit, abort

fix, unfix, force(pagine BD e log)

read, write

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 18

Persistenza delle memorie

• Memoria centrale: non è persistente• Memoria di massa: è persistente ma può danneggiarsi• Memoria stabile: memoria che non può danneggiarsi (è una

astrazione):– perseguita attraverso la ridondanza:

• dischi replicati• nastri• …

10

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 19

Modello di riferimento

• Una transazione è costituita da una sequenza di operazioni di input-output su oggetti astratti x, y, z (ignoriamo la semantica delle applicazioni)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 20

Il log

• Il log è un file sequenziale gestito dal controllore dell'affidabilità, scritto in memoria stabile

• “Diario di bordo:” riporta tutte le operazioni in ordine• Record nel log

– operazioni delle transazioni • begin, B(T) • insert, I(T,O,AS) • delete, D(T,O,BS)• update, U(T,O,BS,AS) • commit, C(T), abort, A(T)

– record di sistema • dump• checkpoint

11

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 21

Struttura del log

CK CrashB(T1) B(T2) C(T2) B(T3)

U(T3,…)U(T1,…)U(T2,…)

dumpU(T2,…)

U(T3,…)U(T1,…)

CK

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 22

Log, checkpoint e dump: a che cosa servono?

• Il log serve “a ricostruire” le operazioni• Checkpoint e dump servono ad evitare che la ricostruzione

debba partire dall'inizio dei tempi– si usano con riferimento a tipi di guasti diversi

12

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 23

Undo e redo

• Undo di una azione su un oggetto O: – update, delete: copiare il valore del before state (BS)

nell'oggetto O– insert: eliminare O

• Redo di una azione su un oggetto O:– insert, update: copiare il valore dell' after state (AS) into

nell'oggetto O – delete: reinserire O

• Idempotenza di undo e redo: – undo(undo(A)) = undo(A) – redo(redo(A)) = redo(A)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 24

Dump

• Copia completa (“di riserva,” backup) della base di dati– Solitamente prodotta mentre il sistema non è operativo– Salvato in memoria stabile– Un record di dump nel log indica il momento in cui il log è

stato effettuato (e dettagli pratici, file, dispositivo, …)

13

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 25

Checkpoint

• Operazione che serve a "fare il punto" della situazione, semplificando le successive operazioni di ripristino:– ha lo scopo di registrare quali transazioni sono attive in un

certo istante (e dualmente, di confermare che le altre o non sono iniziate o sono finite)

• Paagone (estremo):– la "chiusura dei conti" di fine anno di una amministrazione:

• dal 25 novembre (ad esempio) non si accettano nuove richieste di "operazioni" e si concludono tutte quelle avviate prima di accettarne di nuove

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 26

Checkpoint (2)

• Varie modalità, vediamo la più semplice:– si sospende l'accettazione di richieste di ogni tipo (scrittura,

inserimenti, …, commit, abort)– si trasferiscono in memoria di massa (tramite force) tutte le

pagine sporche relative a transazioni andate in commit– si registrano sul log in modo sincrono (force) gli identificatori

delle transazioni in corso (“record di checkpoint”)– si riprende l'accettazione delle operazioni

• Così siamo sicuri che – per tutte le transazioni che hanno effettuato il commit i dati

sono in memoria di massa– le transazioni "a metà strada" sono elencate nel checkpoint

14

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 27

Esito di una transazione

• L'esito di una transazione è determinato irrevocabilmente quando viene scritto il record di commit nel log in modo sincrono, con una force– una guasto prima di tale istante può portare (se necessario)

ad un undo di tutte le azioni, per ricostruire lo stato originario della base di dati

– un guasto successivo non deve avere conseguenze: lo stato finale della base di dati deve essere ricostruito, con redo (se necessario)

• record di abort possono essere scritti in modo asincrono

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 28

Regole fondamentali per il log

• Write-Ahead-Log:– si scrive sul giornale (il BS) prima che nella basi di dati

• consente di disfare le azioni• Commit-Precedenza:

– si scrive sul giornale (AS) prima del commit• consente di rifare le azioni

• Quando scriviamo nella base di dati?– Varie alternative

15

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 29

Scrittura nel log e nella base di dati

(c)

(a)

(b)

Scritture nel log

Scritture nella base di dati

t

t

t

w(x) w(y)

w(y) w(x)

w(x) w(y)

B(T) U(T,X,BS,AS) U(T,Y,BS,AS) C

B(T) U(T,X,BS,AS) U(T,Y,BS,AS) C

B(T) U(T,X,BS,AS) U(T,Y,BS,AS) C

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 30

Modalita’ 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 Crash

T3

T1

T4

T2

T5

Niente NienteNiente

UndoUndo

16

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 31

Modalita’ differita

• Il DB non contiene valori AS provenienti da transazioni uncommitted

• In caso di abort, non occorre fare niente• Rende superflua la procedura di Undo. Richiede Redo

dump CK Crash

T3

T1

T4

T2

T5

Niente RedoRedo

NienteNiente

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 32

Esiste una terza modalita’:modalità mista

• La scrittura puo’ avvenire in modalita’ sia immediata che differita• Consente l’ottimizzazione delle operazioni di flush• Richiede sia Undo che Redo

dump CK Crash

T3

T1

T4

T2

T5

Redo

Redo

UndoUndo

Niente

17

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 33

Ottimizzazioni

• Diversi record di log in una pagina• Diversi record di log scritti insieme in modo sincrono subito

prima del commit• Commit di diverse transazioni in contemporanea (group commit)• Parallelismo nella scrittura dei log

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 34

Guasti

• Guasti "soft": errori di programma, crash di sistema, caduta di tensione– si perde la memoria centrale– non si perde la memoria secondariawarm restart, ripresa a caldo

• Guasti "hard": sui dispositivi di memoria secondaria– si perde anche la memoria secondaria– non si perde la memoria stabile (e quindi il log)cold restart, ripresa a freddo

18

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 35

Modello "fail-stop"

Fail

FailStop

Boot

Restart

Normal

Restartcompletato

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 36

Processo di restart

• Obiettivo: classificare le transazioni in– completate (tutti i dati in memoria stabile)– in commit ma non necessariamente completate (può servire

redo)– senza commit (vanno annullate, undo)

19

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 37

Ripresa a caldo

Quattro fasi:• trovare l'ultimo checkpoint (ripercorrendo il log a ritroso)• costruire gli insiemi UNDO (transazioni da disfare) e REDO

(transazioni da rifare) • ripercorrere il log all'indietro, fino alla più vecchia azione delle

transazioni in UNDO e REDO, disfacendo tutte le azioni delle transazioni in UNDO

• ripercorrere il log in avanti, rifacendo tutte le azioni delle transazioni in REDO

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 38

Esempio di warm restartB(T1)B(T2)U(T2, O1, B1, A1)I(T1, O2, A2)B(T3)C(T1)B(T4)U(T3,O2,B3,A3)U(T4,O3,B4,A4)CK(T2,T3,T4)C(T4)B(T5)U(T3,O3,B5,A5)U(T5,O4,B6,A6)D(T3,O5,B7)A(T3)C(T5)I(T2,O6,A8)

CK Crash

T4

T1

T2

T3

T5

C

A

C

C

20

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 39

1. Ricerca dell’ultimo checkpointB(T1)B(T2)U(T2, O1, B1, A1)I(T1, O2, A2)B(T3)C(T1)B(T4)U(T3,O2,B3,A3)U(T4,O3,B4,A4)CK(T2,T3,T4)C(T4)B(T5)U(T3,O3,B5,A5)U(T5,O4,B6,A6)D(T3,O5,B7)A(T3)C(T5)I(T2,O6,A8)

CK Crash

T4

T1

T2

T3

T5

C

A

C

C

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 40

2. Costruzione degli insiemi UNDO e REDO

B(T1)B(T2)U(T2, O1, B1, A1)I(T1, O2, A2)B(T3)C(T1)B(T4)U(T3,O2,B3,A3)U(T4,O3,B4,A4)CK(T2,T3,T4)

1. C(T4)2. B(T5)

U(T3,O3,B5,A5)U(T5,O4,B6,A6)D(T3,O5,B7)A(T3)

3. C(T5)I(T2,O6,A8)

0. UNDO = {T2,T3,T4}. REDO = {}

1. C(T4) UNDO = {T2, T3}. REDO = {T4}

2. B(T5) UNDO = {T2,T3,T5}. REDO = {T4}

3. C(T5) UNDO = {T2,T3}. REDO = {T4, T5}

Setup

21

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 41

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)U(T4,O3,B4,A4)CK(T2,T3,T4)

1. C(T4)2. B(T5)6. U(T3,O3,B5,A5)

U(T5,O4,B6,A6)5. D(T3,O5,B7)

A(T3)3. C(T5)4. I(T2,O6,A8)

0. UNDO = {T2,T3,T4}. REDO = {}

1. C(T4) UNDO = {T2, T3}. REDO = {T4}

2. B(T5) UNDO = {T2,T3,T5}. REDO = {T4}

3. C(T5) UNDO = {T2,T3}. REDO = {T4, T5}

4. D(O6)

5. O5 =B7

6. O3 = B5

7. O2 =B3

8. O1=B1

Undo

Setup

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 42

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)

0. UNDO = {T2,T3,T4}. REDO = {}

1. C(T4) UNDO = {T2, T3}. REDO = {T4}

2. B(T5) UNDO = {T2,T3,T5}. REDO = {T4}

3. C(T5) UNDO = {T2,T3}. REDO = {T4, T5}

4. D(O6)

5. O5 =B7

6. O3 = B5

7. O2 =B3

8. O1=B1

9. O3 = A4

10. O4 = A6

Undo

Redo

Setup

22

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 43

Ripresa a freddo

• Si ripristinano i dati a partire dal backup• Si eseguono le operazioni registrate sul giornale fino all'istante

del guasto• Si esegue una ripresa a caldo

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 44

Memoriasecondaria

Gestore dellamemoria secondaria

Gestoredel buffer

Gestore deimetodi d’accesso

Gestore di Interrogazioni e aggiornamenti

Gestore delletransazioni

Gestore dellaconcorrenza

Gestore dellaaffidabilità

Gestore degli accessi e delle interrogazioni

Gestoredelle transazioni

23

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 45

Controllo di concorrenza

• La concorrenza è fondamentale: decine o centinaia di transazioni al secondo, non possono essere seriali

• Esempi: banche, prenotazioni aeree

Problema• Anomalie causate dall'esecuzione concorrente, che quindi va

governata

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 46

Perdita di aggiornamento

• Due transazioni identiche: – t1: r(x), x = x + 1, w(x)– t2 : r(x), x = x + 1, w(x)

• Inizialmente x=2; dopo un'esecuzione seriale x=4• Un'esecuzione concorrente:

t1 t2

r1(x)x = x + 1

r2(x)x = x + 1

w1(x)commit

w2(x)commit

• Un aggiornamento viene perso: x=3

24

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 47

Lettura sporca

t1 t2

r1(x)x = x + 1w1(x)

r2(x) abort

• t2 ha letto uno stato intermedio ("sporco") e lo può comunicare all'esterno

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 48

Letture inconsistenti

• t1 legge due volte x :t1 t2

r1(x)r2(x)x = x + 1w2(x)commit

r1(x)commit

• t1 legge due valori diversi per x !

25

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 49

Aggiornamento fantasma

• Supponiamo che y + z = 1000; t1 t2

r1(y)r2(y)y = y - 100r2(z)z = z + 100w2(y)w2(z)commit

r1(z)s = y + zcommit

• s = 1100: ma la somma y + z non è mai stata “davvero” 1100:– t1 vede uno stato non esistente (o non coerente)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 50

Inserimento fantasma

t1 t2

"legge gli stipendi degli impiegatidel dip A e calcola la media"

"inserisce un impiegato in A"commit

"legge gli stipendi degli impiegatidel dip A e calcola la media"commit

26

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 51

Anomalie

• Perdita di aggiornamento W-W• Lettura sporca R-W (o W-W) con abort• Letture inconsistenti R-W• Aggiornamento fantasma R-W• Inserimento fantasma R-W su dato "nuovo"

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 52

Gestore della concorrenza (ignorando buffer e affidabilità)

BD

Gestore dellamemoria secondaria

Gestore deimetodi d’accesso

Gestore delletransazioni

Gestore della concorrenza

read, write begin, commit, abort

read, write(non tutte e in ordine ev. diverso)

Tabella dei lock

27

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 53

“Teoria” del controllo di concorrenza

• Transazione: sequenza di letture e scritture (senza ulteriore semantica)

• Notazione: ogni transazione ha un identificatore univoco• Esempio:

– t 1 : r1(x) r1(y) w1(x) w1(y)• Ipotesi semplificativa (che rimuoveremo in futuro, in quanto non

accettabile in pratica):– ignoriamo le transazioni che vanno in abort (e quindi non

scriviamo commit e abort)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 54

Schedule

• Sequenza di operazioni di input/output di transazioni concorrenti• Esempio:

S1 : r1(x) r2(z) w1(x) w2(z)• A seguito dell’ipotesi semplificativa:

– consideriamo la commit-proiezione degli schedule reali, in quanto ignoriamo le transazioni che vanno in abort, rimuovendo tutte le loro azioni dallo schedule

28

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 55

Controllo di concorrenza

• Obiettivo: evitare le anomalie• Scheduler: un sistema che accetta o rifiuta (o riordina) le

operazioni richieste dalle transazioni (mantenendo l'ordine delle azioni in ciascuna transazione)

• Schedule seriale: le transazioni sono separate, una alla voltaS2 : r0(x) r0(y) w0(x) r1(y) r1(x) w1(y) r2(x) r2(y) r2(z) w2(z)

– uno schedule seriale non presenta anomalie• Schedule serializzabile: produce lo “stesso risultato” di uno

schedule seriale sulle stesse transazioni– richiede una nozione di equivalenza fra schedule

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 56

Idea base

• Individuare classi di schedule serializzabili che siano sottoclassi degli schedule possibili, siano serializzabili e la cui proprietà di serializzabilità sia verificabile a costo basso

ScheduleSeriali

ScheduleScheduleSerializzabili

29

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 57

View-Serializzabilità

• Definizioni prelilminari:– ri(x) legge-da wj(x) in uno schedule S se wj(x) precede ri(x)

in S e non c'è wk(x) fra ri(x) e wj(x) in S– wi(x) in uno schedule S è scrittura finale se è l'ultima

scrittura dell'oggetto x in S• Schedule view-equivalenti (Si ≈V Sj): hanno la stessa relazione

legge-da e le stesse scritture finali – nota: le operazioni di una transazione debbono mantenere

l'ordine• Uno schedule è view-serializzabile se è view-equivalente ad

un qualche schedule seriale• L'insieme degli schedule view-serializzabili è indicato con VSR

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 58

View serializzabilità: esempi

S2 : r2(x) w0(x) r1(x) w2(x) w2(z)S3 : w0(x) r2(x) r1(x) w2(x) w2(z)S4 : w0(x) r1(x) r2(x) w2(x) w2(z)S5 : w0(x) r1(x) w1(x) r2(x) w1(z)S6 : w0(x) r1(x) w1(x) w1(z) r2(x)

– S2 non è view-equivalente a S3

– S3 è view-equivalente allo schedule seriale S4 (e quindi èview-serializzabile)

– S5 è view-equivalente allo schedule seriale S6

30

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 59

View serializzabilità: esempi (2)

S7 : r1(x) r2(x) w1(x) w2(x) (perdita di aggiornamento)S8 : r1(x) r2(x) w2(x) r1(x) (letture inconsistenti)S9 : r1(x) r1(y) r2(z) r2(y) w2(y) w2(z) r1(z)

(aggiornamento fantasma)

• S7, S8, S9 non sono view-serializzabili

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 60

View serializzabilità

• Complessità:– la verifica della view-equivalenza di due schedule dati:

• polinomiale– decidere sulla View serializzabilità di uno schedule:

• problema NP-completo• Non è utilizzabile in pratica

31

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 61

Conflict-serializzabilità

• Definizione preliminare:– Un'azione ai è in conflitto con aj (i≠ j), se operano sullo

stesso oggetto e almeno una di esse è una scrittura. Due casi:

• conflitto read-write (rw o wr) • conflitto write-write (ww).

• Schedule conflict-equivalenti (Si ≈C Sj): includono le stesse operazioni e ogni coppia di operazioni in conflitto compare nello stesso ordine in entrambi

• Uno schedule è conflict-serializable se è conflict-equivalente ad un qualche schedule seriale

• L'insieme degli schedule conflict-serializzabili è indicato con CSR

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 62

CSR e VSR

• Ogni schedule conflict-serializzabile è view-serializzabile, ma non necessariamente viceversa

• Controesempio per la non necessità:

• r1(x) w2(x) w1(x) w3(x)

– view-serializzabile: • view-equivalente a r1(x) w1(x) w2(x) w3(x)

– non conflict-serializzabile

• Sufficienza: vediamo

32

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 63

CSR implica VSR

• CSR: esiste schedule seriale conflict-equivalente• VSR: esiste schedule seriale view-equivalente• Per dimostrare che CSR implica VSR è sufficiente dimostrare

che la conflict-equivalenza ≈C implica la view-equivalenza ≈V , cioè che se due schedule sono ≈C allora sono ≈V

• Quindi, supponiamo S1 ≈C S2 e dimostriamo che S1 ≈ V S2I due schedule hanno:– stesse scritture finali: se così non fosse, ci sarebbero

almeno due scritture in ordine diverso e poiché due scritture sono in conflitto i due schedule non sarebbero ≈C

– stessa relazione “legge-da”: se così non fosse, ci sarebbero scritture in ordine diverso o coppie lettura-scrittura in ordine diverso e quindi, come sopra, sarebbe violata la ≈C

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 64

CSR e VSR

ScheduleSeriali

ScheduleScheduleVSR

ScheduleCSR

33

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 65

Verifica di conflict-serializzabilità

• Per mezzo del grafo dei conflitti:– un nodo per ogni transazione ti– un arco (orientato) da ti a tj se c'è almeno un conflitto fra

un'azione ai e un'azione aj tale che ai precede aj

• Teorema– Uno schedule è in CSR se e solo se il grafo è aciclico

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 66

CSR e aciclicità del grafo dei conflitti

• Se uno schedule S è CSR allora è ≈C ad uno schedule seriale.Supponiamo le transazioni nello schedule seriale ordinate secondo il TID: t1, t2, …, tn . Poiché lo schedule seriale ha tutti i conflitti nello stesso ordine dello schedule S, nel grafo di S ci possono essere solo archi (i,j) con i<j e quindi il grafo non può avere cicli, perché un ciclo richiede almeno un arco (i,j) con i>j.

• Se il grafo di S è aciclico, allora esiste fra i nodi un “ordinamento topologico” (cioè una numerazione dei nodi tale che il grafo contiene solo archi (i,j) con i<j). Lo schedule seriale le cui transazioni sono ordinate secondo l’ordinamento topologico èequivalente a S, perché per tutti i conflitti (i,j) si ha sempre i<j.

34

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 67

Controllo della concorrenza in pratica

• Anche la conflict-serializabilità, pur più rapidamente verificabile (l'algoritmo, con opportune strutture dati richiede tempo lineare), è inutilizzabile in pratica

• Sarebbe efficiente se potessimo conoscere il grafo dall’inizio, ma così non è: uno scheduler deve operare “incrementalmente”, cioè ad ogni richiesta di operazione decidere se eseguirla subito oppure fare qualcos’altro; non è praticabile mantenere il grafo, aggiornarlo e verificarne l’aciclicità ad ogni richiesta di operazione

• Inoltre, si basa sull’ipotesi di commit-proiezione

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 68

Controllo della concorrenza in pratica, 2

• In pratica, si utilizzano tecniche che– garantiscono la conflict-serializzabilità senza dover costruire

il grafo– non richiedono l’ipotesi della commit-proiezione

• Le tecniche utilizzate– 2PL (two-phase locking)– timestamp

35

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 69

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 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

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 70

Gestione dei lock

• Basata sulla tavola dei conflittiRiochiesta Stato della risorsa

free r_locked w_lockedr_lock OK / r_locked OK / r_locked NO/ w_lockedw_lock OK / w_locked NO / r_locked NO / w_lockedunlock error OK / depends OK / free

– Un contatore tiene conto del numero di "lettori"; la risorsa èrilasciata quando il contatore scende a zero

• Se la risorsa non è concessa, la transazione richiedente è posta in attesa (eventualmente in coda), fino a quando la risorsa non diventa disponibile

• Il lock manager gestisce una tabella dei lock, per ricordare la situazione

36

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 71

Locking a due fasi

• Usato da quasi tutti i sistemi• Garantisce "a priori" la conflict-serializzabilità• Basata su due regole:

– protezione con lock di tutte le letture e scritture– vincolo sulle richieste e i rilasci dei lock:

• una transazione, dopo aver rilasciato un lock, non può acquisirne altri

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 72

2PL e CSR

• Ogni schedule 2PL e’ anche conflict serializzabile, ma non necessariamente viceversa

• Controesempio per la non necessita’:

r1(x) w1(x) r2(x) w2(x) r3(y) w1(y)

– Viola 2PL– Conflict-serializzabile

• Sufficienza: vediamo

37

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 73

2PL implica CSR

• S schedule 2PL• Consideriamo per ciascuna transazione l’istante 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 un’azione di ti e un’azione di 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

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 74

Concorrenza e fallimento di transazioni

• Rimuoviamo l’ipotesi di “commit-proiezione”• Le transazioni possono fallire:

– rollback a cascata (“effetto domino”):• se Ti ha letto un dato scritto da Tk e Tk fallisce, allora

anche Ti deve fallire– letture sporche:

• se Ti ha letto un dato scritto da Tk e Tk fallisce, ma nel frattempo Ti è andata in commit, allora abbiamo l’anomalia

38

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 75

Evitiamo effetto domino e letture sporche

• letture sporche:– una transazione non può andare in commit finché non sono

andate in commit tutte le transazioni da cui ha letto;– schedule che soddisfano questa condizione sono detti

recuperabili (recoverable)• rollback a cascata (“effetto domino”)

– una transazione non deve poter leggere dati scritti da transazioni che non sono ancora andate in commit

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 76

Locking a due fasi stretto (S2PL)

• Evita sia le letture sporche sia l’effetto domino• 2PL con una condizione aggiuntiva:

– I lock possono essere rilasciati solo dopo il commit o abort

39

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 77

CSR, VSR e 2PL

ScheduleSeriali

ScheduleScheduleVSR Schedule

CSRScheduleS2PLSchedule

2PL

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 78

Controllo di concorrenza basato su timestamp

• Tecnica alternativa al 2PL• Timestamp:

– identificatore che definisce un ordinamento totale sugli eventi di un sistema

• Ogni transazione ha un timestamp che rappresenta l'istante di inizio della transazione

• Uno schedule è accettato solo se riflette l'ordinamento seriale delle transazioni indotto dai timestamp

40

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 79

Dettagli

• Lo scheduler ha due contatori RTM(x) e WTM(x) per ogni oggetto• Lo scheduler riceve richieste di letture e scritture (con indicato il

timestamp della transazione):– read(x,ts):

• se ts < WTM(x) allora la richiesta è respinta e la transazione viene uccisa;

• altrimenti, la richiesta viene accolta e RTM(x) è posto uguale al maggiore fra RTM(x) e ts

– write(x,ts): • se ts < WTM(x) o ts < RTM(x) allora la richiesta è respinta e la

transazione viene uccisa, • altrimenti, la richiesta viene accolta e WTM(x) è posto uguale a

ts• Vengono uccise molte transazioni• Per funzionare anche senza ipotesi di commit-proiezione, deve

"bufferizzare" le scritture fino al commit (con attese)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 80

Esempio

RTM(x) = 7WTM(x) = 4

Richiesta Risposta Nuovo valore

read(x,6) okread(x,8) ok RTM(x) = 8read(x,9) ok RTM(x) = 9write(x,8) no, t8 uccisawrite(x,11) ok WTM(x) = 11read(x,10) no, t10 uccisa

41

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 81

Multiversion concurrency control

• Main idea: writes generate new copies, reads make access tothe correct copy

• Writes generate new copies each with a WTM. At any time, N >1 copies of each object x are active, with WTMN(x). There is onlyone global RTM(x)

• Mechanism: – read(x,ts): is always accepted. xk selected for reading such

that: if ts > WTMN(x), then k = N, otherwise k is taken suchthat WTMk(x) < ts < WTMk+1(x)

– write(x,ts): if ts < RTM(x) the request is refused, otherwise a new version of the item of data is added (N increased byone) with WTMN(x) = ts

• Old copies are discarded when there are no read transactionsinterested in their values

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 82

2PL vs TS

• Sono incomparabili

– Schedule in TS ma non in 2PLr1(x) w1(x) r2(x) w2(x) r0(y) w1(y)

– Schedule in 2PL ma non in TSr2(x) w2(x)r1(x) w1(x)

– Schedule in TS e in 2PLr1(x) r2(y) w2(y) w1(x) r2(x) w2(x)

42

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 83

CSR, VSR, 2PL e TS

Seriali

Tutti

VSR

CSR

2PL

TS

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 84

2PL vs TS

• In 2PL le transazioni sono poste in attesa• In TS uccise e rilanciate• Per rimuovere la commit proiezione, attesa per il commit in

entrambi i casi• 2PL può causare deadlock (vedremo)• Le ripartenze sono di solito più costose delle attese:

– conviene il 2PL

43

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 85

Lock management

• Interface: – r_lock(T, x, errcode, timeout)– w_lock(T, x, errcode, timeout)– unlock(T, x)

T: transaction identifierX: data elementtimeout: max wait in queue

• If timeout expires, errcode signals an error, typically the transaction rolls back and restarts

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 86

Hierarchical locking

• In many real systems locks can be specified at differentgranularity, e.g. tables, fragments, tuples, fields. These are organized in a hierarchy (possibly a directed acyclic graph)

• 5 locking modes:– 2 are shared and exclusive, renamed as:

• XL: exclusive lock• SL: shared lock

– 3 are new:• ISL: intention shared lock• IXL: intention exclusive lock• SIXL: shared intention-exclusive lock

• The choice of lock granularity is left to application designers;– too coarse: many resources are blocked– too fine: many locks are requested

44

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 87

Hierarchical locking protocol

• Locks are requested from the root to descendents in a hierarchy• Locks are released starting at the node locked and moving up

the tree• In order to request an SL or ISL on a node, a transaction must

already hold an ISL or IXL lock on the parent node• In order to request an IXL, XL, or SIXL on a node, a transaction

must already hold an SIXL or IXL lock on the parent node• The new conflict table is shown in the next slide

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 88

Conflicts in hierarchical locking

Resource stateRequest

ISL IXL SL SIXL XLISL OK OK OK OK NoIXL OK OK No No NoSL OK No OK No NoSIXL OK No No No NoXL No No No No No

45

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 89

Stallo (deadlock)

• Attese incrociate: due transazioni detengono ciascuna una risorsa e aspetttano la risorsa detenuta dall'altra

• Esempio: – t1: read(x), write(y)– t2: read(y), write(x)– Schedule:

r_lock1(x), r_lock2(y), read1(x), read2(y) w_lock1(y), w_lock2(x)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 90

Risoluzione dello stallo

• Uno stallo corrisponde ad un ciclo nel grafo delle attese (nodo=transazione, arco=attesa)

• Tre tecniche1. Timeout (problema: scelta dell'intervallo, con trade-off)2. Rilevamento dello stallo 3. Prevenzione dello stallo

• Rilevamento: ricerca di cicli nel grafo delle attese• Prevenzione: uccisione di transazioni "sospette" (può

esagerare)

46

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 91

Livelli di isolamento in SQL:1999 (e JDBC)

• Le transazioni possono essere definite read-only (non possono richiedere lock esclusivi)

• Il livello di isolamento può essere scelto per ogni transazione– read uncommitted permette letture sporche, letture

inconsistenti, aggiornamenti fantasma e inserimenti fantasma

– read committed evita letture sporche ma permette letture inconsistenti, aggiornamenti fantasma e inserimenti fantasma

– repeatable read evita tutte le anomalie esclusi gli inserimenti fantasma

– serializable evita tutte le anomalie• Nota:

– la perdita di aggiornamento è sempre evitata

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 92

Anomalie

Perdita di aggiornamento W-W• read uncommitted

Lettura sporca R-W (o W-W) con abort• read committed

Letture inconsistenti R-WAggiornamento fantasma R-W

• repeatable read

Inserimento fantasma R-W su dato "nuovo"• serializable

47

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 93

Livelli di isolamento: implementazione

• Sulle scritture si ha sempre il 2PL stretto (e quindi si evita la perdita di aggiornamento)

• read uncommitted:– nessun lock in lettura (e non rispetta i lock altrui)

• read committed:– lock in lettura (e rispetta quelli altrui), ma senza 2PL

• repeatable read:– 2PL anche in lettura, con lock sui dati

• serializable:– 2PL con lock di predicato

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 94

Lock di predicato

• Caso peggiore:– sull'intera relazione

• Se siamo fortunati:– sull'indice

48

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 95

Casi di studio per il tuningdi basi di dati

dal testo:D. Shasha.Database Tuning: a principled approach.Prentice-Hall, 1992

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 96

Caso 1

• Abbiamo una base di dati con dieci relazioni su due dischi: cinque e cinque; su un disco c'è anche il log.

• Compriamo un nuovo disco; che cosa ci mettiamo?

Possibile risposta• Il log

49

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 97

Caso 2

• Il tempo di risposta è variabile, in particolare ci sono rallentamenti quando vengono eseguite operazioni DDL

Possibile motivazione• Le operazioni DDL richiedono lock in scrittura sul catalogo

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 98

Caso 3

• Transazioni così organizzate sono insoddisfacenti:attribuzione di un nuovo numero di praticarichiesta di informazioni interattiveeffettuazione dell'inserimento

Possibile soluzione• transazione troppo lunga; vanno riordinati i passi, e nella

transazione ci devono essere solo il primo e il terzo

50

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 99

Caso 4

• Una transazione così organizzata eseguita a fine mese, di sera, è inefficiente:

per ogni conto stampare tutte le info ...

Possibile soluzione• essendo di sola lettura, di sera (tempo morto) potrebbe essere

senza lock (Read Uncommitted)

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 100

Casi 5 e 6

• Nell'ambito di una transazione, si calcola lo stipendio medio per ciascun dipartimento. Contemporaneamente si fanno modifiche su singoli stipendi.

• Le prestazioni sono insoddisfacenti. Possibili soluzioni• si può eseguire in un tempo morto (senza aggiornamenti) senza

lock (Read Uncommitted)• se sono tollerate (leggere) inconsistenze, si può procedere

senza lock (Read Uncommitted)• si può fare una copia e lavorare su di essa (dati non attuali)• se nessuna delle alternative è praticabile (non ci sono tempi

morti e si vogliono dati attuali e consistenti) si può provare con Repeatable Read (non c'è rischio di "phantom")

51

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 101

Caso 7

• Un'applicazione prevede:– migliaia di inserimenti ogni ora– centinaia di migliaia di piccoli aggiornamenti ogni ora

• Gli inserimenti arrivano in transazioni grandi ogni mezz'ora e durano 5 minuti. In queste fasi le prestazioni sono inaccettabili (tempo di risposta 30 sec, rispetto a mezzo secondo)

Possibili soluzioni• spezzare le transazioni con gli inserimenti• riorganizzare i file evitando strutture ordinate

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 102

Caso 8

• Un'applicazione che prevede un'istruzione SQL all'interno di un ciclo è lenta (e usa molto tempo di CPU)

Possibile soluzione• usare bene il cursore (facciamo fare i cicli e soprattutto i join

all'SQL)

52

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 103

Caso 9

• Un disco è inefficiente anche se non pieno. Ci sono relativamente pochi inserimenti e molte letture lunghe (scansioni)

Possibili soluzioni• separare il log su un disco a sé• riorganizzare i file in modo contiguo

26/05/2005 Basi di dati, vol.2 cap.2 Gestione delle transazioni 104

Caso 10

• Una società di servizi emette tutte le bollette a fine mese, con un programma che ha bisogno di tutta la notte, impedendo cosìl'esecuzione di altri programmi batch che sarebbero necessari

Possibili soluzioni• è proprio necessario che le bollette siano emesse tutte insieme?• se è proprio necessario, magari facciamolo durante il week-end

(tempo morto più lungo)