Anno Architetture dati DBMS Centralizzati Controllo di concorrenza Carlo Batini
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 2 Sappiamo gia’ che ….
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 3 Concurrency control
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 4 Concorrenza - 1 Il throughput di un sistema e’ il numero di transazioni per secondo (tps) accettate dal sistema a regime In un sistema che non prevede esecuzione concorrente, il throughput e’ al massimo pari al tempo di esecuzione di una singola transazione –Puo’ essere dell’ordine dei secondi per una normale applicazione OLTP In un DBMS, si vuole ottenere un throughput dell’ordine di tps Questo impone un alto grado di concorrenza tra le transazioni in esecuzione –Es Se una transazione impiega mediamente 0.1 secondi ad eseguire, ad un throughput di 100tps corrispondono mediamente 10 transazioni in esecuzione concorrente Esempi tipici: applicazioni bancarie, di prenotazione voli
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 5 Concorrenza - esempio Void chooseSeat() { /* codice C che verifica la disponibilita’ di posti su un volo e prenota un posto */ (1) EXEC SQL SELECT occupied INTO :occ FROM flights WHERE fltNum = :flight AND fltDate = :date AND fltSeat = :seat; (2) if (!occ) { EXEC SQL UPDATE Flights SET occupied = TRUE WHERE fltNum = :flight AND fltDate = :date AND fltSeat = :seat; /* notifica posto prenotato */ } else /* notifica volo completo */ }
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 6 Concorrenza - 2 Supponiamo che la funzione chooseSeat() venga eseguita simultaneamente da due o piu’ applicazioni (es due agenzie viaggi), che cercano di prenotare lo stesso posto sullo stesso volo E’ possibile un’evoluzione temporale come la seguente: A questo punto, abbiamo una doppia prenotazione Il DBMS transazionale gestisce questo problema garantendo la proprieta’ di isolamento Appl. 1 Esegue (1), trova posto Esegue (2), alloca il posto Appl. 2 Esegue (1), trova posto Esegue (2), alloca il posto tempo
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 7 Proprieta’ di Isolamento delle transazioni Scriviamo la funzione precedente come una transazione: La proprieta’ di isolamento di una transazione garantisce che essa esegua come se non ci fosse concorrenza Questa proprieta’ e’ garantita facendo in modo che ciascun insieme di transazioni concorrenti sottoposte al sistema sia sempre serializzabile Void chooseSeat() { Begin transaction (1) EXEC SQL SELECT occupied INTO :occ FROM flights WHERE fltNum = :flight AND fltDate = :date AND fltSeat = :seat; (2) if (!occ) { EXEC SQL UPDATE Flights SET occupied = TRUE WHERE fltNum = :flight AND fltDate = :date AND fltSeat = :seat; /* notifica posto prenotato */ } else { /* notifica volo completo */ } commit work; }
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 8 Introduciamo ora un primo insieme di concetti Schedule Schedule seriale Schedule serializzabile e serializzabilita’
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 9 Schedule Una sequenza di esecuzione di un insieme di transazioni e’ detta schedule Es e’ uno schedule la sequenza T1: trova posto, T2: trova posto; T1: alloca posto; T2 alloca posto Una schedule e’ seriale se una transazione termina prima che la successiva inizi Lo schedule seguente e’ seriale T1: trova posto, T1: alloca posto; T2: trova posto; T2 alloca posto Il precedente non lo e’.
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 10 Osservazione Date due transazioni T1, T2, in generale A. eseguire T1 prima di T2 porta ad un risultato (modifica dello stato del DB) diverso che B. Eseguire T2 prima di T1
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 11 Serializzabilita’ La proprieta’ di isolamento: Ogni transazione esegue come se non ci fosse concorrenza coincide con la proprieta’ per cui un insieme di transazioni eseguite concorrentemente produce lo stesso risultato che produrrebbe una (qualsiasi) delle possibili esecuzioni sequenziali delle stesse transazioni. Ne basta una! Quella esecuzione e’ proprio la esecuzione che garantisce l’isolamento (… come se fosse eseguita da sola)
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 12 Serializzabilita’ Uno schedule e’ serializzabile se l’esito della sua esecuzione e’ lo stesso che si avrebbe se le transazioni in esso contenute fossero eseguite in una (qualsiasi) sequenza seriale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 13 Esempio - 1 Lo schedule T1: trova posto, T2: trova posto; T1: alloca posto; T2 alloca posto non e’ serializzabile, perche’ da’ risultato diverso da A. lo schedule seriale T1: trova posto, T1: alloca posto; T2: trova posto, T2 alloca posto assegna il posto alla T1, e da B. lo schedule seriale T2: trova posto, T2: alloca posto; T1: trova posto, T1 alloca posto assegna il posto alla T2
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 14 Esempio – 2 E’serializzabile il seguente schedule? T1 (x=x+x; x= x+2) e T2 (x= x**2; x=x+2) concorrenti nel seguente schedule S = [T1:x= x+x; T2: x= x**2; T1: x= x+2; T2:x=x+2] Eseguito per x= 5 da come risultato x=104 Possibili sequenze seriali: Sequenza T1 T2 : Pre: x=5 T1, T2: post: x = 146 Sequenza T2 T1 : Pre: x=5 T2, T1: post: x = 56 Lo schedule non e’ serializzabile
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 15 Esempio di proprieta’ di serializzabilita’ Insieme concorrente t11 t21 t31 t32 t12 t22 t23 t13 Quante e quali sono le possibili esecuzioni seriali? t1, t2, t3 t1, t3, t2 t2, t1, t3 t2, t3, t1 t3, t1, t2 t3, t2, t1 Una delle sequenze deve dare lo stesso risultato finale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 16 Introduciamo ora una notazione semplificata per descrivere transazioni
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 17 Ruolo dello scheduler Lo scheduler (concurrency controller) –Ha il compito di garantire l’isolamento –Accoglie una transazione e le assegna un identificatore unico –Chiede al buffer manager del DBMS di leggere/scrivere sul DB secondo una particolare sequenza –Quindi,dobbiamo assumere che non sia in grado di interpretare le specifiche operazioni sui dati: – la serializzabilita’ non puo’ dipendere dal tipo di operazioni eseguite ne’ dall’input
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 18 Notazione semplificata per lo schedule Semplifichiamo quindi la nostra notazione –Le transazioni degli esempi precedenti si scrivono: T1: r(A) r(B) w(A) w(B) c –Un esempio di schedule: r1(A) w1(A) r2 (A) w2(A) r1(B) w1(B) c1 r2(B) w2(B) c2 T1 legge A T2 scrive A T1 commit
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– Definizione di diversi livelli di serializzabilita’
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 20 Serializzabilita’ ed equivalenza tra schedules La definizione generale di serializzabilita’ si basa sulla nozione di equivalenza tra due schedules: Una schedule e’ serializzabile se e solo se esso e’ equivalente ad uno schedule seriale A diverse definizioni della relazione di equivalenza corrispondono diversi livelli di serializzabilita’
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 21 Algoritmi per verificare la equivalenza Interessa definire due tipi di algoritmi: –Algoritmi per il test di equivalenza: date due schedules, determina se esse sono equivalenti (semplice) –Data una schedule, determina se essa e’ equivalente ad una qualunque schedule seriale (complesso) Nella pratica, definiremo delle regole di comportamento dello scheduler che garantiscono un dato livello di serializzabilita’, senza eseguire alcun test esplicito
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 22 Classi di schedules Idea base: individuare classi di schedules serializzabili … Schedules Seriali Schedules Schedules Serializzabili che siano sottoclassi degli schedules possibili, siano serializzabili e la cui proprieta’ di serializzabilita’ sia verificabile con complessita’ ragionevole
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 23 Nel seguito vedremo la classe di schedule in cui il controllo di concorrenza e’ effettuato tramite lock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 24 Controllo di concorrenza tramite locks Idea: definizione di un protocollo che garantisca a priori la conflict serializability –Richiede la presenza di uno scheduler nell’architettura del DBMS Scheduler DB T 1 T 2 ……T n
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 25 Primitive di lock Introduciamo due nuove operazioni, che richiedono l’utilizzo ed il rilascio, per ora, esclusivo di una risorsa: –Lock (esclusivo): l i (A) Voglio la risorsa –Unlock: u i (A) Rilascio la risorsa Le primitive di lock vengono aggiunte alle transazioni e inserite all’interno delle sequenze di operazioni wi(A), rj(A)
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 26 Compito dello scheduler Trasformare le transazioni aggiungendo i comandi di lock, sulla base della conoscenza delle assegnazioni precedenti, in modo da garantire la serializzabilita’ Memorizzare tali assegnazioni in una tabella di lock scheduler T 1 T 2 lock table wi(A) … rj(A)…… li(A) … wi(A) … ui(A)... lj(A) … rj(A) … uj(A)...
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 27 Lock info per T1 T1... H Ti T2 T3 Lock info per T2 Tabelle di lock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 28 Esecuzione delle transazioni con lock Ora lo scheduler esegue le transazioni, e, quando una transazione chiede di accedere a una risorsa gia’ lockata da un’ altra transazione, la sospende e la mette in coda.
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 29 Uso dei lock Vogliamo definire le regole di composizione dei protocolli di lock sulle transazioni e sugli schedule che garantiscano la serializzabilita’ delle schedules Definiamo: –Transazioni ben formate e schedules legali –Protocollo Two phase locking (2PL) –Ulteriori tipi di lock - cenni
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 30 Transazioni ben formate Regola #1 – Transazione ben formata: Ogni azione p(A) (lettura o scrittura di A) deve essere contenuta in una “sezione critica” definita da una coppia di lock: Ti: … l i (A) … w i (A) … u i (A)... La regola esprime la ovvia proprieta’ per cui ogni lettura/scrittura deve avere una coppia l/u e ad ogni lock deve corrispondere un unlock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 31 Schedule legale Regola #2 – Schedule S legale: ogni coppia lock unlock in uno schedule deve essere esclusiva: S = ……l i (A) ………u i (A) …… La regola permette di rispettare la semantica dei lock e assegnare ogni risorsa a una transazione alla volta non ci sono altri l j (A)
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 32 Esempi di schedule con lock -1 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) Le transazioni sono ben formate? Mettiamo in evidenza T1 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) La transazione T1 e’ ben formata, analogamente per le altre Lo schedule e’ legale? 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) No!
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 33 Esempi di schedule con lock-2 S2 = l 1 (A) r 1 (A) w 1 (B) u 1 (A) u 1 (B) l 2 (B) r 2 (B) w 2 (B) l 3 (B) r 3 (B) u 3 (B)… T 1 non ben formata: Write senza lock S2 non legale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 34 Esempi di schedules con lock S3 = l 1 (A) r 1 (A) u 1 (A) l 2 (B) r 2 (B) w 2 (B) u 2 (B) l 1 (B) w 1 (B) u 1 (B) l 3 (B) r 3 (B) u 3 (B) Transazioni ben formate e schedule legale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 35 Aggiungiamo l’ulteriore terza regola di Two Phase Locking (2PL): In ogni transazione tutte le richieste di lock precedono tutti gli unlock T i = ….……. l i (A) ………... u i (A) ………. no unlocks no locks Two-Phase Locking Si puo’ dimostrare che le tre proprieta’ definite rendono lo schedule serializzabile
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 36 T i = ……. l i (A) ………... u i (A) …… no unlocks no locks Growing Phase Shrinking Phase Time # locks ottenuti da Ti Two-Phase Locking
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 37 Dai lock agli shared locks 2PL con lock esclusivi restringe molto l’insieme degli schedule serializzabili: come fare ad estenderli? Schedules Seriali Schedules Schedule Serializ zabili Schedules Serializ zabili Con 2PL
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 38 Due tipi di “rilassamenti”: shared locks e lock gerarchici Read Write Singoli record Intere basi di dati Lock gerarchici Lock parziali sulle Operazioni di lettura scrittura
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 39 Shared locks Finora la situazione e’: S =...l1(A) r1(A) u1(A) … l2(A) r2(A) u2(A) … In realta’, le due letture protette da lock non sono in conflitto. E’ possibile introdurre un nuovo tipo di lock: shared lock lsi(A) In questo esempio otteniamo: S =... ls1(A) r1(A) ls2(A) r2(A) …. us1(A) us2(A) Le primitive di lock ora diventano: lxi(A): lock in modalita’ esclusiva lsi(A): lock in modalita’ condivisa ui(A): unlock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 40 Lock gerarchici: cenni
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 41 Struttura di uno schema fisico di BD Schema Relazioni Blocchi Tuple BD R2R1Rn B11B12B1n T111T11n ……..
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 42 Granularita’ del locking – locking gerarchico Relation A Relation B... DB Tuple A Tuple B Tuple C... DB Disk block A Disk block B... DB In molti DBMS e’ possibile specificare i locks a diverse granularita’:
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 43 Opzioni per la granularita’ Utilizzando lock su oggetti grandi (esempio Relazioni) –Sono sufficienti pochi locks –La concorrenza e’ ridotta – le risorse restano bloccate con alta probabilita’ Utilizzando lock su oggetti piccoli (esempio record, campi) –Occorrono piu’ locks aumenta il carico di gestione –La concorrenza aumenta
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 44 Esempi Esempio 1 DB bancaria e operazioni su conti (depositi e prelievi) Non conviene mettere lock su intere relazioni perche’ cosi’ si permette una operazione alla volta. Conviene porre lock a livello di pagina o blocco, non conviene scendere fino a livello di tupla Esempio 2 Basi di documenti e operazioni di editing e retrivial In genere le operazioni di modifica/ scrittura dei documenti sono poco frequenti rispetto a quelle di retrieval/ lettura In questo caso conviene fare lock a livello dell’intero documento e non delle sue parti
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 45 Il deadlock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 46 Il deadlock Problema comune a tutte le strategie di controllo di concorrenza basate su locking Un deadlock e’ una condizione in cui due transazioni T1 e T2 si trovano ad occupare due risorse A e B e ciascuna chiede la risorsa occupata dall’altra Cio’ provoca un blocco delle due transazioni, che non possono procedere.
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 47 Esempio di deadlock T1T2 l1(A) r(A) w(A) l2(B) r(B) w(B) l2(A) l1(B) La probabilita’ di deadlock cresce in modo lineare con il numero di transazioni e in modo quadratico con il numero di richieste di lock da parte di ogni transazione In attesa Sequenza Di esecuzione
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 48 Tecniche utilizzate per risolvere i deadlock Uso del timeout Rilevazione dei deadlock Prevenzione dei deadlock
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 49 Struttura del lock Manager Scheduler, parte I DB Tabella dei lock l(A),Read(A),l(B),Write(B)… Read(A),Write(B) TiTi Decide politiche di lock e inserisce i lock Scheduler, parte II Read(A),Write(B) Esegue i lock, utilizzando la tabella dei lock, se provocano attesa gestisce le code
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 50 Finora abbiamo svolto il ragionamento non preoccupandoci di cio’ che puo’ avvenire riguardo alla correttezza dello schedule a seguito di rollback Insomma, non abbiamo tenuto in conto i problemi di recovery, e abbiamo assunto che non ci siano guasti Ora dobbiamo tenerne conto!
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 51 Commit, rollback e correttezza delle transazioni Esistono situazioni in cui la serializability non e’ proprieta’ sufficiente a garantire la correttezza della esecuzione. Esempio ……w1(A) …… r2(A) ……C2………C1 Supponiamo che dopo C2 per qualche ragione T1 debba abortire: T2 ha letto un dato che non e’ piu’ valido fenomeno di dirty data Lo schedule e’ conflict-serializable, ma non “corretto”:T2 ha usato un valore che non esiste nello stato finale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 52 Concetto di Recoverable schedule - 1 Per permettere il recovery di un insieme di transazioni, deve valere la seguente proprieta’ Se una transazione T1 e’, dopo il recovery, considerata committed, allora lo deve essere ogni altra transazione da cui T1 ha letto. Per committed, qui e nel seguito, intendiamo il fatto che il commit record nel log ha raggiunto la memoria stabile.
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 53 Concetto di Recoverable schedule - 2 Esempio S1 = ……w2(A) …… r1(A) ……C1………C2 Non e’ recoverable S2 = ……w2(A) …… r1(A) ……C2………C1 E’ recoverable
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 54 Relazione tra i concetti di serializable e recoverable I due concetti sono ortogonali Es. lo schedule S1 = w2A w1B w1A r2B c1 c2 e’ recoverable ma non serializable Recov Serializ. S1 S2 Lo schedule S2 = w1A w1B w2A r2B c2 c1 e’ serializable ma non recoverable
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 55 Dunque Serializable Recoverable Seriale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 56 Recoverable transactions e 2PL Nella discussione sulle recoverable transactions ci siamo fino ad ora preoccupati della relazione tra: –Operazioni di lettura –Operazioni di rollback –Operazioni di commit E non abbiamo piu’ considerato i lock Dobbiamo ora capire, per garantire la serializability, come si modificano i lock e dunque la struttura del 2PL
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 57 Protocollo Strict 2PL S e’ Strict 2PL se e’ 2PL e i lock di ogni transazione Ti vengono mantenuti fino al commit o l’abort di Ti ……wi(A)……Ci Ui(A)…… rj(A)
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 58 Valgono le seguenti proprieta’ Ogni schedule strict 2PL e’ serializzabile –Infatti la strict schedule e’ equivalente alla schedule seriale in cui ogni transazione esegue i comandi al tempo del commit
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 59 Riassumendo: le transazioni serializable non sono necessariamente recoverable ……… Serializable Recoverable Seriale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 60 Strict 2PL Abbiamo bisogno di un concetto piu’ forte del 2PL per garantire tutte le proprieta’: lo strict 2PL Serializable Recoverable Seriale
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 61 Uso dei lock in pratica Un lock manager semplificato: Acquisisce i locks necessari automaticamente –Dopo BEGIN TRANSACTION e prima di ogni operazione SQL (SELECT, UPDATE, INSERT ecc) Li mantiene fino al COMMIT WORK ovvero ROLLBACK WORK strict 2PL
Complementi di Basi di Dati Controllo di Concorrenza – Carlo Batini e Paolo Missier 2003– 62 2PL e scheduler con lock management Se una transazione non fa richieste esplicite al lock manager, allora: –lo scheduler garantisce che ogni transazione e’ ben formata Chiede al lock manager l’acquisizione dei lock prima delle operazioni Chiede al lock manager il rilascio dei lock al momento del commit –Il lock manager garantisce che la schedule effettivamente eseguita e’ legale Le richieste di lock su risorse gia’ allocate in modo esclusivo vengono accodate –Come risultato, lo schedule eseguito nella realta’ puo’ essere diverso dalla sequenza con la quale le operazioni vengono richieste dalle transazioni