Parte 1 Gestione della concorrenza
|
|
|
- Annunciata Pesce
- 10 anni fa
- Visualizzazioni
Transcript
1 Gestione dei dati Parte 1 Gestione della concorrenza Maurizio Lenzerini, Riccardo Rosati Facoltà di Ingegneria dell informazione, informatica e statistica Sapienza Università di Roma Anno Accademico 2012/2013
2 Architettura di un DBMS Comandi SQL DBMS Motore SQL Gestore della concorrenza Gestore dell accesso ai file Gestore del buffer Gestore dello spazio su disco Gestore della sicurezza e del recovery Dati Gestione dei dati Concorrenza - 2
3 Sommario 1. Transazioni, concorrenza e serializzabilità 2. View-serializzabilità 3. Conflict-serializzabilità 4. Gestione della concorrenza mediante lock 5. Recuperabilità delle transazioni 6. Gestione della concorrenza mediante timestamp Gestione dei dati Concorrenza - 3
4 1.1 Transazioni, concorrenza e serializzabilità
5 Il concetto di transazione Una transazione modella l esecuzione di una procedura software costituita da un insieme di istruzioni che: prevedono letture/scritture sulla base di dati, e costituiscono una singola unità (operazione) logica Sintatticamente, noi assumeremo che ogni transazione contenga: una istruzione begin una istruzione end una tra le seguenti istruzioni: commit (rendi definitivo il lavoro svolto sulla base di dati) rollback o abort (disfa il lavoro svolto sulla base di dati) Gestione dei dati Concorrenza - 5
6 Esempio di (vera) transazione begin writeln( Inserire importo, conto di partenza, conto di arrivo ); read (Importo, contopartenza, contoarrivo); EXEC SQL select Saldo into :saldocorrente from ContiCorrenti where Numero = :contopartenza if saldocorrente < Importo then begin writeln( Saldo Insufficiente ); ABORT; end; else begin EXEC SQL UPDATE ContiCorrenti set Saldo=:saldoCorrente - :Importo where Numero = :contopartenza; writeln( Operazione eseguita con successo ); COMMIT; end; end; Tabella ContiCorrenti Numero Saldo Gestione dei dati Concorrenza - 6
7 Effetto di una transazione Sia DB una base di dati Sia T una transazione su DB Effetto o risultato di T = stato della base di dati DB dopo l esecuzione di T Come vedremo dopo, ogni transazione deve godere di un insieme di proprietà (chiamate ACID) Gestione dei dati Concorrenza - 7
8 Concorrenza Il throughput di un sistema è il numero di transazioni per secondo (tps) accettate dal sistema a regime In un DBMS, si vuole ottenere un throughput dell ordine di tps Questo impone un alto grado di concorrenza tra le transazioni in esecuzione Esempio: Se una transazione impiega mediamente 0.1 secondi ad essere eseguita, ad un throughput di 100tps corrispondono mediamente 10 transazioni in esecuzione concorrente Esempi tipici: applicazioni bancarie, di prenotazione voli Gestione dei dati Concorrenza - 8
9 Concorrenza: esempio Supponiamo che una transazione venga eseguita simultaneamente da due o più applicazioni (ad esempio due agenzie di viaggi), allo scopo di prenotare un posto sullo stesso volo È possibile un evoluzione temporale come la seguente: Applicazione 1 trova posto alloca il posto Applicazione 2 trova posto alloca il posto tempo A questo punto, abbiamo una doppia prenotazione dello stesso posto Gestione dei dati Concorrenza - 9
10 Proprietà di isolamento delle transazioni Il DBMS transazionale gestisce questi problemi garantendo la proprietà di isolamento La proprietà di isolamento di una transazione garantisce che essa sia eseguita come se non ci fosse concorrenza Questa proprietà è assicurata facendo in modo che ciascun insieme di transazioni concorrenti sottoposte al sistema sia serializzabile (si veda dopo) Gestione dei dati Concorrenza - 10
11 Proprietà desiderabili delle transazioni L isolamento è solo una delle proprietà desiderabili. La lista completa delle proprietà desiderabili (proprietà ACID) è: 1. Atomicità: per ogni transazione, o tutte le sue azioni sono eseguite, oppure nessuna sua azione viene eseguita 2. Consistenza: l esecuzione di ogni transazione deve lasciare la base di dati in uno stato corretto, cioè in cui tutti i vincoli di integrità sono soddisfatti 3. Isolamento: ogni transazione deve essere eseguita in modo che i suoi effetti non siano influenzati da altre transazioni eseguite nello stesso intervallo di tempo 4. Durabilità: l effetto di ogni transazione che è andata a buon fine deve essere registrato in modo permanente nella base di dati Gestione dei dati Concorrenza - 11
12 Schedule e schedule seriali Dato un insieme di transazioni T1,T2,,Tn, una sequenza S di esecuzione di azioni di tali transazioni che rispetta l ordine nell ambito di ogni singola transazione (cioè tale che se l azione a viene prima dell azione b in Ti, allora a viene prima di b anche in S) è detta schedule (su T1,T2,,Tn) Se lo schedule non contiene tutte le azioni di tutte le transazioni, viene detto parziale Uno schedule S è seriale se le azioni di ogni transazione in S terminano prima di ogni azione di una diversa transazione in S, ovvero se in S non si alternano azioni di transazioni diverse Gestione dei dati Concorrenza - 12
13 Serializzabilità Uno schedule è serializzabile se l esito della sua esecuzione è lo stesso che si avrebbe se le azioni in esso contenute fossero eseguite in almeno una qualunque delle possibili sequenze seriali costituite dalle stesse transazioni. Più precisamente, uno schedule S su T1,T2,,Tn è serializzabile se esiste uno schedule seriale su T1,T2,,Tn equivalente ad S Due schedule sono equivalenti se, per ogni stato iniziale, l esecuzione di uno produce lo stesso risultato che produce l altro Gestione dei dati Concorrenza - 13
14 Serializzabilità Ad esempio, date le due transazioni T1 (x=x+x; x= x+2) T2 (x= x**2; x=x+2) (dove x denota un qualunque elemento della base di dati) i possibili schedule seriali su di esse sono I seguenti: S1: x=x+x; x= x+2; x= x**2; x=x+2 S2: x= x**2; x=x+2; x=x+x; x= x+2 Uno schedule non seriale è: S3: x=x+x; x= x**2; x= x+2; x=x+2 Gestione dei dati Concorrenza - 14
15 Serializzabilità S3: x=x+x; x= x**2; x= x+2; x=x+2 S3 è serializzabile? No, infatti se ad esempio nello stato iniziale della base di dati si ha x=3, allora: L effetto di S3 è x=((3+3)**2)+2+2=40 L effetto di S1 è x= x=(((3+3)+2)**2)+2= 66 L effetto di S2 è x=((3**2)+2)+((3**2)+2)+2=24 Questo dimostra che S3 non è equivalente a nessuno schedule seriale su T1 e T2, e pertanto S3 non è serializzabile Gestione dei dati Concorrenza - 15
16 Studio della serializzabilità Per garantire l isolamento è necessario garantire la serializzabilità di un insieme di transazioni. Lo studio della serializzabilità prevede: Analisi delle possibili anomalie da non-isolamento che si possono verificare durante un esecuzione concorrente Introduzione di una notazione astratta e semplificata per rappresentare le transazioni Definizione di diversi livelli di serializzabilità e corrispondenti tipi di anomalie che vi possono comparire Definizione di proprietà e protocolli per garantire i diversi livelli di serializzabilità Trarremo una conclusione generale: la garanzia di serializzabilità va a scapito del livello di concorrenza possibile tra transazioni che accedono alle stesse risorse In compenso, sarà possibile definire con precisione i compromessi tra throughput e isolamento Gestione dei dati Concorrenza - 16
17 Notazione Una transazione che va a buon fine può essere rappresentata come una sequenza di comandi begin/commit per delimitare la transazione azioni elementari di scrittura e di lettura di un elemento (attributo, record, tabella) nel database operazioni di lettura/modifica in memoria locale T 1 Begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T 2 Begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit Gestione dei dati Concorrenza - 17
18 Uno schedule seriale T 1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T 2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A B Gestione dei dati Concorrenza - 18
19 Uno schedule serializzabile T 1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T 2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A B I valori finali di A e B sono gli stessi dello schedule seriale T 1 T 2, indipendentemente dal valore iniziale di A e B Possiamo infatti dimostrare che, se all inizio A=B=c (c costante), allora alla fine della esecuzione dello schedule si ha: A=B=2(c+100) Gestione dei dati Concorrenza - 19
20 Uno schedule non serializzabile T 1 begin READ(A,t) t := t+l00 WRITE(A,t) READ(B,t) t := t+l00 WRITE(B,t) commit T 2 begin READ(A,s) s := s*2 WRITE(A,s) READ(B,s) s := s*2 WRITE(B,s) commit A B Dov e il problema?? Gestione dei dati Concorrenza - 20
21 Analisi delle anomalie Tre tipi di anomalie rispetto alla proprietà di isolamento (e alla serializzabilità): 1. perdita di aggiornamento (update loss) 2. lettura non ripetibile (unrepeatable read) 3. aggiornamento fantasma (ghost update) Gestione dei dati Concorrenza - 21
22 Perdita di aggiornamento (update loss) Date due transazioni T 1, T 2 identiche: READ(A, x), x := x + 1, WRITE(A, x) L esecuzione seriale con valore iniziale A=2 produce A=4, risultato di due aggiornamenti successivi Si consideri ora lo schedule seguente: T 1 begin READ(A,x) x := x+1 WRITE(A,x) commit T 2 begin READ(A,x) x := x+1 WRITE(A,x) commit Il risultato finale è A=3, ed il primo dei due aggiornamenti si è perso: T 2 legge il valore iniziale di A, e scrive il valore finale. In questo caso, è come se T1 non fosse stato eseguito! Gestione dei dati Concorrenza - 22
23 Lettura non ripetibile (unrepeatable read) T 1 esegue due letture consecutive dello stesso dato: T 1 begin READ(A,x) READ(A,x) commit T 2 begin READ(A,x) x := x+1 WRITE(A,x) commit Tuttavia, a causa dell aggiornamento concorrente da parte di T2, T1 legge due valori consecutivi diversi nel contesto della stessa transazione Gestione dei dati Concorrenza - 23
24 Aggiornamento fantasma (ghost update) Si assuma il vincolo di integrità A + B = 1000 T 1 begin READ(A,y) READ(B,z) // qui y+z = 1100 commit T 2 begin READ(A,y) y := y-100 READ(B,z) z = z+100 WRITE(A,y) WRITE(B,z) commit T1 legge il valore di A iniziale, mentre legge un valore di B che è stato modificato da T2. Ciò ha l effetto di presentare a T1 uno stato in cui il vincolo è violato. Si noti ancora una volta che sia T1 sia T2 in situazione di isolamento portano invece ad un risultato corretto Gestione dei dati Concorrenza - 24
25 Scheduler Lo scheduler fa parte del gestore della concorrenza ed opera così: Accoglie una transazione e le assegna un identificatore unico Comanda al buffer manager del DBMS di leggere/scrivere sul DB secondo una particolare sequenza Non è in grado di interpretare né le specifiche operazioni sui dati in memoria locale, né vincoli sull ordine di esecuzione delle transazioni (ogni sequenza seriale delle transazioni che si presentano allo scheduler è accettabile): la serializzabilità non può dipendere né dal tipo di operazioni eseguite né dalla base di dati in input Gestione dei dati Concorrenza - 25
26 Notazione semplificata Per quanto detto in precedenza, nel seguito della trattazione riguardante la serializzabilità, possiamo semplificare la notazione per le transazioni: ogni transazione è denotata da Ti (dove i è un indice intero non negativo che identifica la transazione stessa) ogni azione della transazione diversa da read, write o commit viene ignorata (non viene rappresentata) ogni azione (read, write, o commit) della transazione Ti ha il pedice I Gestione dei dati Concorrenza - 26
27 Notazione semplificata Nella notazione semplificata, le transazioni degli esempi precedenti si scrivono: T1: r1(a) r1(b) w1(a) w1(b) c1 T2: r2(a) r2(b) w2(a) w2(b) c2 Un esempio di schedule (completo): r1(a) r1(b) w1(a) r2(a) r2(b) w2(a) w1(b) c1 w2(b) c2 T1 legge A T2 scrive A T1 commit Gestione dei dati Concorrenza - 27
28 Serializzabilità ed equivalenza tra schedule La definizione generale di serializzabilità che abbiamo visto prima si basa sulla nozione di equivalenza tra due schedule: Uno schedule è serializzabile se e solo se esso è equivalente ad uno schedule seriale sulle stesse transazioni A seconda del livello di astrazione che adottiamo per caratterizzare gli effetti delle transazioni, otteniamo diverse definizioni della relazione di equivalenza, alle quali corrispondono diversi livelli di serializzabilità Data una certa definizione di equivalenza, interessa definire due tipi di algoritmi: Algoritmi per il test di equivalenza: dati due schedule, determina se essi sono equivalenti Algoritmi per il test di serializzabilità: dato uno schedule, determina se esso è equivalente ad una qualunque schedule seriale Uno dei metodi più usati per gestire la concorrenza si basa sulla definizione di regole di comportamento (protocolli) dello scheduler e delle transazioni che garantiscono un accettabile livello di serializzabilità, senza eseguire alcun test esplicito Gestione dei dati Concorrenza - 28
29 Due assunzioni importanti Facciamo per il momento due assunzioni importanti 1. Nessuna transazione legge o scrive lo stesso dato due volte 2. Nessuna transazione esegue il rollback (ovvero, tutte le transazioni vanno a buon fine) Successivamente, rilasseremo la seconda assunzione Gestione dei dati Concorrenza - 29
30 Classi di schedule Idea base del nostro studio: individuare classi di schedule serializzabili che siano sottoclassi delle schedule possibili e la cui proprietà di serializzabilità sia verificabile con complessità ragionevole Schedule Serializzabili Schedule Seriali Schedule Definiremo diverse nozioni di serializzabilità, iniziando con: - la view-serializzabilità - la conflict-serializzabilità Gestione dei dati Concorrenza - 30
31 1.2 View-serializzabilità
32 View-equivalenza e view-serializzabilità Definizioni preliminari: in uno schedule S, diciamo che r i (x) LEGGE-DA w j (x) se w j (x) precede r i (x) in S, e se tra w j (x) e r i (x) non c è alcuna azione w k (x) in uno schedule S, diciamo che w i (x) è una SCRITTURA FINALE se w i (x) è l ultima azione di scrittura su x in S Definizione di view-equivalenza: siano S1 e S2 due schedule (completi) sulle stesse transazioni. Allora S1 è view-equivalente a S2 se S1 ed S2 hanno la stessa relazione LEGGE-DA e le stesse SCRITTURE FINALI Definizione di view-serializzabilità: uno schedule S (completo) è viewserializzabile se esiste uno schedule S seriale che è viewequivalente ad S Gestione dei dati Concorrenza - 32
33 View-serializzabilità Esistono schedule serializzabili che non sono view-serializzabili. Ad esempio: read1(a,t) read2(a,s) s:=100 write2(a,s) t:=100 write1(a,t) è serializzabile, ma non view-serializzabile Si noti però che per dedurre che lo schedule dell esempio precedente è serializzabile, dobbiamo tenere conto delle operazioni che le transazioni eseguono sulla memoria locale Se invece ci limitiamo al modello astratto di transazione che noi consideriamo (in cui, in particolare, teniamo conto delle sole operazioni di lettura e scrittura), allora la view-equivalenza e la view-serializzabilità sono le nozioni più generali possibili schedule view-serializzabili schedule seriali schedule serializzabili schedule Gestione dei dati Concorrenza - 33
34 Proprietà della view-equivalenza Dati due schedule, determinare se essi sono view-equivalenti ha complessità polinomiale rispetto alla dimensione dei due schedule Dato uno schedule, verificare se esso è view-serializzabile è un problema NP-completo che il problema sia in NP è semplice da verificare: infatti un algoritmo non deterministico polinomiale per verificare se S è view-serializzabile è: scegli non deterministicamente uno schedule S seriale sulle stesse transazioni di S, e verifica in tempo polinomiale se S è view-equivalente ad S che il problema sia NP-hard è molto più complicato da dimostrare Per questo, la view-serializzabilità non è utilizzata in pratica Gestione dei dati Concorrenza - 34
35 Esercizio 1 Considerare i seguenti schedule: 1. w0(x) r2(x) r1(x) w2(x) w2(z) 2. w0(x) r1(x) r2(x) w2(x) w2(z) 3. w0(x) r1(x) w1(x) r2(x) w1(z) 4. w0(x) r1(x) w1(x) w1(z) r2(x) e dire quali di essi sono view-serializzabili Analizzare i seguenti schedule, verificare che non sono viewserializzabili, e dire quali anomalie presentano 1. r1(x) r2(x) w2(x) w1(x) 2. r1(x) r2(x) w2(x) r1(x) 3. r1(x) r2(x) r2(y) w2(x) w2(y) r1(y) Gestione dei dati Concorrenza - 35
36 1.3 Conflict-serializzabilità
37 La nozione di conflitto Due azioni sono in conflitto in uno schedule se: appartengono a diverse transazioni agiscono sullo stesso elemento almeno una delle azioni è un operazione di scrittura (write) Gestione dei dati Concorrenza - 37
38 La nozione di conflitto Si può facilmente osservare che: se due azioni consecutive che appartengono a due transazioni non sono in conflitto, allora possono essere scambiate senza alterare l effetto dello schedule. Infatti: coppie di letture consecutive di uno stesso elemento in transazioni diverse possono essere scambiate una lettura nella transazione T1 di un elemento X ed una consecutiva scrittura nella transazione T2 di un elemento Y X possono essere scambiate due azioni consecutive che appartengono alle stesse transazioni non possono essere scambiate, perché l effetto della transazione potrebbe cambiare Gestione dei dati Concorrenza - 38
39 La nozione di conflitto due azioni consecutive che appartengono a transazioni diverse e sono in conflitto non possono essere scambiate, perché: scambiando l ordine di due scritture di transazioni diverse w1(a) w2(a) che agiscono consecutivamente sullo stesso elemento, può cambiare il valore finale di A scambiando l ordine di lettura e scrittura consecutive r1(a) w2(a) di transazioni diverse sullo stesso elemento, T1 può leggere valori diversi di A (prima e dopo la scrittura da parte di T2, rispettivamente) (ricordiamo inoltre che due azioni consecutive che appartengono alla stessa transazione non possono essere scambiate per la definizione stessa di schedule) Gestione dei dati Concorrenza - 39
40 Conflict-equivalenza Due schedule S1 e S2 sulle stesse transazioni sono conflict-equivalenti se S1 può essere trasformato in S2 mediante una sequenza di scambi (swaps) tra azioni consecutive non in conflitto tra loro Esempio: S = r1(a) w1(a) r2(a) w2(a) r1(b) w1(b) r2(b) w2(b) è conflict-equivalente a: S = r1(a) w1(a) r1(b) w1(b) r2(a) w2(a) r2(b) w2(b) perché può essere trasformato in S mediante la seguente sequenza di scambi: r1(a) w1(a) r2(a) w2(a) r1(b) w1(b) r2(b) w2(b) r1(a) w1(a) r2(a) r1(b) w2(a) w1(b) r2(b) w2(b) r1(a) w1(a) r1(b) r2(a) w2(a) w1(b) r2(b) w2(b) r1(a) w1(a) r1(b) r2(a) w1(b) w2(a) r2(b) w2(b) r1(a) w1(a) r1(b) w1(b) r2(a) w2(a) r2(b) w2(b) Gestione dei dati Concorrenza - 40
41 Esercizio 2 Dimostrare la seguente proprietà. Due schedule S1 e S2 sulle stesse transazioni T1,,Tn sono conflict-equivalenti se e solo se non esistono due azioni a i di Ti e b j di Tj (con Ti e Tj appartenenti a T1, Tn) tali che - a i e b j sono in conflitto tra loro - l ordine con cui le due azioni compaiono (anche non consecutivamente) in S1 è diverso dall ordine in cui esse compaiono (anche non consecutivamente) in S2 Gestione dei dati Concorrenza - 41
42 Conflict-serializzabilità Uno schedule S è conflict-serializzabile se esiste uno schedule S seriale che è conflict-equivalente ad S Come si verifica la proprietà di conflict-serializzabilità? Analizzando il grafo di precedenza associato ad uno schedule. Gestione dei dati Concorrenza - 42
43 Grafo di precedenza Dato uno schedule S su T1,,Tn, il grafo di precedenza P(S) associato ad S è definito così: i nodi di P(S) sono le transazioni {T1,, Tn} di S gli archi E di P(S) sono determinati così: l arco Ti Tj è in E se e solo se esistono due azioni Pi(A), Qj(A) che agiscono sullo stesso oggetto A in S tali che: 1. Pi(A) < S Qj(A) (cioè Pi(A) viene prima di Qj(A) in S, anche non consecutivamente) 2. almeno una tra Pi(A) e Qj(A) è un operazione di write Gestione dei dati Concorrenza - 43
44 Esempio di grafo di precedenza S: w3(a) w2(c) r1(a) w1(b) r1(c) w2(a) r4(a) w4(d) Gestione dei dati Concorrenza - 44
45 Come usare il grafo delle precedenze Teorema (conflict-serializzabilità) Uno schedule S è conflict-serializzabile se e solo se il grafo delle precedenze P(S) associato ad S è aciclico Per dimostrare il teorema: - osserviamo subito che se S è uno schedule seriale, allora il grafo delle precedenze P(S) è aciclico (si dimostra immediatamente) - dimostriamo un lemma preliminare Gestione dei dati Concorrenza - 45
46 Lemma preliminare Lemma Se due schedule S1 ed S2 sono conflict-equivalenti, allora P(S1)=P(S2) Dimostrazione Siano S1 ed S2 due schedule conflict-equivalenti, ed assumiamo che P(S1) P(S2). Allora P(S1) e P(S2) hanno gli stessi nodi ed archi diversi, cioè esiste un arco Ti Tj in P(S1) che non è in P(S2). Ma Ti Tj in P(S1) significa che S1 ha la forma: pi(a)... qj(a) con pi, qj in conflitto. Poiché P(S2) ha gli stessi nodi di P(S1), S2 contiene qj(a) e pi(a), e siccome P(S2) non contiene l arco Ti Tj, dobbiamo concludere che qj(a) < S2 pi(a). Ma allora S1 e S2 differiscono nell ordine di una coppia di azioni in conflitto, e quindi non possono essere trasformate una nell altra tramite scambio di azioni non in conflitto, cioè non sono conflict-equivalenti, ed otteniamo una contraddizione. Dobbiamo quindi concludere che P(S1)=P(S2). Gestione dei dati Concorrenza - 46
47 Non vale il viceversa Se valesse il viceversa del lemma precedente, il teorema sarebbe dimostrato.tuttavia, il viceversa del lemma precedente non vale, perché si può dimostrare che P(S1)=P(S2) non implica che S1 ed S2 siano conflict-equivalenti. Infatti: S1 = w1(a) r2(a) w2(b) r1(b) S2 = r2(a) w1(a) r1(b) w2(b) hanno lo stesso grafo delle precedenze, ma non sono conflictequivalenti, perché passare da S1 a S2 richiede scambi tra azioni in conflitto. Gestione dei dati Concorrenza - 47
48 Ordine topologico di un grafo Dato un grafo G, si dice ordine topologico di G un qualunque ordinamento totale S (cioè sequenza) dei nodi di G tale che se l arco Ti Tj è nel grafo G, allora Ti viene prima di Tj nella sequenza S. Esempio: Possibili ordini topologici: Le seguenti proposizioni sono facili da dimostrare: se il grafo G è aciclico, allora esiste almeno un ordine topologico di G se S è un ordine topologico di G, ed esiste un cammino dal nodo n1 al nodo n2 in G, allora n1 viene prima di n2 in S Gestione dei dati Concorrenza - 48
49 Esercizio 3 Dimostrare le due proposizioni appena menzionate, ovvero: 1. Se il grafo G è aciclico, allora esiste almeno un ordine topologico di G 2. Se S è un ordine topologico di G, ed esiste un cammino dal nodo n1 al nodo n2 in G, allora n1 viene prima di n2 in S Gestione dei dati Concorrenza - 49
50 Dimostrazione del teorema della conflict-serializzabilità Prima parte ( ): Dobbiamo dimostrare che se S è conflict-serializzabile, allora il grafo delle precedenze P(s) è aciclico. Se S è conflict-serializzabile, allora esiste uno schedule seriale S sulle stesse transazioni che è conflict-equivalente ad S. Siccome S è seriale, il grafo delle precedenze P(S ) associato ad S è aciclico. Ma per il lemma preliminare, poiché S è conflict-equivalente ad S, si ha che P(S)=P(S ), e quindi possiamo concludere che P(S) è aciclico. Gestione dei dati Concorrenza - 50
51 Dimostrazione del teorema della conflict-serializzabilità Seconda parte ( ): Assumiamo che S sia definito sulle transazioni T1,,Tn, e che P(S) sia aciclico. Allora esiste almeno un ordine topologico di P(S), cioè una sequenza dei suoi nodi tale che se Ti Tj è nel grafo, allora Ti viene prima di Tj nella sequenza. Ad un tale ordine topologico di P(S) corrisponde lo schedule seriale S su T1,,Tn tale che se Ti Tj è nel grafo, allora tutte le azioni di Ti vengono prima di tutte quelle di Tj in S. Si può vedere facilmente che questo schedule seriale è conflictequivalente ad S. Infatti, se non lo fosse, ci sarebbe una coppia di azioni in conflitto a h e b k tale che (a h < S b k ) e (b k < S a h ). Ma (b k < S a h ) significa che il cammino Tk Th è nel grafo P(S), e quindi (vedi Esercizio 3.2) Tk viene prima di Th in ogni ordine topologico di P(S). Tuttavia, (a h < S b k ) significa che Th viene prima di Tk in S, e questo contraddice il fatto che S corrisponde ad un ordine topologico di P(S). Gestione dei dati Concorrenza - 51
52 Algoritmo per la conflict-serializzabilità Il teorema appena dimostrato ci consente di derivare immediatamente un algoritmo per verificare se uno schedule è conflict-serializzabile: - costruisci il grafo delle precedenze P(S) relativo ad S - verifica se P(S) è aciclico - restituisci true se P(S) è aciclico, false altrimenti Gestione dei dati Concorrenza - 52
53 Verifica di aciclicità di un grafo come si fa a verificare se un grafo è aciclico? esiste un algoritmo che è in grado di fare questa verifica in tempo polinomiale ricordiamo che, dato un grafo G, un nodo N di G si dice nodo sorgente se non ha archi entranti Gestione dei dati Concorrenza - 53
54 Algoritmo per la verifica di aciclicità INPUT: grafo G OUTPUT: se G è aciclico stampa un ordine topologico di G, altrimenti stampa G è ciclico { while G contiene almeno un nodo do { if in G non c è nessun nodo sorgente then stampa G è ciclico else { seleziona un nodo N sorgente stampa l etichetta di N elimina da G il nodo N e tutti gli archi uscenti da N } } } Gestione dei dati Concorrenza - 54
55 Complessità della verifica di conflict-serializzabilità l algoritmo per la verifica di aciclicità del grafo ha complessità polinomiale a questo punto siamo in grado di stabilire la complessità del precedente algoritmo per la conflict-serializzabilità: è immediato verificare che l algoritmo ha complessità polinomiale rispetto alla dimensione dello schedule S Gestione dei dati Concorrenza - 55
56 Schedule seriali conflict-equivalenti Dalla teorema della conflict-serializzabilità segue una interessante proprietà: se T è un ordine topologico del grafo delle precedenze di S, allora T rappresenta uno schedule seriale che è conflictequivalente a S (e viceversa) Pertanto: se il precedente algoritmo di verifica della aciclicità del grafo delle precedenze G restituisce un ordine topologico, tale ordine topologico rappresenta uno schedule seriale equivalente allo schedule il cui grafo delle precedenze è G Gestione dei dati Concorrenza - 56
57 Esercizio 4 Dire se il seguente schedule è conflict serializzabile: w1(x) r2(x) w1(z) r2(z) r3(x) r4(z) w4(z) w2(x) In caso positivo, scrivere uno schedule seriale che è conflict-equivalente a tale schedule. Gestione dei dati Concorrenza - 57
58 Soluzione esercizio 4 S = w1(x) r2(x) w1(z) r2(z) r3(x) r4(z) w4(z) w2(x) Grafo delle precedenze di S: T1 T2 T3 T4 Il grafo è aciclico, quindi S è conflict-serializzabile L unico ordine topologico è T1 T3 T2 T4 Pertanto lo schedule seriale w1(x) w1(z) r3(x) r2(x) r2(z) w2(x) r4(z) w4(z) è conflict-equivalente a S. Gestione dei dati Concorrenza - 58
59 Confronto con la view-serializzabilità La prima proprietà importante da osservare per effettuare un confronto tra conflict-serializzabilità e viewserializzabilità è la seguente: Teorema Siano S1 e S2 due schedule sulle stesse transazioni. Se S1 e S2 sono conflict-equivalenti, allora sono view-equivalenti Sulla base del teorema precedente si può poi dimostrare: Teorema Sia S uno schedule. Se S è conflictserializzabile, allora è anche view-serializzabile Gestione dei dati Concorrenza - 59
60 Esercizio 5 Dimostrare i due teoremi precedenti. Gestione dei dati Concorrenza - 60
61 Confronto con la view-serializzabilità Abbiamo visto che uno schedule che è conflictserializzabile è anche view-serializzabile. È importante osservare che, al contrario, esistono schedule che sono view-serializzabili ma che non sono conflict-serializzabili. Ad esempio, r1(x) w2(x) w1(x) w3(x) è view-serializzabile, ma non è conflict-serializzabile Gestione dei dati Concorrenza - 61
62 Esercizio 6 Considerare il seguente schedule w 1 (y) w 2 (y) w 2 (x) w 1 (x) w 3 (x) e dire se è view-serializzabile o no dire se è conflict-serializzabile o no. Gestione dei dati Concorrenza - 62
63 Confronto tra conflict- e view-serializzabilità Graficamente, il confronto può essere riassunto nel seguente modo: schedule schedule conflictserializzabili schedule seriali schedule viewserializzabili schedule serializzabili Gestione dei dati Concorrenza - 63
64 Scheduler basato sulla conflict-serializzabilità Uno scheduler basato sulla conflict-serializzabilità: riceve la sequenza di azioni delle transazioni attive, nell ordine concorrente in cui gli vengono proposte mantiene il grafo delle precedenze associato ogni volta che gli viene proposta una nuova azione, aggiorna il grafo delle precedenze dello schedule corrente (non necessariamente completo), e - se è stato introdotto un ciclo, annulla la transazione alla quale appartiene l azione che ha introdotto il ciclo (l annullamento di una transazione è un operazione complessa, che può avere conseguenze anche su altre transazioni) - altrimenti, accetta l azione e continua Gestione dei dati Concorrenza - 64
65 Scheduler basato sulla conflict-serializzabilità Poiché mantenere il grafo delle precedenze può essere molto costoso computazionalmente (tenendo presente che il grafo può facilmente essere dell ordine dei 1000 nodi), la conflict-serializzabilità non è usata nei sistemi commerciali. Tuttavia, al contrario della view-serializzabiità, la conflictserializzabilità è utilizzata in applicazioni sofisticate in cui il controllo della concorrenza è affidato ad un sottosistema specializzato (e tolto dalla giurisdizione del DBMS) Gestione dei dati Concorrenza - 65
66 1.4 Gestione della concorrenza mediante lock
67 Controllo di concorrenza tramite lock Abbiamo visto che la view-serializzabilità e la conflictserializzabilità non sono usati nei sistemi commerciali Analizzeremo ora un metodo per il controllo della concorrenza che invece viene usato nei sistemi commerciali. Questo metodo è basato sull utilizzo dei lock Nei metodi basati sui lock, una transazione, per operare su un elemento della base di dati deve chiedere ed ottenere il permesso. Il lock è un meccanismo che consente appunto ad una transazione di ottenere il permesso di operare su un elemento della base di dati Gestione dei dati Concorrenza - 67
68 Primitive di lock esclusivo Per il momento, considereremo lock esclusivi, e nel seguito introdurremo anche lock non esclusivi Introduciamo allora due nuove operazioni (oltre a quelle di lettura e scrittura), che richiedono l utilizzo ed il rilascio esclusivo di una risorsa (elemento A della base di dati): Lock (esclusivo): l i (A) Unlock: u i (A) La prima operazione l i (A) significa che la transazione Ti richiede l uso esclusivo dell elemento A della base di dati La seconda operazione u i (A) significa che la transazione Ti rilascia il lock su A, cioè rinuncia all uso di A Gestione dei dati Concorrenza - 68
69 Transazioni ben formate e schedule legali Nell uso dei lock esclusivi, dobbiamo rispettare due regole: Regola 1: Diciamo che una transazione Ti è ben formata se ogni azione pi(a) (lettura o scrittura di A) da parte di Ti è contenuta in una sezione critica definita da una coppia di lock-unlock su A: Ti: l i (A) p i (A) u i (A)... Regola 2: diciamo che uno schedule S con lock è legale se nessuna transazione esegue l operazione di lock su A nel momento in cui un altra transazione ha già ottenuto l uso esclusivo di A e non ha eseguito l operazione di unlock su A S: l i (A)... u i (A) no lj(a) Gestione dei dati Concorrenza - 69
70 Esempi di schedule con lock esclusivi S1: l1(a) l1(b) r1(a) w1(b) l2(b) u1(a) u1(b) r2(b) w2(b) u2(b) l3(b) r3(b) u3(b) T1 ben formata, ma S1 non legale S2: l1(a) r1(a) w1(b) u1(a) u1(b) l2(b) r2(b) w2(b) l3(b) r3(b) u3(b) T1 non ben formata: write senza lock. T2 non ben formata: lock senza unlock. S2 non legale S3: l1(a) r1(a) u1(a) l1(b) w1(b) u1(b) l2(b) r2(b) w2(b) u2(b) l3(b) r3(b) u3(b) T1, T2, T3 ben formate, ed S3 legale Gestione dei dati Concorrenza - 70
71 Scheduler basato su lock esclusivi In un sistema per la gestione della concorrenza basato su lock esclusivi, lo scheduler si comporta nel seguente modo: 1. Se arriva una richiesta di operazione da parte della transazione Ti, e tale richiesta dimostra che la transazione non è ben formata, lo scheduler annulla la transazione Ti (con tutte le conseguenze del caso) 2. Quando arriva una richiesta di lock su A da parte di una transazione Ti mentre un altra transazione Tj ha l uso esclusivo di A, riconosce che lo schedule corrente diventerebbe illegale se Ti ottenesse l uso di A, e quindi blocca Ti, facendola procedere nella sua esecuzione solo dopo che Tj avrà eseguito l operazione di unlock su A 3. Lo scheduler fa procedere lo schedule aggiornando la tabella dei lock Quindi, lo scheduler assicura che lo schedule corrente sia costituito da transazioni ben formate e sia legale. Gestione dei dati Concorrenza - 71
72 Esempio di comportamento dello scheduler T1 l1(a); r1(a) A:=A+100; w1(a); l1(b); r1(b); u1(a); B:=B+100; w1(b); u1(b) T2 l2(a) bloccato! l2(a) ripreso! r2(a) A:=Ax2; w2(a); u2(a) l2(b); r2(b) B:=Bx2; w2(b); u2(b) Gestione dei dati Concorrenza - 72
73 Le due regole non sono sufficienti per la serializzabilità A B T1 T l1(a); r1(a) A:=A+100; w1(a); u1(a) 125 l2(a); r2(a) A:=Ax2; w2(a); u2(a) 250 l2(b); r2(b) B:=Bx2; w2(b); u2(b) 50 l1(b); r1(b) B:=B+100; w1(b); u1(b) Aggiornamento fantasma: l isolamento viene rotto nonostante i lock Gestione dei dati Concorrenza - 73
74 Two-Phase Locking (con lock esclusivi) Abbiamo appena visto che le regole che impongono - transazioni ben formate - schedule legali non sono sufficienti a garantire la serializzabilità, anche in presenza di lock. Al fine di giungere ad una politica corretta di controllo di concorrenza mediante l uso dei lock esclusivi, si introduce un ulteriore regola (o protocollo), detta del Two-Phase Locking (2PL) : Uno schedule (con lock esclusivi) segue il protocollo del two-phase locking se in ogni transazione Ti presente nello schedule tutte le operazioni di lock di Ti precedono tutte le operazioni di unlock di Ti. S:. li(a) ui(a) no unlock no lock Gestione dei dati Concorrenza - 74
75 Le due fasi del Two-Phase Locking Schema di lock e unlock in una transazione che segue il protocollo 2PL (con lock esclusivi) # lock ottenuti da Ti Growing Phase Shrinking Phase Tempo Gestione dei dati Concorrenza - 75
76 Trasformiamo lo schedule dell esempio precedente in schedule 2PL A T1 T B l1(a); r1(a) A:=A+100; w1(a); u1(a) 125 l2(a); r2(a) A:=Ax2; w2(a); u2(a) 250 l2(b); r2(b) B:=Bx2; w2(b); u2(b) 50 l1(b); r1(b) B:=B+100; w1(b); u1(b) Gestione dei dati Concorrenza - 76
77 Esempio di scheduler nel protocollo 2PL Anche se le transazioni seguono il 2PL, lo scheduler deve assicurare che lo schedule corrente sia legale T1 l1(a); r1(a) A:=A+100; w1(a) l1(b) u1(a) T2 l2(a); r2(a) A:=Ax2; w2(a); l2(b) bloccato! Si noti come il 2PL prevenga l aggiornamento fantasma senza annullare la concorrenza r1(b) B:=B+100 w1(b); u1(b) l2(b); - ripreso u2(a); r2(b) B:=Bx2; w2(b); u2(b) Gestione dei dati Concorrenza - 77
78 Il rischio di stallo (deadlock) T1 l1(a); r1(a) A:=A+100; w1(a) l1(b) bloccato! T2 l2(b); r2(b) B:=Bx2 w2(b) l2(a) bloccato! S: l1(a) r1(a) l2(b) r2(b) w1(a) w2(b) l1(b) l2(a) Lo scheduler riconosce che affiché S sia legale, sia T1 sia T2 devono essere bloccati, ma non può fare procedere nessuna delle due transazioni. Questa è una condizione di stallo. Torneremo più avanti sui metodi per affrontare il problema dello stallo. Gestione dei dati Concorrenza - 78
79 Chi specifica i comandi lock/unlock Sebbene abbiamo detto in precedenza che sono le transazioni, mediante opportuni comandi, a chiedere e rilasciare i lock, questo in realtà non è necessario. Infatti, si può progettare lo scheduler in modo che esso riceva solo i comandi di read, write, e commit da parte delle transazioni, e sia esso ad inserire i comandi di lock-unlock rispettando le condizioni che: - ogni transazione sia ben formata - lo schedule sia legale (se possibile) - ogni transazione, estesa con i comandi di lock/unlock inseriti dallo scheduler, segua il protocollo 2PL Per questa ragione, anche in presenza di meccanismi di locking, uno schedule viene spesso denotato dalla semplice sequenza di operazioni read, write e commit. Ad esempio, lo schedule l1(a) r1(a) l1(b) u1(a) l2(a) w2(a) r1(b) w1(b) u1(b) l2(b) u2(a) r2(b) w2(b) u2(b) si può descrivere come: r1(a) w2(a) r1(b) w1(b) r2(b) w2(b) Gestione dei dati Concorrenza - 79
80 Scheduler basato su lock esclusivi e su 2PL uno scheduler basato sul protocollo 2PL con lock esclusivi deve assicurarsi che: lo schedule corrente sia legale lo schedule corrente sia costituito da transazioni ben formate che seguono il protollo del two-phase locking Gestione dei dati Concorrenza - 80
81 Scheduler basato su lock esclusivi e su 2PL Tenendo conto di quanto appena detto, possiamo riassumere come si comporta lo scheduler in un sistema per la gestione della concorrenza basato su lock esclusivi e sul two-phase locking nell analisi dello schedule corrente (ovviamente, non necessariamente completo): 1. Se arriva una richiesta di operazione da parte della transazione Ti, e tale richiesta dimostra che la transazione non è ben formata, lo scheduler annulla la transazione Ti (con tutte le conseguenze del caso) 2. Quando arriva una richiesta di lock da parte di una transazione Ti che dimostra che essa non segue il protocollo del two-phase locking, lo scheduler annulla la transazione Ti (con tutte le conseguenze del caso) 3. Quando si prefigura una richiesta di lock su A da parte di una transazione Ti mentre un altra transazione Tj ha l uso esclusivo di A, riconosce che lo schedule corrente diventerebbe illegale se Ti ottenesse l uso di A, e quindi blocca Ti, facendola procedere nella sua esecuzione solo dopo che Tj avrà eseguito l operazione di unlock su A. Se riconosce una situazione di stallo, effettua azioni per risolvere il problema. 4. Lo scheduler fa procedere lo schedule aggiornando la tabella dei lock Si noti che (1) e (2) non possono mai verificarsi se è lo scheduler che inserisce i comandi di lock/unlock. Gestione dei dati Concorrenza - 81
82 Confronto tra 2PL e conflict-serializzabilità Allo scopo di confrontare 2PL e conflict-serializzabilità, utilizziamo l osservazione precedente, e notiamo che ogni schedule S che comprenda anche operazioni di lock e unlock, può essere considerato uno schedule senza tali operazioni (semplicemente le possiamo ignorare) Teorema Ogni schedule legale costituito da transazioni ben formate che seguono il protocollo del two-phase locking (con lock esclusivi) è conflict-serializzabile. Dimostrazione Sia S uno schedule legale costituito da transazioni ben formate che seguono il protocollo del two-phase locking (con lock esclusivi). Per dimostrare che S è conflict-serializzabile, procediamo per induzione sul numero N di transazioni in S. Passo base: Se N=1, S è seriale, e quindi ovviamente conflictserializzabile. Gestione dei dati Concorrenza - 82
83 Continua la dimostrazione Passo induttivo: Supponiamo che S sia definito su T1,,TN, e sia Ti la transazione che esegue la prima operazione di unlock in S. Diciamo che tale operazione è ui(x), e dimostriamo che possiamo spostare tutte le operazioni di Ti in fronte ad S senza scavalcare azioni in conflitto. Consideriamo l azione wi(y) di Ti (analogo ragionamento varrebbe con ri(y)), e mostriamo che essa non può essere preceduta in S da alcuna azione in conflitto. Prendiamo infatti in considerazione ad esempio l azione wj(y) con j diverso da i (ma analogo ragionamento vale se consideriamo una diversa azione in conflitto con wi(y)), e notiamo che se precedesse wi(y) in S avremmo wj(y) uj(y) li(y) wi(y) Ma siccome Ti è la transazione che esegue la prima operazione di unlock ui(x) in S, avremmo ui(x) wj(y) uj(y) li(y) wi(y) oppure wj(y) ui(x) uj(y) li(y) wi(y) In entrambi i casi, ui(x) precederebbe li(y) in S, e quindi Ti non seguirebbe il 2PL. Gestione dei dati Concorrenza - 83
84 Continua la dimostrazione Possiamo quindi concludere che, spostando tutte le azioni di Ti in fronte ad S (mettendo ovviamente a posto anche le operazioni di lock e unlock) otteniamo uno schedule S che è conflict-equivalente ad S, e che ha la forma (azioni di Ti) (azioni delle altre transazioni di S) La coda della sequenza S è uno schedule legale costituito da (N-1) transazioni ben formate che seguono il protocollo del two-phase locking. Per l ipotesi induttiva, esso è conflict-serializzabile, e cioè esiste uno schedule seriale S sulle (N-1) transazioni che è conflict-equivalente ad S. Ne segue che Ti concatenato ad S è uno schedule seriale che è conflictequivalente ad S, ovvero S è conflict-serializzabile. Gestione dei dati Concorrenza - 84
85 Cosa dice intuitivamente il teorema Il teorema precedente dice che, dato uno schedule legale costituito da N transazioni ben formate che seguono il protocollo del two-phase locking (con locking esclusivi), noi sappiamo che il suo effetto è conflictequivalente allo schedule seriale che ordina le transazioni di S secondo questa regola: 1. considera come prima la transazione che esegue la prima operazione di unlock in S 2. considera come seconda la transazione che, tra le (N-1) rimaste, esegue la prima operazione di unlock in S 3... N-1. considera come (N-1)esima la transazione che, tra le due rimaste, esegue la prima operazione di unlock in S N. considera come N-esima l ultima transazione rimasta Gestione dei dati Concorrenza - 85
86 Un altra intuizione Supponiamo che S segua il protocollo 2PL. Se T1 e T2 sono in conflitto in S su un elemento A, allora esiste un azione a1 in conflitto con un azione b2 su A. Supponiamo che a1 venga prima di b2 in S. Affinché S segua 2PL, T1 deve avere avuto il lock su A e deve aver eseguito unlock su A prima di b2: l1(a) a1(a) u1(a) l2(a) b2(a) Supponiamo per assurdo che S non sia conflict-serializzabile, in particolare perché esiste un azione c2 su B che in S viene prima di d1 su B in conflitto con c2. Ma questo vorrebbe dire che T2 ha avuto il lock su B ed eseguito unlock su B prima di d1: l2(b) c2(b) u2(b) l1(b) d1(b) Ma u2(b) non può venire prima di l2(a), il che implica che u1(a) viene prima di l1(b), e cioè che S non segue il 2PL: l1(a) a1(a) u1(a) l2(a) b2(a) l2(b) c2(b) u2(b) l1(b) d1(b) In altre parole, il 2PL impone che se tra T1 e T2, una delle due (diciamo T1) vince sull altra per quanto riguarda il primo conflitto (cioè ottiene il lock prima), allora T1 vince su T2 su ogni altro conflitto. Questo garantisce la conflict-serializzabilità, perché posso sempre assumere che le varie transazioni siano state serializzate secondo l ordine dei vincitori. Gestione dei dati Concorrenza - 86
87 Esercizi 1 Dire se lo schedule S: r1(x) w1(x) r2(x) w2(x) r3(y) w2(y) può essere completato da comandi di lock/unlock in modo che tutte le transazioni siano ben formate, seguano il protocollo 2PL, e lo schedule risultante sia legale. l1(x) r1(x) w1(x) u1(x) l2(x) r2(x) w2(x) l3(y) r3(y) u3(y) l2(y) w2(y) u2(y) u2(x) 2 - Dire se lo schedule S: r1(x) w1(x) r2(x) w2(x) r3(y) w1(y) può essere completato da comandi di lock/unlock in modo che tutte le transazioni siano ben formate, seguano il protocollo 2PL, e lo schedule risultante sia legale. 3 - Dire se lo schedule S: r1(x) w1(x) r2(x) w2(x) r3(y) w1(y) è conflict-serializzabile Gestione dei dati Concorrenza - 87
88 Confronto tra 2PL e conflict-serializzabilità Teorema Esistono schedule che sono conflict-serializzabili ma sono tali che lo scheduler non può trasformarli in schedule legali con comandi per la gestione di lock esclusivi, costituiti da transazioni ben formate e che seguono il protocollo del two-phase locking. Gestione dei dati Concorrenza - 88
89 Confronto tra 2PL e conflict-serializzabilità Dimostrazione Basta considerare il seguente schedule: S: r1(x) w1(x) r2(x) w2(x) r3(y) w1(y) S è chiaramente conflict-serializzabile (lo schedule seriale T3,T1,T2 è conflict-equivalente ad S), ma si può dimostrare che lo scheduler non può inserire in S i comandi di lock/unlock in modo che tutte le transazioni siano ben formate, seguano il protocollo 2PL, e lo schedule risultante sia legale. Infatti, lo scheduler dovrebbe inserire il comando u1(x) prima dell operazione r2(x), perchè altrimenti r2(x) non disporrebbe dell uso esclusivo di x, e dovrebbe inserire il comando l1(y) dopo r3(y), perché altrimenti r3(y) non disporrebbe dell uso esclusivo di y. Ne segue che lo scheduler sarebbe costretto ad inserire i comandi di lock/unlock in modo che il protocollo 2PL non sia rispettato. Gestione dei dati Concorrenza - 89
90 Confronto tra conflict-serializzabilità e 2PL Indichiamo con schedule 2PL con lock esclusivi la classe degli schedule con comandi per la gestione di lock esclusivi, costituiti da transazioni ben formate e che seguono il protocollo del two-phase locking. Graficamente, il confronto può essere riassunto nel seguente modo: schedule schedule serializzabili schedule view-serializzabili schedule conflict-serializzabili schedule 2PL con lock esclusivi schedule seriali Gestione dei dati Concorrenza - 90
91 Lock condivisi (shared locks) Con i lock esclusivi, una transazione che legge A deve effettuare unlock per permettere ad un altra di leggere A: S:... l1(a) r1(a) u1(a) l2(a) r2(a) u2(a) In realtà, le due letture protette da lock non creano alcun conflitto. Introduciamo quindi un nuovo tipo di lock: il lock condiviso (shared lock). Denotiamo con sli(a) il comando della transazione Ti che chiede il lock condiviso su A. Con i lock condivisi, nell esempio precedente, otteniamo: S:... sl1(a) r1(a) sl2(a) r2(a). u1(a) u2(a) Le primitive di lock ora diventano: xli(a): lock in modalità esclusiva (detto anche lock in scrittura) sli(a): lock in modalità condivisa (detto anche lock in lettura) ui(a): unlock Gestione dei dati Concorrenza - 91
92 Transazioni ben formate con lock condivisi Nell uso dei lock esclusivi e condivisi, dobbiamo rispettare la seguente regola. Regola 1: Diciamo che una transazione Ti è ben formata se ogni lettura ri(a) è preceduta o da sli(a) o da xli(a) senza un ui(a) in mezzo, ogni scrittura wi(a) è preceduta da xli(a) senza un ui(a) in mezzo ogni operazioni di lock (sl o xl) su A da parte di Ti è seguita da unlock su A da parte di Ti Si noti che accettiamo che una transazione Ti prima esegua sli(a), presumibilmente per leggere A con una ri(a), e poi esegua xli(a), presumibilmente per scrivere con una wi(a). Il passaggio da un lock condiviso ad un lock esclusivo sullo stesso elemento da parte di una transazione si chiama lock upgrade. Gestione dei dati Concorrenza - 92
93 Schedule legali con lock condivisi Nell uso dei lock esclusivi e condivisi, dobbiamo rispettare anche la seguente regola Regola 2: Diciamo che uno schedule S è legale se un xli(a) non è seguito da un xlj(a) o da un slj(a) (con j diverso da i) senza che ci sia in mezzo ui(a) un sli(a) non è seguito da un xlj(a) (con j diverso da i) senza che ci sia in mezzo ui(a) Gestione dei dati Concorrenza - 93
94 Two-phase locking (con lock condivisi) Con l uso dei lock esclusivi e condivisi, la regola del two-phase locking diventa la seguente. Uno schedule (con lock esclusivi e condivisi) segue il protocollo del two-phase locking se in ogni transazione Ti presente nello schedule tutte le operazioni di lock (condiviso ed esclusivo) di Ti precedono tutte le operazioni di unlock di Ti. In altre parole, nessuna azione sli(x) o xli(x) può essere preceduta da ui(y) nello schedule. Gestione dei dati Concorrenza - 94
95 Politica dello scheduler per gestire i lock Lo scheduler basato su 2PL e su lock esclusivi e condivisi si comporta in modo analogo allo scheduler basato su 2PL e su lock esclusivi, tenendo conto però della complicazione data dai lock condivisi. La politica adottata dallo scheduler per gestire i lock richiesti dalle transazioni si può riassumere nella cosiddetta matrice di compatibilità, che dice quando lo scheduler soddisfa la richiesta di lock su un elemento A (da parte della transazione Tj), richiesta rappresentata in colonna, a fronte di un lock già ottenuto da parte di Ti su A del tipo specificato nella riga Nella matrice, S sta per lock condiviso e X sta per lock esclusivo, yes sta per richiesta soddisfatta e no sta per richiesta rifiutata. Nuovo lock richiesto da Tj Ti su A S X Tipo di lock già ottenuto da Ti su A S X yes no no no Gestione dei dati Concorrenza - 95
96 Politica dello scheduler per gestire i lock Si noti che il problema di inserire automaticamente i comandi di lockunlock da parte dello scheduler è ora più complesso rispetto al caso di soli lock esclusivi Inoltre, è anche più complessa la gestione del comando di unlock. In particolare, è importante osservare che, al momento di unlock su A da parte di Ti, ci possono essere diverse transazioni in attesa di un lock (esclusivo o condiviso) su A, e lo scheduler deve scegliere la transazione da soddisfare. Sono possibili diversi metodi: First-come-first-served, ovvero gestione a coda Favorisci chi chiede lock condiviso Favorisci chi vuole passare da lock condiviso a lock esclusivo Il primo metodo è il più democratico ed il più usato, anche perché evita il fenomeno dello starvation, cioè la situazione in cui la richiesta di una transazione non viene mai soddisfatta Gestione dei dati Concorrenza - 96
97 Proprietà del two-phase locking (con lock condivisi) Le proprietà del two-phase locking con lock condivisi ed esclusivi rimangono immutate rispetto al caso di soli lock esclusivi: Teorema Ogni schedule legale costituito da transazioni ben formate che seguono il protocollo del two-phase locking (con lock esclusivi e condivisi) è conflict-serializzabile. Teorema Esistono schedule che sono conflict-serializzabili ma sono tali che lo scheduler non può trasformarli in schedule legali con comandi per la gestione di lock esclusivi e condivisi, costituiti da transazioni ben formate e che seguono il protocollo del two-phase locking. Anche con i lock condivisi esiste il pericolo di stallo, come ad esempio in: sl1(a) sl2(a) xl1(a) xl2(a) Inoltre, è evidente che gli schedule legali costituiti da transazioni ben formate che seguono il protocollo del two-phase locking con lock esclusivi e condivisi sono un soprainsieme degli schedule 2PL permessi con i soli lock esclusivi Gestione dei dati Concorrenza - 97
98 Confronto tra conflict-serializzabilità e 2PL Indichiamo con schedule 2PL la classe degli schedule legali con comandi per la gestione di lock esclusivi e condivisi, costituiti da transazioni ben formate e che seguono il protocollo del two-phase locking. Graficamente, il confronto può essere riassunto nel seguente modo: schedule schedule serializzabili schedule view-serializzabili schedule conflict-serializzabili schedule 2PL schedule 2PL con lock esclusivi schedule seriali Gestione dei dati Concorrenza - 98
99 La gestione dello stallo Ricordiamo che lo stallo (deadlock) è una condizione in cui due transazioni T1 e T2 si trovano ad occupare due risorse A e B e ciascuna chiede il lock esclusivo sulla risorsa occupata dall altra. Ciò provoca un blocco delle due transazioni, che non possono procedere La probabilità di deadlock cresce in modo lineare con il numero di transazioni ed in modo quadratico con il numero di richieste di lock da parte di ogni transazione T1 T2 xl1(a); r1(a) A:=A+100; w1(a) sl1(b) bloccato! xl2(b); r2(b) B:=Bx2 w2(b) sl2(a) bloccato! Gestione dei dati Concorrenza - 99
100 Tecniche utilizzate per gestire lo stallo 1. Uso del timeout 2. Riconoscimento dello stallo, e sua soluzione 3. Prevenzione dello stallo Gestione dei dati Concorrenza - 100
101 Uso del timeout Viene fissato un tempo t di timeout oltre il quale le transazioni in attesa di lock vengono annullate (uccise) Vantaggi Molto semplice Svantaggi t alto risolve tardi il problema t basso uccide troppe transazioni Gestione dei dati Concorrenza - 101
102 Riconoscimento dello stallo Costruzione incrementale del grafo di attesa (wait-for graph): i nodi sono le transazioni, e l arco da Ti a Tj in questo grafo significa che Ti sta aspettando che Tj liberi una risorsa Quando si genera un ciclo, lo scheduler risolve lo stallo scegliendo la transazione vittima (ad esempio quella che ha effettuato meno lavoro ma attenzione al blocco individuale, cioè il rischio di uccidere ripetutamente la stessa transazione) ed eseguendo il suo rollback (con tutte le conseguenze del caso) Esempio: sl 1 (X) sl 2 (Y) r 1 (X) r 2 (Y) xl 1 (Y) xl 2 (X) X Y X T1 T2 Y wait-for graph Gestione dei dati Concorrenza - 102
103 Prevenzione dello stallo: wait-die Ad ogni transazione Ti è assegnata una priorità pr(ti) (ad esempio, un numero che indica quanto è vecchia) al momento in cui arriva allo scheduler, in modo che diverse transazioni abbiano diverse priorità Si utlizza la seguente regola: in caso di conflitto su un lock, T i può attendere T j solo se ha priorità maggiore, cioè se pr(ti) > pr(tj), altrimenti Ti viene uccisa e subisce il rollback In pratica, all arrivo di un nuovo arco Ti Tj nel wait-for graph: se pr(ti) > pr(tj): nessuna azione di prevenzione se pr(ti) < pr(tj): Ti subisce il rollback Gestione dei dati Concorrenza - 103
104 Esempio di wait-die xl1(y) T1 accede a Y xl3(x) T3 accede a X xl2(x) T2 attende T3 xl1(x) T1 attende T2 xl3(y) T3 uccisa T1 (pr =25) wait T3 uccisa wait T3 (pr = 10) wait T2 (pr = 20) Gestione dei dati Concorrenza - 104
105 Altro esempio di wait-die xl3(x) T3 accede a X xl2(x) T2 attende T3 xl1(x) T1 attende da T3 (e da T2?) T1 (pr =22) wait T2 (pr =25) T3 (pr =20) Si noti che pr(t1) è maggiore di pr(t3), ma minore di pr(t2). Se mettessimo T1 in attesa di T3, scavalcheremmo T2, e dovremmo mettere T2 in attesa di T1, col rischio di starvation. Siccome T1 non può essere messo in attesa di T2, il metodo più semplice consiste nell uccidere T1. Gestione dei dati Concorrenza - 105
106 1.5 Recuperabilità delle transazioni
107 Il problema del rollback Finora abbiamo svolto il nostro studio assumendo che tutte le transazioni eseguissero il commit. Ora rilasciamo questa assunzione, e accettiamo che una transazione esegua il rollback La prima osservazione è che, in questa nuova situazione, la nozione di serializzabilità finora studiata non è più sufficiente a garantire le proprietà ACID delle transazioni Il problema è testimoniato dell esistenza di una nuova anomalia, chiamata della lettura sporca Gestione dei dati Concorrenza - 107
108 Nuova anomalia: lettura sporca (dirty read) Sono date due transazioni T1 e T2 identiche: READ(A, x), x:=x+1, WRITE(A, x) Si consideri il seguente schedule (si noti che T1 esegue il rollback): T 1 begin READ(A,x) x := x+1 WRITE(A,x) rollback T 2 begin READ(A,x) x := x+1 WRITE(A,x) commit Il problema è che T2 legge un valore scritto da T1 prima che T1 decida per il commit o il rollback. Di conseguenza, T2 legge un valore sporco, che viene poi rimosso dall azione di rollback. Il calcolo di A da parte di T2 si basa quindi su un input errato. Gestione dei dati Concorrenza - 108
109 Commit o rollback? Si noti che al termine di ogni transazione: Se la transazione ha effettuato commit: il sistema deve garantire che la transazione si concluda a buon fine, con i suoi effetti permanentemente registrati nella base di dati Se la transazione ha effettuato rollback: il sistema deve garantire che la transazione non lasci alcun effetto, nè diretto nè indiretto Gestione dei dati Concorrenza - 109
110 Cascading rollback Si noti che ci sono casi in cui il rollback di una transazione Ti può provocare il rollback di altre transazioni, a cascata. In particolare: se un altra transazione Tj ha letto da Ti, bisogna uccidere (rollback) Tj se un altra transazione Th ha letto da Tj, bisogna uccidere (rollback) Th e così via, ricorsivamente Il fenomeno è chiamato cascading rollback il cascading rollback, se necessario, è gestito dal Recovery Manager ma l ideale è trovare dei metodi che evitino il cascading rollback Gestione dei dati Concorrenza - 110
111 Schedule recuperabili Se in uno schedule, una transazione Ti che ha letto da Tj esegue il commit prima di Tj, il rischio è che Tj faccia successivamente il rollback, con il risultato che Ti può lasciare un effetto sulla base di dati che dipende da un operazione (di Ti) poi annullata, e che quindi dovrebbe essere considerata mai effettivamente eseguita. Per cogliere questo concetto, si dice che Ti non è recuperabile. Uno schedule S è recuperabile (recoverable) se nessuna transazione in S esegue il commit prima che tutte le altre transazioni dalle quali essa ha letto abbiano eseguito il commit Esempio di schedule recuperabile: S: w1(a) w1(b) w2(a) r2(b) c1 c2 Esempio di schedule non recuperabile: S: w1(a) w1(b) w2(a) r2(b) r3(a) c1 c3 c2 Gestione dei dati Concorrenza - 111
112 Serializzabilità e recuperabilità I due concetti di serializzabilità e recuperabilità sono ortogonali, nel senso che ci sono schedule recuperabili che non sono serializzabili, e schedule serializzabili che non sono recuperabili. Ovviamente, ogni schedule seriale è recuperabile schedule serializzabili schedule seriali schedule recuperabili Ad esempio, lo schedule S1: w2(a) w1(b) w1(a) r2(b) c1 c2 è recuperabile ma non serializzabile (non è view-serializzabile), mentre lo schedule S2: w1(a) w1(b) w2(a) r2(b) c2 c1 è serializzabile (in particolare, conflict-serializzabile) ma non recuperabile Gestione dei dati Concorrenza - 112
113 Recuperabilità e cascading rollback Gli schedule recuperabili non sventano il pericolo di cascading rollback. Ad esempio nello schedule recuperabile S: w2(a) w1(b) w1(a) r2(b) se T1 esegue il rollback, T2 deve essere uccisa Per evitare il cascading rollback occorre imporre una condizione più forte della recuperabilità: Uno schedule evita il cascading rollback (ovvero è ACR, Avoid Cascading Rollback) se ogni transazione legge solo valori scritti da transazioni che hanno già eseguito il commit Ad esempio, è ACR lo schedule S: w2(a) w1(b) w1(a) c1 r2(b) c2 In altre parole, uno schedule ACR impedisce l anomalia dirty data. Gestione dei dati Concorrenza - 113
114 Riassumendo S è recuperabile se nessuna transazione in S esegue il commit prima che tutte le altre transazioni dalle quali essa ha letto abbiano eseguito il commit Esempio: w1(a) w1(b) w2(a) r2(b) c1 c2 S è ACR, cioé evita il cascading rollback, se ogni transazione legge solo valori scritti da transazioni che hanno già eseguito commit Esempio: w1(a) w1(b) w2(a) c1 r2(b) c2 Gestione dei dati Concorrenza - 114
115 Confronto tra recuperabilità e ACR schedule serializzabili schedule seriali schedule ACR schedule recuperabili Si noti che, analogamente al caso degli schedule recuperabili, nemmeno gli schedule ACR sono necessariamente serializzabili. Ovviamente, ogni schedule ACR è recuperabile, ed ogni schedule seriale è ACR Gestione dei dati Concorrenza - 115
116 Recuperabilità e schedule 2PL Nella discussione sulla recuperabilità ci siamo fino ad ora occupati della relazione tra: operazioni di lettura operazioni di rollback operazioni di commit Dobbiamo ora capire come, per garantire la recuperabilità, si debba modificare la gestione dei lock, e dunque la struttura del protocollo 2PL Gestione dei dati Concorrenza - 116
117 Schedule stretti Diciamo che in uno schedule S una transazione Ti scrive su Tj se esiste in S un wj(a) seguito da wi(a), e tra queste operazioni non c è alcuna operazione di scrittura su A Diciamo che uno schedule è stretto se ogni transazione legge solo valori scritti da transazioni che hanno già eseguito commit, e scrive solo su transazioni che hanno già eseguito commit Si può verificare facilmente che ogni schedule stretto è ACR, e quindi recuperabile. L importanza di schedule stretti sarà completamente chiara quando parleremo di recovery. Per il momento, osserviamo che per uno schedule stretto, quando una transazione Ti viene abortita, è semplice stabilire quali sono i valori da ripristinare nella base di dati per riflettere l annullamento delle operazioni di Ti Gestione dei dati Concorrenza - 117
118 Confronto tra schedule stretti e ACR schedule recuperabili schedule serializzabili schedule seriali schedule stretti schedule ACR Ovviamente, ogni schedule seriale è stretto, ed ogni schedule stretto è ACR, e quindi recuperabile. Non tutti gli schedule ACR sono stretti. Gestione dei dati Concorrenza - 118
119 Two-phase locking stretto (strict 2PL) Uno schedule S segue il protocollo del 2PL stretto (chiameremo un tale schedule strict 2PL) se segue il protocollo 2PL, ed inoltre i lock di ogni transazione Ti vengono mantenuti fino al commit o l abort di Ti Tj wj(a) commit uj(a) Ti ri(a) Gestione dei dati Concorrenza - 119
120 Proprietà del 2PL stretto Ogni schedule strict 2PL evita il cascading rollback infatti, una transazione T2 non può leggere un valore di un elemento X scritto da T1 fin quando T1 non rilascia il lock su X, il chè avviene dopo che T1 ha eseguito il commit Ogni schedule strict 2PL è serializzabile si può dimostare che ogni schedule che segue il protocollo del 2PL stretto è conflict-equivalente allo schedule seriale in cui si ignorano le azioni delle transazioni che fanno rollback in S, ed in cui l ordine delle transazioni è quella dettata dall ordine dei comandi di commit (prima la transazione che per prima effettua il commit, poi la transazione che effettua per seconda il commit, e così via) Gestione dei dati Concorrenza - 120
121 Confronto generale Indichiamo con schedule strict 2PL la classe degli schedule legali con comandi per la gestione di lock esclusivi e condivisi, costituiti da transazioni ben formate e che seguono il protocollo del two-phase locking stretto. schedule schedule serializzabili schedule view-serializzabili conflict-serializzabili schedule 2PL schedule stretti schedule strict 2PL schedule seriali ACR Gestione dei dati Concorrenza - 121
122 Granularità del locking locking gerarchico In molti DBMS è possibile specificare i lock a diverse granularità: BD Base di dati R1 R2 Rn Relazioni B11 B12 B1n Blocchi T111 T11n Tuple Gestione dei dati Concorrenza - 122
123 Opzioni per la granularità Utilizzando lock su oggetti grandi (ad esempio relazioni) sono sufficienti pochi lock la concorrenza è ridotta le risorse restano bloccate con alta probabilità Utilizzando lock su oggetti piccoli (esempio record, campi) occorrono più lock la concorrenza aumenta Gestione dei dati Concorrenza - 123
124 Gerarchie di oggetti e di lock Consideriamo gerarchie di oggetti strutturate ad albero relazione blocco tupla I lock vengono richiesti dalla radice verso i discendenti I lock vengono rilasciati a partire dal nodo con lock e proseguendo verso la radice Gestione dei dati Concorrenza - 124
125 Nuovi tipi di lock Come prima: shared and exclusive X: exclusive lock S: shared lock Tre nuovi tipi (si assume di lavorare su un nodo corrente): ISL: intention shared lock esprime l intenzione di bloccare in modo condiviso almeno uno dei nodi che discendono dal nodo corrente IXL: intention exclusive lock - esprime l intenzione di bloccare in modo esclusivo almeno uno dei nodi che discendono dal nodo corrente SIXL: shared intention-exclusive lock blocca in modo condiviso il nodo corrente ed esprime l intenzione di bloccare in modo esclusivo almeno uno dei nodi che discendono dal nodo corrente Gestione dei dati Concorrenza - 125
126 Regole per i lock gerarchici Per richiedere un lock SL o ISL su un nodo, la transazione deve già avere un lock ISL sul nodo genitore Per richiedere un lock IXL, XL, o SIXL su un nodo, la transazione deve già avere un lock SIXL o IXL sul nodo genitore Ad esempio, per bloccare una tupla di Ri in scrittura: IXL su DB IXL su Ri IXL sul blocco opportuno XL sulla tupla Gestione dei dati Concorrenza - 126
127 Matrice di compatibilità per lock gerarchici Richiesta Stato risorsa ISL IXL SL SIXL XL ISL Yes Yes Yes Yes No IXL Yes Yes No No No SL Yes No Yes No No SIXL Yes No No No No XL No No No No No Gestione dei dati Concorrenza - 127
128 1.6 Gestione della concorrenza mediante timestamp
129 Altri metodi per il controllo di concorrenza I metodi basati su lock sono pessimistici, nel senso che prevengono comportamenti non serializzabili Altri metodi sono invece ottimistici, nel senso che portano ad eseguire le transazioni, salvo nel corso della esecuzione verificare qualche condizione che segnala comportamenti non serializzabili Il metodo dei timestamp, che adesso analizziamo, appartiene a questa categoria Gestione dei dati Concorrenza - 129
130 Concorrenza basata su timestamp Ad ogni transazione T viene assegnato un timestamp ts(t) unico al momento del suo inizio (arrivo allo scheduler). Nel seguito, per semplicità di notazione, assumiamo che il timestamp di ogni transazione coincida con il suo pedice, cioè ts(ti)=i. I timestamp definiscono implicitamente un ordine totale sulle transazioni, nel senso che le transazioni possono essere considerate ordinate secondo l ordine di arrivo, e quindi secondo valori crescenti dei timestamp. Ogni schedule che rispetta questo ordine è conflict-serializzabile, perché è equivalente allo schedule seriale corrispondente all ordinamento dei timestamp. Lo scheduler basato sui timestamp adotta inoltre dei meccanismi che assicurano che ogni schedule eviti il cascading rollback. L uso dei timestamp consente di evitare del tutto l uso di lock, e questo elimina anche il problema dei deadlock (in realtà, il deadlock può ancora avvenire, anche se è molto improbabile). Gestione dei dati Concorrenza - 130
131 Uso dei timestamp Le transazioni eseguono le loro azioni liberamente, senza la necessità di seguire protocolli Ad ogni operazione di lettura o scrittura, lo scheduler controlla che i timestamp delle transazioni coinvolte non violino la serializzabilità dello schedule rispetto all ordine totale indotto dai timestamp Ad ogni elemento X vengono associati due timestamp e un bit: rts(x): uguale al timestamp più alto tra quelli delle transazioni che hanno letto X wts(x): uguale al timestamp più alto tra quelli delle transazioni che hanno scritto X (che come vedremo coincide con il timestamp della transazione che ha effettuato l ultima scrittura su X) cb(x): un bit (chiamato il commit-bit), che è pari a true se la transazione che ha scritto per ultima X ha eseguito il commit, ed è false altrimenti (inizialmente è true) Gestione dei dati Concorrenza - 131
132 Regole di timestamp Idea fondamentale: le operazioni di una transazione T che avvengono nello schedule vanno pensate come se T fosse eseguita logicamente in modo istantaneo il tempo di esecuzione logico di un operazione in T è quello del timestamp di T, ovvero ts(t) il commit-bit serve ad evitare la lettura sporca Quindi abbiamo un tempo fisico ed un tempo logico di esecuzione, e rts(x), wts(x) ci indicano il timestamp della transazione che ha effettuato l ultima lettura/scrittura su X rispetto al tempo logico Un operazione di T eseguita al tempo fisico t, è accettata se il suo ordine temporale fisico è compatibile con il tempo logico ts(t) Questo principio di compatibilità è messo in pratica dallo scheduler, che controlla le regole di validazione delle operazioni in tempo reale, e prende le opportune decisioni Come abbiamo detto, noi assumiamo che il timestamp di ogni transazione coincida con il suo pedice, cioè ts(ti)=i. Nel seguito, t1,,tn denotano i tempi fisici. Gestione dei dati Concorrenza - 132
133 Regole di timestamp caso 1a (read ok) Caso 1.a: B(T1) B(T2) B(T3) w1(x) r3(x) r2(x) t1 t2 t3 t4 t5 t6 Consideriamo r2(x) rispetto all ultima scrittura w1(x) su X: il tempo fisico di r2(x) è t6, che è maggiore del tempo fisico di w1(x), cioè t4 il tempo logico di r2(x) è ts(t2) che è maggiore del tempo logico di w1(x), cioè wts(x) = ts(t1) Concludiamo che non c è incompatibilità (read ok), e si procede così: 1. se cb(x) è true, allora in generale, a fronte di una lettura di T su X, rts(x) deve essere posto uguale al massimo tra rts(x) e ts(t) nell esempio, sebbene r2(x) sia fisicamente successivo all ultima lettura r3(x) su X, essa è logicamente precedente a r3(x), e quindi, se cb(x) fosse uguale a true, rts(x) rimarrebbe ts(t3) l azione r2(x) di T2 viene eseguita, e si continua 2. se cb(x) è false (come nell esempio), allora T2 viene messa in attesa del commit che fa scattare cb(x) a true, o del rollback della transazione che ha scritto per ultima X Gestione dei dati Concorrenza - 133
134 Regole di timestamp caso 1b (read too late) Caso 1.b: B(T1) B(T2) w2(x) r1(x) t 1 t 2 t 3 t 4 Consideriamo r1(x) rispetto all ultima scrittura w2(x) su X: il tempo fisico di r1(x) è t4, che è maggiore del tempo fisico di w2(x), cioè t3 il tempo logico di r1(x) è ts(t1), che è minore del tempo logico di w2(x), cioè wts(x) = ts(t2) Concludiamo che c è incompatibilità: in altri termini, la lettura di X da parte di T1 avviene troppo tardi (read too late) Si procede così: l azione r1(x) di T1 non può essere eseguita, T1 subisce il rollback, e viene fatta ricominciare con un nuovo timestamp. Gestione dei dati Concorrenza - 134
135 Regole di timestamp caso 2a (write ok) Caso 2.a: B(T1) B(T2) B(T3) r1(x) w2(x) w3(x) t1 t2 t3 t4 t5 T6 Consideriamo w3(x) rispetto all ultima lettura r1(x) e all ultima scrittura w2(x): il tempo fisico di w3(x) è maggiore del tempo fisico di r1(x) e w2(x) il tempo logico di w3(x) è maggiore del tempo logico di r1(x) e w2(x) Concludiamo che non c è incompatibilità (write ok) Gestione dei dati Concorrenza - 135
136 Regole di timestamp caso 2a (write ok) Caso 2.a: B(T1) B(T2) B(T3) r1(x) w2(x) w3(x) t1 t2 t3 t4 t5 T6 Si procede così: SE cb(x) è true (oppure nessuna transazione attiva ha scritto su X), allora si pone wts(x) pari a ts(t3) si pone cb(x) pari a false l azione w3(x) di T3 viene eseguita, e si continua ALTRIMENTI T3 viene messa in attesa del commit o rollback della transazione T che per ultima ha scritto su X, cioè T3 è in attesa che cb(x) diventi true (si noti che cb(x) diventa true sia che T faccia commit, sia che T subisca il rollback) Gestione dei dati Concorrenza - 136
137 Regole di timestamp caso 2b (Thomas rule) Caso 2.b: B(T1) B(T2) B(T3) r1(x) w2(x) t1 t2 t3 t4 t5 w1(x) t6 Consideriamo w1(x) rispetto all ultima lettura r1(x): il tempo fisico di w1(x) è maggiore del tempo fisico di r1(x), e siccome w1(x) ed r1(x) appartengono alla stessa transazione, non c è incompatibilità rispetto al tempo logico. È necessario però confrontare w1(x) anche con l ultima scrittura w2(x) su X. Nel tempo logico, la scrittura di T2 è successiva a quella di T1, e se eseguissi w1(x), avrei un anomalia di update loss. Allora: 1. se cb(x) è true (cioè T2 ha già fatto commit) la soluzione è ignorare w1(x) e continuare. In questo modo, otteniamo l effetto di sovrascrivere correttamente il valore che avrebbe scritto T1 con quello scritto da T2 2. se cb(x) è false, dobbiamo mettere T1 in attesa di cb(x)=true ovvero del commit o del rollback della transazione che ha scritto per ultima X Gestione dei dati Concorrenza - 137
138 Regole di timestamp caso 2c (write too late) Caso 2.c: B(T1) B(T2) r2(x) w1(x) t1 t2 t3 t4 Consideriamo w1(x) rispetto all ultima lettura r2(x) su X: il tempo fisico di w1(x) è t4, che è maggiore del tempo fisico di r2(x), cioè t3 il tempo logico di w1(x) è ts(t1), che è minore del tempo logico di r2(x), cioè rts(x) = ts(t2) Concludiamo che c è incompatibilità (write too late). Si procede così: l azione w1(x) di T1 non può essere eseguita, T1 subisce il rollback, e viene fatta ricominciare con un nuovo timestamp. Gestione dei dati Concorrenza - 138
139 Lo scheduler nel metodo dei timestamp A fronte dell operazione ri(x): se ts(ti) >= wts(x) allora se cb(x)=true oppure se ts(ti) = wts(x) // (caso 1.a) allora poni rts(x) = max(ts(ti), rts(x)) ed esegui ri(x) // (caso 1.a.1) altrimenti metti Ti in attesa di cb(x)=true o del rollback della transazione che ha scritto X // (caso 1.a.2) altrimenti rollback(ti) // (caso 1.b) A fronte dell operazione wi(x): se ts(ti) >= rts(x) e ts(ti) >= wts(x) allora se cb(i)=true allora poni wts(x)=ts(ti) e cb(x)=false, ed esegui wi(x) // (caso 2.a.1) altrimenti metti Ti in attesa di cb(x)=true o del rollback della transazione che ha scritto X // (caso 2.a.2) altrimenti se ts(ti) >= rts(x) e ts(ti) < wts(x) // (caso 2.b) allora se cb(x)=true allora ignora wi(x) // (caso 2.b.1) altrimenti metti Ti in attesa di cb(x)=true o del rollback della transazione che ha scritto X // (caso 2.b.2) altrimenti rollback(ti) // (caso 2.c) Gestione dei dati Concorrenza - 139
140 Lo scheduler nel metodo dei timestamp A fronte dell operazione commit ci da parte di Ti: - per ogni elemento X della base di dati scritto da Ti, - poni cb(x) = true; - per ogni transazione Tj in attesa di cb(x)=true o del rollback della transazione che ha scritto per ultima X, consenti a Tj di procedere (Ti viene cioè tolta dallo stato di attesa); - scegli la transazione da far procedere. A fronte dell operazione rollback bi da parte di Ti: - per ogni elemento X scritto da Ti: - poni wts(x) uguale al timestamp della transazione Tj che ha scritto X prima di Ti, e poni cb(x) a true (si noti che Tj ha certamente fatto commit); - per ogni transazione Tj in attesa di cb(x) = true (con X scritto da Ti) o del rollback di Ti, consenti a Tj di procedere; - scegli la transazione da far procedere. Gestione dei dati Concorrenza - 140
141 Riassumendo Nel metodo dei timestamp, una transazione Ti: non può leggere un dato scritto da una transazione con un timestamp maggiore (read too late) non può scrivere un dato letto da una transazione con un timestamp maggiore (write too late) se prova a scrivere un dato scritto da una transazione Tj con un timestamp maggiore, tale scrittura viene ignorata se Tj ha già fatto commit, altrimenti Ti viene sospesa fino al commit o al rollback di Tj (Thomas rule) quando legge un dato scritto da una transazione Tj con un timestamp minore che non ha ancora fatto commit (o rollback), Ti viene messa in attesa del commit (o rollback) di Tj (read ok, caso b) in tuti gli altri casi, può leggere e scrivere liberamente Gestione dei dati Concorrenza - 141
142 Il deadlock nel metodo dei timestamp Purtroppo il metodo dei timestamp non sventa il pericolo di deadlock, sebbene la probabilità di deadlock sia minore che nel caso del metodo con i lock. Il deadlock nel metodo dei timestamp è legato all uso del commit-bit. Consideriamo ad esempio il seguente schedule: w1(b), w2(a), w1(a), r2(b) Al momento di w1(a), la transazione T1 viene messa in attesa del commit di T2. Al momento di r2(b), la transazione T2 viene messa in attesa del commit di T1. Il deadlock nel metodo dei timestamp si affronta con le tecniche già viste nella trattazione del 2PL. Gestione dei dati Concorrenza - 142
143 Esercizio Descrivere il comportamento dello scheduler durante l esecuzione della seguente sequenza: r6(a) r8(a) r9(a) w8(a) w11(a) r10(a) c11 In particolare, descrivere quali azioni vengono eseguite, quali vengono sospese e le eventuali azioni di rollback, nonché l evoluzione dei timestamp e del commit bit di A Gestione dei dati Concorrenza - 143
144 Esempio di uso di timestamp Azione Effetto Nuovi valori r6(a) ok rts(a) = 6 r8(a) ok rts(a) = 8 r9(a) ok rts(a) = 9 w8(a) no T8 uccisa (write too late) w11(a) ok wts(a) = 11, cb(a)=false r10(a) no T10 uccisa (read too late) c11 ok cb(a) = true Gestione dei dati Concorrenza - 144
145 Timestamp e conflict-serializzabilità Esistono schedule che sono conflict-serializzabili, ma che non sono accettati con il metodo dei timestamp, come ad esempio: r1(y) r2(x) w1(x) Se S è uno schedule accettato con il metodo dei timestamp e non soggetto alla Thomas rule, allora lo schedule ottenuto da S eliminando tutte le azioni delle transazioni che hanno effettuato rollback è conflict-serializzabile Se uno schedule è accettato con il metodo dei timestamp, ed è soggetto alla Thomas rule, allora può non essere conflict-serializzabile, come ad esempio, r1(a) w2(a) c2 w1(a) c1 Si noti però che se uno schedule S è accettato con il metodo dei timestamp ed è soggetto alla Thomas rule, allora lo schedule S ottenuto da S eliminando le scritture ignorate dalla Thomas rule ed eliminando tutte le azioni delle transazioni che hanno effettuato rollback è conflictserializzabile Gestione dei dati Concorrenza - 145
146 Confronto tra timestamp e 2PL Esistono schedule che sono accettati con il metodo dei timestamp, ma che non sono schedule 2PL. Ad esempio, r1(a) w2(a) r3(a) r1(b) w2(b) r1(c) w3(c) r4(c) w4(b) w5(b) è accettato con il metodo dei timestamp, ma non è uno schedule 2PL, perché T2 prima deve rilasciare il lock su A affinché A venga letto da T3 con r3(a), e solo successivamente può chiedere il lock per scrivere su B con w2(b), perché se lo chiedesse prima, T1 non potrebbe effettuare la lettura di B. Esistono schedule che sono accettati con il metodo dei timestamp, ed appartengono agli schedule del 2PL stretto, ad esempio tutti gli schedule seriali come: r1(a) w1(a) r2(a) w2(a) Esistono schedule che sono in 2PL (stretto), ma non sono accettati con il metodo dei timestamp, come ad esempio: r1(b) r2(a) w2(a) r1(a) w1(a) in cui T2 acquisirebbe il timestamp dopo T1 ma scriverebbe A prima della lettura di A da parte di T1 Gestione dei dati Concorrenza - 146
147 Confronto tra timestamp e 2PL Attesa 2PL: le transazioni vengono messe in attesa TS: vengono uccise e fatte ricominciare (oppure vengono messe in attesa di commit di altre transazioni, vedi sotto) Ordine di serializzazione 2PL: è imposto dai conflitti TS: è imposto dai timestamp Necessità di attendere il commit di altre transazioni 2PL: risolto dal protocollo strict 2PL TS: attesa di cb(x) = true (casi read ok e Thomas rule) Deadlock 2PL è soggetto a deadlock TS può costringere a restart, ma il deadlock è improbabile Gestione dei dati Concorrenza - 147
148 Confronto tra timestamp e 2PL Il metodo dei timestamp è superiore in genere quando le transazioni sono read only, o quando è raro che transazioni concorrenti leggano e scrivano lo stesso elemento Il 2PL è superiore nelle situazioni di alto conflitto perché: il locking ritarda sì le transazioni quando sono in attesa di lock e può anche portare, in caso di deadlock, a rollback ma la probabilità di rollback è superiore nel caso di timestamp, dando luogo a ritardi medi superiori che nel 2PL Gestione dei dati Concorrenza - 148
149 Metodo dei timestamp multiversione Idea: non bloccare le istruzioni di lettura, introducendo versioni diverse X1 Xn di un elemento X in modo che un azione di lettura possa sempre essere effettuata leggendo la versione giusta rispetto al tempo logico determinato dai timestamp Ogni scrittura wi(x) legale genera una nuova versione Xi (la notazione che usiamo fa sì che il pedice che denota la versione è uguale al timestamp della transazione che l ha generata) Ad ogni versione Xh di X è assegnato il timestamp wts(xh)=ts(th), che indica il ts della transazione che ha scritto quella versione Ad ogni versione è assegnato il timestamp rts(xi)=ts(th), che indica il ts più alto tra quelle che hanno letto Xi Gestione dei dati Concorrenza - 149
150 Nuove regole per l utilizzo dei timestamp Lo scheduler utilizza i timestamp come segue: A fronte di wi(x): se c è già stata una lettura rj(xk) tale che wts(xk) < Ts(Ti) < Ts(Tj), allora la scrittura non viene accettata (write too late), altrimenti si esegue la scrittura sulla nuova versione Xi di X, e si pone wts(xi) = ts(ti). A fronte di ri(x): si esegue la lettura selezionando la versione Xj tale che wts(xj) è il timestamp più alto tra quelli minori di o uguali a ts(ti), cioè: Xj è tale che wts(xj) <= ts(ti), e non esiste alcuna versione Xh tale che wts(xj) < wts(xh) <= ts(ti). Ovviamente, si aggiorna poi nel modo usuale rts(x j ). Quando esiste Xj tale che wts(xj) è tale che nessuna transazione attiva ha timestamp minore di j, allora si eliminano le versioni di X che sono precedenti rispetto a Xj, dalla più vecchia alla più nuova. Per assicurare la recuperabilità, per ogni transazione Ti si ritarda il commit di Ti fino a che non sono stati eseguiti i commit da parte di tutte le transazioni Tj da cui Ti ha letto. Gestione dei dati Concorrenza - 150
151 Nuove regole per l utilizzo dei timestamp Lo scheduler fa uso di opportune strutture di dati: Per ogni versione Xi lo scheduler mantiene un intervallo intervallo(xi) = [wts, rts], dove wts è il timestamp della transazione che ha scritto Xi, ed rts è il timestamp più grande tra quelli delle transazioni che hanno letto Xi (se nessuno ha letto Xi, allora rts=wts). Denotiamo con intervalli(x) l insieme { intervallo(xi) Xi è una versione di X } Quando processa ri(x), lo scheduler usa intervalli(x) per trovare la versione Xj tale che intervallo(xj) = [wts, rts] ha il massimo wts minore o uguale al timestamp ts(ti) di Ti. Se poi ts(ti) > rts, allora rts viene posto uguale a ts(ti) Quando processa wi(x), lo schedule usa intervalli(x) per trovare la versione Xj tale che intervallo(xj) = [wts, rts] ha il massimo wts minore o uguale al timestamp ts(ti) di Ti. Se poi rts > ts(ti), allora wi(x) viene rifiutato, altrimenti wi(x) viene accettato, e viene creata la versione Xi con intervallo(xi) = [wts, rts], dove wts = rts = ts(ti). Gestione dei dati Concorrenza - 151
152 Confronto con timestamp universione Vantaggi: Non ci sono i commit bit (meccanismi di lock in scrittura) Non c è mai attesa in lettura (niente sospensione per read ok) Non c è mai rollback causato da letture (niente read too late) Non c è mai attesa in scrittura (niente sospensione per write ok) Non c è rischio di deadlock Svantaggi: Lo schedule NON è ACR (c è il rischio di cascading rollback e quindi di basso throughput nelle situazioni di alto conflitto) Gestione di molte copie degli elementi della base di dati Il metodo dei timestamp multiversione è il principale esempio del cosiddetto Multiversion Concurrency Control (MVCC), ovvero gestione della concorrenza basata su versioni multiple della base di dati Gestione dei dati Concorrenza - 152
153 Esempio del timestamp multiversione Supponiamo che la versione attuale di A sia A0, con rts(a)=0. Sequenza S = r1(a) w1(a) r2(a) w2(a) r3(a) r4(a) r1(a) w3(a) T1 T2 T3 T4 r1(a) w1(a) r1(a) r2(a) w2(a) r3(a) w3(a) r4(a) legge A0, e pone rts(a0)=1 scrive A1 e rts(a1)=wts(a1)=1 legge A1, e pone rts(a1)=2 scrive A2 e rts(a2)=wts(a2)=2 legge A2, e pone rts(a2)=3 legge A2, e pone rts(a2)=4 legge A1 rollback di T3 (write too late) t Gestione dei dati Concorrenza - 153
154 Altro esempio del timestamp multiversione Supponiamo che la versione attuale di A sia A0, con rts(a)=0. sequenza S = r1(a) w2(a) r3(a) w4(a) r5(a) r2(a) r4(a) T1 T2 T3 T4 T5 r1(a) w2(a) r2(a) r3(a) w4(a) r4(a) r5(a) legge A0, e pone rts(a0)=1 scrive A2 e rts(a2)=wts(a2)=2 legge A2, e pone rts(a2)=3 scrive A4 e rts(a4)=wts(a4)=4 legge A4, e pone rts(a4)=5 legge A2 legge A4 N.B.: lo schedule S NON è view-serializzabile! t Gestione dei dati Concorrenza - 154
155 Gestione della concorrenza in SQL In SQL-92 sono presenti costrutti per la definizione di transazioni e del livello di concorrenza Una singola istruzione (SELECT) è considerata come una unità atomica di esecuzione SQL non prevede una esplicita istruzione BEGIN TRANSACTION In SQL ogni transazione deve avere un esplicita istruzione di terminazione, che può essere o COMMIT o ROLLBACK Gestione dei dati Concorrenza - 155
156 Esempio EXEC SQL WHENEVER sqlerror GO TO ESCI; EXEC SQL SET TRANSACTION READ WRITE, DIAGNOSTICS SIZE 8, ISOLATION LEVEL SERIALIZABLE; EXEC SQL INSERT INTO EMPLOYEE (Name, ID, Address) VALUES ( John Doe',1234, xyz'); EXEC SQL UPDATE EMPLOYEE SET Address = abc' WHERE ID = 1000; EXEC SQL COMMIT; GOTO FINE; ESCI: EXEC SQL ROLLBACK; FINE: Gestione dei dati Concorrenza - 156
157 Letture fantasma Poiché SQL considera atomica una query, va considerata una ulteriore anomalia, la cosiddetta lettura fantasma Esempio: T1 esegue la query SELECT * FROM R T2 aggiunge alla relazione R un record r T1 riesegue la query precedente, e il risultato della seconda lettura ha il record r in piu (fantasma) La lettura fantasma è una versione dell anomalia di lettura non ripetibile generalizzata al caso in cui la lettura avviene mediante una query che legge un insieme di record Gestione dei dati Concorrenza - 157
158 L istruzione SET TRANSACTION L istruzione SET TRANSACTION permette di definire i seguenti aspetti: Modo di accesso: valore READ ONLY oppure READ WRITE Livello di isolamento della transazione: può assumere uno tra i seguenti valori: READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE (valore di default) Configurazione del numero di condizioni di errore gestibili contemporaneamente (DIAGNOSTIC SIZE n) Gestione dei dati Concorrenza - 158
159 Livelli di isolamento (Assumiamo che l istruzione SET TRANSACTION sia relativa alla transazione Ti) SERIALIZABLE: La transazione Ti legge solo da transazioni committed Nessun valore letto o scritto dalla transazione Ti può essere modificato da altre transazioni fino al commit di Ti L insieme di record letto da Ti attraverso una query non può essere modificato da altre transazioni fino al commit di Ti (evita l anomalia delle letture fantasma) Gestione dei dati Concorrenza - 159
160 REPEATABLE READ: Livelli di isolamento La transazione Ti legge solo da transazioni committed Nessun valore letto o scritto dalla transazione Ti può essere modificato da altre transazioni fino al commit di Ti L insieme di record letto da Ti attraverso una query può essere modificato da altre transazioni prima del commit di Ti (sono quindi possibili letture fantasma) Gestione dei dati Concorrenza - 160
161 READ COMMITTED: Livelli di isolamento La transazione Ti legge solo da transazioni committed Nessun valore scritto dalla transazione Ti può essere modificato da altre transazioni fino al commit di Ti, mentre i valori letti da Ti possono essere modificati (sono quindi possibili letture non ripetibili e letture fantsma) Gestione dei dati Concorrenza - 161
162 READ UNCOMMITTED: Livelli di isolamento La transazione Ti può leggere da qualsiasi transazione anche non committed (è quindi possibile il cascading rollback) Sia i valori scritti che i valori letti da Ti possono essere modificati (sono quindi possibili letture sporche, letture non ripetibili e letture fantasma) Gestione dei dati Concorrenza - 162
163 Gestione della concorrenza nei sistemi commerciali I gestori della concorrenza dei principali sistemi commerciali (Oracle, DB2, SQL Server, PostgreSQL) utilizzano scheduler basati su lock e/o su timestamp (in particolare, timestamp multiversione) Gli scheduler di tali sistemi spesso dividono le transazioni in due classi: Le transazioni con read e write sono eseguite con 2PL Le read only sono eseguite con il metodo dei timestamp multiversione Gestione dei dati Concorrenza - 163
Basi di Dati Complementi Esercizi Esercizi su concurrency control
Basi di Dati Complementi Esercizi Esercizi su concurrenc control Esercizio. Dati gli schedule : s r w r w r w s r w r w r3 w r r3 s3 r r3 rz w w3 a. specificare, con una breve giustificazione, a quali
Esecuzione concorrente di transazioni
Esecuzione concorrente di transazioni A L B E R T O B E L U S S I P A R T E I I A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Tecniche applicate nei DBMS Le tecniche per il controllo della concorrenza che
Controllo concorrenza
Controllo concorrenza Esercitazioni - Basi di dati (complementi) Autore: Dr. Simone Grega Esercizio. Dati gli schedule: s r w r w r w s r w r w r3 w r r3 s3 r r3 rz w w3 Specificare, con una breve giustificazione,
Corso di Sistemi di Gestione di Basi di Dati. Esercitazione sul controllo di concorrenza 12/02/2004
Corso di Sistemi di Gestione di Basi di Dati Esercitazione sul controllo di concorrenza 12/02/2004 Dott.ssa Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma
Tecnologia di un Database Server (centralizzato) Introduzione generale
Introduzione Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Introduzione generale Angelo Montanari Dipartimento di Matematica e Informatica Università di
Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni
Capitolo 13 Gestione delle transazioni Transazioni L esecuzione concorrente dei programmi utente è essenziale per le buone prestazioni del DBMS Poiché gli accessi al disco sono frequenti e relativamente
execute reject delay
Scheduler Lo scheduler stabilisce l ordine di esecuzione delle operazioni. Le azioni che svolge sono: execute: l operazione può essere eseguita immediatamente, per cui viene passata al data manager reject:
Basi di Dati prof. A. Longheu. 5 Progettazione fisica
Basi di Dati prof. A. Longheu 5 Progettazione fisica Progettazione Fisica Per effettuare la progettazione fisica, ossia l implementazione reale del modello logico creato nella fase della progettazione
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo
Gestione delle transazioni Introduzione Transazioni in SQL Linguaggio SQL: costrutti avanzati 2 applicativo Operazioni bancarie operazione di prelievo dal proprio conto corrente mediante bancomat Gestione
Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill
/XFLGLVXOFRQWUROORGHOODFRQFRUUHQ]D Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill $QRPDOLD /RVW8SGDWH Si considerino le due transazioni identiche: W1
1. PRIME PROPRIETÀ 2
RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,
risulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
Linguaggio SQL: costrutti avanzati
Linguaggio SQL: costrutti avanzati Gestione delle transazioni Introduzione Transazioni in SQL Proprietà delle transazioni 2 Pag. 1 1 Gestione delle transazioni Esempio applicativo Operazioni bancarie operazione
DB - Cenni sulla gestione delle transazioni
transazioni Cenni sulla gestione delle transazioni in DBMS transazioni Cenni sulla gestione delle transazioni in DBMS Basato sulle slides di transazioni Cenni sulla gestione delle transazioni in DBMS Basato
Il principio di induzione e i numeri naturali.
Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito
Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >
Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego
( x) ( x) 0. Equazioni irrazionali
Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza
Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati
Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità
10. Insiemi non misurabili secondo Lebesgue.
10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi
Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario
Data Base Management System Strumenti: Software specifico Formato: Pro: Proprietario Massima semplicità di inserimento e gestione Tipizzazione Validazione dei dati Contro: Creazione del database Programmazione
Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
Deadlock (stallo) Parte III. Deadlock
Parte III Deadlock Sistemi Operativi - prof. Silvio Salza - a.a. 2008-2009 III - 1 Deadlock (stallo) Su di un tavolo ci sono un piatto ed una forchetta A e B sono seduti al tavolo, per mangiare ciascuno
Tecnologia di un Database Server (centralizzato) Gestione del buffer
Buffer Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione del buffer Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Buffer
MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010
elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
L architettura di un DBMS
L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze
Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:
Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
NORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno
NORMALIZZAZIONE DI SCHEMI RELAZIONALI Prof.ssa Rosalba Giugno PROBLEMA GENERALE La progettazione concettuale e logica produce uno schema relazionale che rappresenta la realta dei dati nella nostra applicazione.
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Tecnologia di un Database Server (centralizzato) Gestione della concorrenza
Concorrenza Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione della concorrenza Angelo Montanari Dipartimento di Matematica e Informatica Università
Ricorsione in SQL-99. Introduzione. Idea di base
Ricorsione in SQL-99 Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Esempio Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l interrogazione
Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio
Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento
Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma
Sistemi di gestione delle basi di dati 1 Cos è un DBMS? Una collezione integrata molto grande di dati Modella organizzazioni del mondo reale Entità (ad esempio studenti, corsi) Relazioni (ad esempio, Madonna
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
Capitolo 2. Operazione di limite
Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A
1 Giochi a due, con informazione perfetta e somma zero
1 Giochi a due, con informazione perfetta e somma zero Nel gioco del Nim, se semplificato all estremo, ci sono due giocatori I, II e una pila di 6 pedine identiche In ogni turno di gioco I rimuove una
A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
Capitolo 13: L offerta dell impresa e il surplus del produttore
Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:
4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Corso di Programmazione Concorrente
Corso di Programmazione Concorrente Stallo Valter Crescenzi [email protected] http://www.dia.uniroma3.it/~crescenz Assunzione di Progresso Finito Tutti i processori virtuali hanno una velocità finita
CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU
Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi
Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza
Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di
Convertitori numerici in Excel
ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel
Parte 2 Esercitazione sulla gestione della concorrenza
Gestione dei dati Parte 2 Esercitazione sulla gestione della concorrenza Maurizio Lenzerini, Riccardo Rosati Facoltà di Ingegneria Sapienza Università di Roma Anno Accademico 2012/2013 http://www.dis.uniroma1.it/~rosati/gd/
B+Trees. Introduzione
B+Trees Introduzione B+Trees Il B+Trees e la variante maggiormente utilizzata dei BTrees BTrees e B+trees fanno parte della famiglia degli alberi di ricerca. Nel B+Trees i dati sono memorizzati solo nelle
Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux
Scheduling della CPU Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux Sistemi multiprocessori Fin qui si sono trattati i problemi di scheduling su singola
Complessità Computazionale
Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION
Introduzione all Architettura del DBMS
Introduzione all Architettura del DBMS Data Base Management System (DBMS) Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo
DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1
DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica
LA NORMALIZZAZIONE. Introduzione
LA NORMALIZZAZIONE Introduzione La normalizzazione e' una tecnica di progettazione dei database, mediante la quale si elimina la rindondanza dei dati al fine di evitare anomalie nella loro consistenza
Transazioni. Architettura di un DBMS. Utente/Applicazione. transazioni. Transaction Manager. metadati, statistiche.
Query/update Query plan Execution Engine richieste di indici, record e file Index/file/record Manager comandi su pagine Query Compiler Buffer Manager Lettura/scrittura pagine Architettura di un DBMS Utente/Applicazione
Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni
Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono
f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
Metodi e Modelli Matematici di Probabilità per la Gestione
Metodi e Modelli Matematici di Probabilità per la Gestione Prova scritta del 30/1/06 Esercizio 1 Una banca ha N correntisti. Indichiamo con N n il numero di correntisti esistenti il giorno n-esimo. Descriviamo
Lezione 9: Cambio di base
Lezione 9: Cambio di base In questa lezione vogliamo affrontare uno degli argomenti piu ostici per lo studente e cioè il cambio di base all interno di uno spazio vettoriale, inoltre cercheremo di capire
1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?
1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. La nozione di multiprogrammazione prevede la possibilità di
Scelte in condizione di incertezza
Scelte in condizione di incertezza Tutti i problemi di decisione che abbiamo considerato finora erano caratterizzati dal fatto che ogni possibile scelta dei decisori portava a un esito certo. In questo
Parte 2. Determinante e matrice inversa
Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice
Automazione Industriale (scheduling+mms) scheduling+mms. [email protected]
Automazione Industriale (scheduling+mms) scheduling+mms [email protected] Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione
SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007
2007 SISTEMI OPERATIVI Deadlock (blocco critico) Domande di verifica Luca Orrù Centro Multimediale Montiferru 04/06/2007 Deadlock (blocco critico) 1. Si descriva il deadlock e le condizioni sotto cui si
Introduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
ci sono più problemi che programmi esiste un problema che non si può risolvere con un programma
Calcolabilità problemi facili trovare la media di due numeri stampare le linee di un file che contengono una parola problemi difficili trovare il circuito minimo data una tabella determinare la migliore
Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007
Sommario Macchine a stati finiti M. Favalli 5th June 27 4 Sommario () 5th June 27 / 35 () 5th June 27 2 / 35 4 Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:
Luigi Piroddi [email protected]
Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi [email protected] Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,
Ottimizazione vincolata
Ottimizazione vincolata Ricordiamo alcuni risultati provati nella scheda sulla Teoria di Dini per una funzione F : R N+M R M di classe C 1 con (x 0, y 0 ) F 1 (a), a = (a 1,, a M ), punto in cui vale l
Ottimizzazione Multi Obiettivo
Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali
Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo
Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo L. De Giovanni G. Zambelli 1 Problema del flusso a costo minimo Il problema del flusso a costo minimo é definito
1 Applicazioni Lineari tra Spazi Vettoriali
1 Applicazioni Lineari tra Spazi Vettoriali Definizione 1 (Applicazioni lineari) Si chiama applicazione lineare una applicazione tra uno spazio vettoriale ed uno spazio vettoriale sul campo tale che "!$%!
Artifact Centric Business Processes (I)
Introduzione Autore: Docente: Prof. Giuseppe De Giacomo Dipartimento di Informatica e Sistemistica SAPIENZA - Universitá di Roma 16 Novembre 2008 Una visione assiomatica La modellazione dei processi di
Manuale Terminal Manager 2.0
Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette
Soluzione dell esercizio del 12 Febbraio 2004
Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
Per lo svolgimento del corso risulta particolarmente utile considerare l insieme
1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R
Scheduling. Sistemi Operativi e Distribuiti A.A. 2004-2005 Bellettini - Maggiorini. Concetti di base
Scheduling Sistemi Operativi e Distribuiti A.A. 2-25 Bellettini - Maggiorini Concetti di base Il massimo utilizzo della CPU si ottiene mediante la multiprogrammazione Ogni processo si alterna su due fasi
19. Inclusioni tra spazi L p.
19. Inclusioni tra spazi L p. Nel n. 15.1 abbiamo provato (Teorema 15.1.1) che, se la misura µ è finita, allora tra i corispondenti spazi L p (µ) si hanno le seguenti inclusioni: ( ) p, r ]0, + [ : p
Archivi e database. Prof. Michele Batocchi A.S. 2013/2014
Archivi e database Prof. Michele Batocchi A.S. 2013/2014 Introduzione L esigenza di archiviare (conservare documenti, immagini, ricordi, ecc.) è un attività senza tempo che è insita nell animo umano Primi
Parte 6. Applicazioni lineari
Parte 6 Applicazioni lineari A Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Applicazioni fra insiemi, 2 Applicazioni lineari tra spazi vettoriali, 2 3 Applicazioni lineari da R n a R
Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati
Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza
Esempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
I sistemi di numerazione
I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono
Capitolo 25: Lo scambio nel mercato delle assicurazioni
Capitolo 25: Lo scambio nel mercato delle assicurazioni 25.1: Introduzione In questo capitolo la teoria economica discussa nei capitoli 23 e 24 viene applicata all analisi dello scambio del rischio nel
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
Il problema del produttore e del consumatore. Cooperazione tra processi
Il problema del produttore e del consumatore Cooperazione tra processi Risorsa consumabile I processi disgiunti possono interferire tra loro a causa dell'uso di risorse permanenti, ma ognuno di essi ignora
INTRODUZIONE AI CICLI
www.previsioniborsa.net INTRODUZIONE AI CICLI _COSA SONO E A COSA SERVONO I CICLI DI BORSA. Partiamo dalla definizione di ciclo economico visto l argomento che andremo a trattare. Che cos è un ciclo economico?
2. Leggi finanziarie di capitalizzazione
2. Leggi finanziarie di capitalizzazione Si chiama legge finanziaria di capitalizzazione una funzione atta a definire il montante M(t accumulato al tempo generico t da un capitale C: M(t = F(C, t C t M
