Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo - Isa-Cnr
Transcript
Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo - Isa-Cnr
Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone “Basi Di Dati”, Seconda Edizione McGraw-Hill Italia, 1999 Capitolo 9 T r a n s a zi o n e Insieme ordinato di operazioni di lettura e scrittura su un DB. Sintatticamente: • • inizia con un BoT (Begin of Transaction) termina con un EoT (End of Transaction) All’interno del codice: • • Commit work • La transazione va a buon fine Rollback work (abort) • La transazione non ha alcun effetto Nei sistemi attuali è perlopiù garantito un solo livello di controllo (transazioni flat). Tecnologia di un DBMS 1 T r a n s a zi o n e Transazione “Ben Formata”: • • • • Inizia con BoT; Termina con EoT; Viene eseguito un solo Commit o un solo Abort; Non avvengono letture e/o scritture dopo il Commit/Abort. Proprietà garantita dai sistemi. BoT Update CC set saldo = saldo – 25 where ccnum = 26488 Update CC set saldo = saldo + 25 where ccnum = 26000 Commit EoT Tecnologia di un DBMS 2 A CI Di t à d e l l e T r a n s a zi o n i Atomicity: • Una transazione è una unità indivisibile. Consistency: • Una transazione deve lasciare il DB in uno stato consistente con i vincoli. Isolation: • Una transazione deve agire in maniera indipendente dalle altre. Durability: • Gli effetti di una transazione che ha effettuato il Commit non devono mai essere persi. Tecnologia di un DBMS 3 At om ic it à Il modello di esecuzione è tutto-o-niente. Una transazione può non andare a buon fine: • • • per decisione autonoma; per decisione del DBMS; per errori e/o guasti. L’atomicità ci assicura che, indipendentemente dal momento e dai motivi dell’abort, le eventuali azioni già effettuate vengono disfatte (operazione di undo). Durante l’esecuzione della transazione, le varie operazioni non sono visibili al mondo esterno. Dopo il commit, le operazioni effettuate sono tutte rese visibili al mondo esterno. Tecnologia di un DBMS 4 Co n s i s t e n za Una transazione lascia il DB in uno stato consistente. Vincoli Immediati: • • se è violato un vincolo immediato, il corrispondente comando ritorna un codice di errore; se tale errore è gestito dal codice della transazione, questa può provare a continuare. Vincoli Ritardati: • • il controllo sui vincoli deferred avviene quando è effettuato il commit; se qualche vincolo è violato, la transazione è uccisa in extremis. Tecnologia di un DBMS 5 Isolam ent o Per migliorare i tempi medi di risposta (TpS), è necessario eseguire più transazioni in maniera concorrente. La proprietà di isolamento garantisce che: • • il risultato di un insieme di transazioni eseguite in maniera concorrente è in qualche modo equivalente (?) a quello che si otterrebbe se le transazioni fossero eseguite una dopo l’altra. venga evitato il Rollback a catena (l’abort di una transazione provoca l’abort di un’altra transazione e così via); • il Rollback a catena sarebbe particolarmente pericoloso qualora coinvolgesse transazioni che hanno già effettuato il commit. Tecnologia di un DBMS 6 Du r a b i l i t y (Pe r s i s t e n za ) L’effetto di una transazione che ha effettuato il commit non deve mai essere perso. La persistenza fornisce meccanismi per rispondere ai malfunzionamenti hw/sw del sistema. Tecnologia di un DBMS 7 M o d u l i d i u n DB M S Consistenza Ottimizzatore Persistenza Gestore delle Strutture Fisiche di Accesso Controllore Affidabilità Buffer Manager Gestore Concorrenza Atomicità Isolamento Tecnologia di un DBMS 8 T e o r i a De l l a Co n c o r r e n za Il gestore della concorrenza è lo strato più interno di un DBMS. Si occupa di trasferire: blocchi in memoria centrale (read); pagine verso la memoria di massa (write). Scheduler: gestisce le operazioni di lettura/scrittura. Tecnologia di un DBMS 9 Eq u i v a l e n za d i Sc h e d u l i n g Si considerino 2 transazioni T1 e T2. Esistono 2 scheduling sequenziali: • • T1 T2 T2 T1 Non è detto che essi forniscano lo stesso risultato. T1 BoT Update CC set saldo = 0 Commit EoT T2 BoT Update CC set saldo = saldo + 30 Commit EoT Tecnologia di un DBMS 10 Eq u i v a l e n za d i Sc h e d u l i n g Il risultato di un insieme di transazioni eseguite in maniera concorrente è in qualche modo equivalente (?) a quello che si otterrebbe se le transazioni fossero eseguite una dopo l’altra. La teoria della concorrenza cerca di definire il concetto di equivalenza di scheduling (sequenza di operazioni di I/O) in maniera più o meno indipendente dal risultato che esse producono. Essa, inoltre, fornisce tecniche per evitare le anomalie delle transazioni concorrenti. Transazione • BoT ri(x) ri (y) wi (x) ri (z) wi (y) wi (z) C EoT Commit Proiezione. Tecnologia di un DBMS 11 A n o m a l i e d e l l e T r a n s a zi o n i Co n c o r r e n t i Perdita di Update T1 BoT r(x) x = x+1 T2 T1 BoT r(x) Update Fantasma T2 r(y) BoT r(x) x = x+1 w(x) commit EoT w(x) commit EoT BoT r(y) y = y-500 r(z) z = z+500 w(y) w(z) commit EoT r(z) somma=x+y+z commit EoT Tecnologia di un DBMS 12 A n o m a l i e d e l l e T r a n s a zi o n i Co n c o r r e n t i Letture Sporche T1 T2 BoT r(x) x=x+1 w(x) BoT r(x) x = x+1 w(x) commit EoT abort EoT Letture Inconsistenti T1 BoT r(x) T2 BoT r(x) x = x+1 w(x) commit EoT r(x) commit EoT Tecnologia di un DBMS 13 V i e w Eq u i v a l e n za Legge da: ri(x) legge-da wj(y) • • • x = y e i<>j; nello scheduling ri segue wj; non esiste wk(x) tra le operazioni Scritture finali: • wk(x) è una scrittura finale se nello scheduling non esiste alcuna scrittura su x successiva a k. Due scheduling sono view-equivalenti se, oltre ad effettuare le stesse operazioni, hanno le stesse relazioni legge-da e le stesse scritture finali. Tecnologia di un DBMS 14 T1 BoT Update CC set saldo = 0 Commit EoT T1 T2 w1(saldo) r2(saldo) W2 (saldo) T2 BoT Select saldo into Lsaldo Lsaldo = Lsaldo + 30 Update CC set saldo = Lsaldo Commit EoT S1 = w1(saldo) r2(saldo) w2 (saldo) S2 = r2(saldo) w2 (saldo) w1(saldo) S3 = r2(saldo) w1(saldo) w2 (saldo) Tecnologia di un DBMS 15 V i e w Se r i a l i zza b i l i t à Uno scheduling si dice view serializzabile se è viewequivalente ad almeno uno scheduling seriale. Tale equivalenza è la più generale in assoluto: • due scheduling view-equivalenti producono lo stesso risultato. Problemi: • • • verificare se due scheduling sono view-equivalenti è un problema semplice; verificare se è uno scheduling e view-serializzabile è un problema NP-Completo; le transazioni arrivano a istanti non specificati. Tecnologia di un DBMS 16 Co n f l i c t Eq u i v a l e n za Diminuiamo il numero di scheduling ammissibili restringendo il concetto di equivalenza. Conflitto l’azione ai(x) è in conflitto con l’azione aj(y) sse: • i <> j; • x = y; • almeno une delle due è una write; • (ri(x),wj(x)) (wi(x),wj(x)) (wi(x) rj(x)) Tecnologia di un DBMS 17 Co n f l i c t Eq u i v a l e n za Due scheduling sono conflict-equivalenti sse, oltre a presentare le stesse operazioni, hanno gli stessi conflitti. • (ri(x),wj(x)) <> (wj(x) ri(x)) Uno scheduling è conflict- serializzabile se è conflict equivalente ad uno scheduling seriale. Esempio • • S0 = r1(x) r2(y) w1(y) r3(y)r3(z)w2(x) w3(z) (r1(x), w2(x)), (r2(y),w1(y)), (w1(y),r3(y)) Tecnologia di un DBMS 18 T1 T2 T3 • Problemi: – Verificare se un grafo è aciclico è un problema semplice. – Gestire il Grafo è complicato – Le transazioni arrivano a istanti non specificati. – Nei casi reali non conosco cosa vuole fare la transazione. Tecnologia di un DBMS 19 U n a s o l u zi o n e : i l p r o t o c o l l o 2 PL Lock: • • • • bloccare una risorsa che vogliamo utilizzare; lock condiviso (per operazioni di lettura); lock esclusivo (per operazioni di scrittura); r_lock, w_lock, unlock. Lo scheduler diventa un lock manager che riceve richieste di lock e decide il da farsi. Transazione ben formata rispetto al locking: • • • ogni operazioni di lettura è preceduta da un r_lock e seguita da un unlock; ogni operazioni di scrittura è preceduta da un w_lock e seguita da un unlock; proprietà garantita di compilatori. Tecnologia di un DBMS 20 Stato Richiesta R_locked W_locked Free R_lock OK / r_locked NO / W_locked OK / r_locked W_lock NO/ r_locked NO / w_locked OK / w_locked Unlock OK / dipende OK / free error I lock garantiscono che sui dati si operi in maniera mutuamente esclusiva. Non garantiscono in alcun modo la serializzabilità. Tecnologia di un DBMS 21 Update Fantasma T1 BoT RL(x) /r(x) /UL(x) T2 BoT RL(y) / r(y) /UL(y) RL(y) / r(y) /UL(y) y = y-500 RL(z) / r(z) / UL(z) z = z+500 WL(y) / w(y) / UL(y) WL(z) / w(z) / UL(z) commit EoT RL(z) / r(z) / UL(z) somma=x+y+z commit EoT Tecnologia di un DBMS 22 Pr o t o c o l l o d i l o c k i n g a 2 f a s i Una transazione, dopo aver rilasciato un lock, non può acquisirne altri. In una transazione esiste allora una fase crescente (in cui i lock vengono acquisiti) ed una fase calante, in cui i lock vengono rilasciati. E’ concesso l’incremento di lock. Tecnologia di un DBMS VSR CSR 2PL 23 Perdita di Update T1 BoT r(x) x = x+1 T2 T1 BoT r(x) w(x) BoT r(x) x = x+1 w(x) commit EoT w(x) commit EoT Letture Sporche T2 BoT r(x) x = x+1 w(x) commit EoT abort EoT Tecnologia di un DBMS 24 2 PL s t r e t t o Il problema è legato all’ipotesi di Commit Proiezione che è alla base della teoria della concorrenza. Nei sistemi reali tale ipotesi deve, per forza di cose, essere abbandonata. 2PL stretto: al 2PL si aggiunge l’ulteriore condizione che le risorse possono essere rilasciate solo dopo il commit/abort. Tecnologia di un DBMS 25 De a d l o c k Il meccanismo dei lock introduce un problema: • • • • • • siano T1 e T2 due transazioni; supponiamo che entrambe operino in scrittura su 2 oggetti x e y; T1 blocca x in scrittura; T2 blocca y in scrittura; T1 aspetta che T2 liberi y; T2 aspetta che T1 liberi x. La situazione può durare all’infinito. Tecnologia di un DBMS 26 De a d l o c k : 3 s o l u zi o n i p o s s i b i l i Prevention: Tecnica di prevenzione esatta: • • le transazione acquisiscono le risorse di cui hanno bisogno in un colpo solo; se qualche risorsa non è disponibile, non viene assegnata nessuna risorsa. Problemi: • • non sempre una transazione sa in partenza ciò di cui avrà bisogno; si rischia di bloccare troppi oggetti inutilmente. Tecnologia di un DBMS 27 Prevention Tecnica approssimata: • • • tutte le transazioni richiedono i lock nello stesso ordine; non sempre la transazione conosce tutto quello di cui avrà bisogno; non tutti i deadlock sono eliminati. Tecnica approssimata: • • • ad ogni transazione è associato un timestamp; se un lock non è concesso, la transazione aspetta solo se essa è più giovane della transazione che detiene il lock; non tutti i lock sono eliminati. Tecnologia di un DBMS 28 Detection: Non si pongono vincoli alle transazioni. Ad intervalli prefissati, o quando succede qualcosa, il contenuto della tabella dei lock è esaminato e comparato con le richieste pendenti. Si costruisce un grafico delle richieste. Se in tale grafico esiste un ciclo, c’è un deadlock. Il ciclo deve essere spezzato uccidendo almeno una transazione. Tecnologia di un DBMS 29 Time-out: E’ la tecnica più semplice e più usata. Ad richiesta di lock è associato un tempo massimo di attesa. Scaduto tale tempo, la richiesta si intende rifiutata e la transazione uccisa. Tecnologia di un DBMS 30 Co n t r o l l o d i c o n c o r r e n za c o n Tim est am ps Ad ogni transazione viene assegnato un identificativo numerico crescente nel tempo Transazioni successive hanno identificativi via via maggiori. Ad ogni oggetto del DB viene associato WTM(x), timestamp dell’ultima transazione che ha scritto l’oggetto. RTM(x) , timestamp dell’ultima transazione che ha letto l’oggetto. Tecnologia di un DBMS 31 Allo scheduler la transazione con TS ts invia richieste del tipo read (x,ts) • • Se ts < WTM(x), la richiesta non può essere soddisfatta e la transazione richiedente viene uccisa. Altrimenti la richiesta è accetta e RTM(x) è posto pari al massimo tra ts e RTM(x) stesso. write(x,ts) • • Se ts < WTM(x) oppure ts < RTM(x) la transazione viene uccisa. Altrimenti la richiesta è accetta, WTM(x) è posto pari a ts. Tecnologia di un DBMS 32 Funziona solo nell’ipotesi di commit-proiezione. Nei casi reali le scritture vanno bufferizzate in RAM ed eseguite solo dopo il commit. Chi deve leggere deve aspettare il commit (il lock in qualche modo rientra). Vengono uccise molte transazioni. Tecnologia di un DBMS VSR CSR 2PL TS 33 Livello di isolam ent o delle T r a n s a zi o n i Il livello di isolamento di una transazione determina il comportamento della stessa. Uncommitted Read • La transazione accetta di leggere dati modificati da una transazione che non ha ancora fatto il commit (ignora i lock esclusivi e non acquisisce lock in lettura). Committed Read • La transazione non legge dati cambiati da una transazione che non ha ancora fatto il commit. Se però essa legge due volte lo stesso dato, può trovare dati diversi. Tecnologia di un DBMS 34 Repeatable Read Si aggiunge al commited read la caratteristica che, se un dato è letto due volte, si avrà sempre lo stesso risultato. Serializable Si aggiunge al Repeatable Read la caratteristica che, se una query è fatta due volte, non vengono aggiunte righe. Tecnologia di un DBMS 35 U n c o m m i t e d Re a d Connection 1 Connection 2 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGIN TRAN UPDATE authors SET au_lname='Smith' SELECT au_lname FROM authors WHERE au_lname='Smith' ROLLBACK TRAN SELECT au_lname FROM authors WHERE au_lname='Smith' Tecnologia di un DBMS 36 Co m m i t e d Re a d Connection 1 Connection 2 SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRAN SELECT au_lname FROM authors WHERE au_lname='Smith' UPDATE authors SET au_lname='Smith' SELECT au_lname FROM authors WHERE au_lname='Smith' COMMIT TRAN Tecnologia di un DBMS 37 Re p e a t a b l e Re a d Connection 1 Connection 2 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRAN SELECT au_lname FROM authors WHERE au_lname='Smith' UPDATE authors SET au_lname='Jones' (la query si blocca) SELECT au_lname FROM authors WHERE au_lname='Smith' COMMIT TRAN SELECT au_lname FROM authors Tecnologia di un DBMS 38 Se r i a l i za b l e (1 /2 ) Connection 1 Connection 2 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRAN SELECT title FROM titles WHERE title_id LIKE 'BU%' INSERT titles VALUES ('BU2000', 'Inside SQL Server 2000', 'popular_comp', '0877', 59.95, 5000, 10, 0, null, 'Sep 10, 2000') SELECT title FROM titles WHERE title_id LIKE 'BU%' --Risultato diverso! COMMIT TRAN Tecnologia di un DBMS 39 Se r i a l i za b l e (2 /2 ) Connection 1 Connection 2 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRAN SELECT title FROM titles WHERE title_id LIKE 'BU%' INSERT titles VALUES ('BU3000', 'Itzik and His Black Belt SQL Tricks', 'popular_comp', '0877', 39.95, 10000, 12, 15000, null, 'Sep 15 2000') (la query si blocca) SELECT title FROM titles WHERE title_id LIKE 'BU%' --Risultato uguale! COMMIT TRAN Tecnologia di un DBMS 40 Re p e t e a b l e Re a d / Se r i a l i za b l e Un modo alternativo per comprendere la differenza tra questi livelli di isolamento è guardare alle modifiche possibili una volta che siano stati modificati dati in un’altra transazione. Nel REPEATABLE READ: • • Le righe realmente lette non possono essere modificate o cancellate. Possono però essere aggiunte righe anche nell’intervallo specificato nella clausola Where della transazione che legge. • • Tutti i dati letti sono read_locked; Un insert non interferisce con questi lock. Nel SERIALIZABLE: • • Una volta che una transazione ha letto dati non sono possibili modifiche su di essi. Non sono possibili modifiche neanche all’interno dell’intervallo coperto nella lettura. • SERIALIZABLE locka intervalli di dati, inclusi quelli di fatto non esistono, impedendo cioè che vengano effettuati insert. Tecnologia di un DBMS 41 Du r a b i l i t y (Pe r s i s t e n za ) La Durability consente di reagire a: Guasti di Sistema Il server ha subito un guasto/malfunzionamento che non ha danneggiato il dispositivo su cui è memorizzato il DB. Guasti di Dispositivo Il dispositivo su cui è memorizzato il DB si è danneggiato. Tecnologia di un DBMS 42 L o g Fi l e La persistenza è assicurata tramite il file di Log. Il Log file è un file sequenziale memorizzato su memoria stabile. In esso esistono due tipi di di record: Record di Transazione. Record di Sistema. Tecnologia di un DBMS 43 Re c o r d d i T r a n s a zi o n e Registrano le attività di ogni transazione, nell’ordine in cui dette attività sono eseguite. Ad ogni transazione è allora assegnato un identificativo. Record di Begin, Commit, Abort: • Contengono l’identificativo della transazione ed il tipo di operazione. Record di Update: • Contengono l’identificativo della transazione, l’identificativo dell’oggetto su cui si effettua l’update, lo stato prima dell’update (BS) e lo stato dopo l’update (AS). Record di Insert. Record di Delete. Tecnologia di un DBMS 44 Re c o r d d i Si s t e m a Record di dump: • Segnale che è stato effettuato un dump (copia di sicurezza su memoria stabile) del DB. Record di checkpoint: • • • Il checkpoint è una operazione che viene effettuata con una certa frequenza da un DBMS. In tale istante vengono riportato su disco le pagine assegnate a transazioni che hanno effettuato il commit. Alla fine viene scritto il record di checkpoint in cui si riportano le transazioni attive a quell’istante. Tecnologia di un DBMS 45 Ri p r e s a a Ca l d o Viene effettuato in risposta ad un guasto di sistema. Si accede all’ultimo blocco del log e si ripercorre il file all’indietro fino all’ultimo record di chekpoint. Si costruiscono due insiemi: Undo e Redo. L’insieme di Redo è inizialmente vuoto mentre l’insieme di Undo contiene le transazioni presenti nel record di chekpoint. Tecnologia di un DBMS 46 Si ripercorre il log in avanti: • • Se si incontra un Commit, la transazione corrispondente viene spostata da Undo in Redo. Se si incontra un Begin, la transazione corrispondente viene inserita nell’insieme di Undo. Si torna all’indietro fino al Begin della transazione più vecchia fra tutte quelle presenti nei 2 insiemi. Si ripercorre il Log all’indietro disfacendo le operazione delle transazioni in UNDO Si ripercorre il Log in avanti rifacendo le operazioni delle transazioni in Redo Tecnologia di un DBMS 47 Ri p r e s a a Fr e d d o Viene effettuato in risposta ad un guasto di dispositivo. Si ripristina il DB con l’ultima copia. Si percorre il log in avanti, dall’ultimo dump, rifacendo tutte le operazioni riportate. Si effettua una ripresa a caldo. Tecnologia di un DBMS 48 Guasto Funzionamento Normale Stop Boot KO Boot OK Boot Ripristino E’ essenziale l’idempotenza delle operazioni di ripristino Tecnologia di un DBMS 49 Re g o l a WA L e Co m m i t Pr e c e d e n za Il corretto funzionamento del meccanismo presuppone che: • • La parte BS sia scritta nel Log prima di effettuare modifiche (WAL-Write Ahead Log). La parte AS sia scritta prima del Commit (Commit Precedenza) In genere il record è scritto in un colpo solo prima di effettuare modifiche sulla Base Dati (WAL semplificata) e prima del Commit (Commit Precedenza semplificata). Tecnologia di un DBMS 50 This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.