Sistemi*monoutente*e*multiutente*
Transcript
Sistemi*monoutente*e*multiutente*
INTRODUZIONE*ALLA*GESTIONE* DELLE*TRANSAZIONI* ! 2 Sistemi*monoutente*e*multiutente* ! Sistema(Monoutente! ! Solo!un!utente!alla!volta!accede!al!DB!(es.,!DB! personali!su!disposi6vi!mobili).!! ! Sistemi(Mul.utente! ! Mol6!uten6!possono!accedere! contemporaneamente!al!sistema! ! In!sistemi!con!CPU!singola!il!sistema!opera6vo!alterna! l’uso!della!CPU!fra!i!diversi!uten6!(esecuzione! concorrente).! ! In!un!sistema!con!più!CPU/core!è!possibile! l’esecuzione!parallela! Giorgio Giacinto 2011 3 Definizione*di*Transazione* ! È!una!unità!logica!di!elaborazione!nella!base!di!da6!che! comprende!una!o!più!operazioni!di!accesso!alla!base!di! da6! ! ScriIura:!Inserimen6,!cancellazioni,!modifiche! ! LeIura:!interrogazioni! ! Le!transazioni!possono!essere! ! Specificate!in!un!linguaggio!di!alto!livello!come!SQL! ! Specificate!interaNvamente! ! Incapsulate!in!un!programma!applica6vo.! ! I!comandi!di!una!transazione!sono!defini6!all’interno!di! una!sezione!delimitata!dai!comandi!Begin(Transac.on(e! End(Transac.on( Giorgio Giacinto 2011 4 Modello*di*Base*di*Dati** ! Una!base!di!da6!è!una!raccolta!di!elemen6!(data!item)! denomina6! ! Per!elemento!si!può!intendere!un!campo,!un!record!o!un! blocco!di!disco! ! I!conceN!rela6vi!alle!transazioni!sono!indipenden6!dalla! granularità! ! Operazioni!di!base:! ! read_item(X):!legge!un!elemento!della!base!di!da6! denominato!X!e!lo!copia!in!una!variabile!del!programma! (per!semplicità!la!indichiamo!con!X)! ! write_item(X):!Scrive!il!valore!della!variabile!di! programma!X!nell’item!X!della!base!di!da6! Giorgio Giacinto 2011 5 Operazioni*di*Lettura* ! Il!trasferimento!di!da6!fra!disco!e!memoria! principale!viene!eseguito!a!blocchi!a!prescindere!dai! da6!oggeIo!dell’operazione!di!leIura!e!scriIura! ! read_item(X)! ! Trova!l’indirizzo!del!blocco!di!disco!che!con6ene! l’elemento!X.! ! Copia!il!contenuto!del!blocco!del!disco!in!un!buffer! della!memoria!principale.! ! Copia!l’elemento!X!del!buffer!nella!variabile!di! programma!denominata!X.!!!! Giorgio Giacinto 2011 6 Operazioni*di*Scrittura* ! write_item(X)! ! Trova!l’indirizzo!del!blocco!di!disco!che!con6ene! l’elemento!X.! ! Copia!il!contenuto!del!blocco!del!disco!in!un!buffer! della!memoria!principale.! ! Copia!l’elemento!X!dalla!variabile!di!programma! denominata!X!nella!posizione!correIa!nel!buffer.!! ! Copia!il!blocco!aggiornato!dal!buffer!sul!disco! (immediatamente!o!in!un!secondo!momento)! Giorgio Giacinto 2011 7 Esempi*di*Transazioni* ! read(set( ! insieme!di!elemen6!leN!in!una!transazione! ! in!T1!(X,Y)!–!in!T2!(X)! ! write(set( ! insieme!di!elemen6!scrN!in!una!transazione! ! in!T1!(X,Y)!–!in!T2!(X)! Giorgio Giacinto 2011 8 Transazioni*concorrenti*(1)* ! Sono!necessari!meccanismi!di!controllo!per!evitare! ! lost!update!–!perdita!di!aggiornamento! ! una!transazione!legge!il!valore!di!un!elemento!mentre! un’altra!transazione!lo!sta!modificando! ! Il!valore!finale!dipende!dalla!transazione!che!conclude! per!ul6ma! Giorgio Giacinto 2011 9 Lost*Update* Giorgio Giacinto 2011 10 Transazioni*concorrenti*(2)* ! Sono!necessari!meccanismi!di!controllo!per!evitare! ! dirty!read!! ! una!transazione!T2!legge!il!valore!di!un!elemento! modificato!da&un’altra!transazione!T1! ! T1!fallisce!e!tuIe!le!modifiche!devono!essere!annullate! ! T2!elabora!un!dato!non!memorizzato! permanentemente! ! nonrepeatable!read! ! una!transazione!T!legge!due!volte!un!elemento! ! fra!le!due!leIure!l’elemento!viene!cambiato!da! un’altra!transazione! Giorgio Giacinto 2011 11 Dirty*Read* Giorgio Giacinto 2011 12 Transazioni*concorrenti*(3)* ! Sono!necessari!meccanismi!di!controllo!per!evitare! ! incorrect!summary! ! una!transazione!T2!calcola!una!funzione!aggregata!su! alcuni!record! ! altre!transazioni!modificano!alcuni!record!leN!da!T2!! ! T2!legge!alcuni!elemen6!prima&della!modifica,!altri! elemen6!dopo&la&modifica! Giorgio Giacinto 2011 13 Incorrect*Summary* Giorgio Giacinto 2011 14 Terminazione*di*una*transazione* ! Commit! ! La!transazione!di!conclude!correIamente!e!l! risultato!finale!viene!memorizzato!in!modo! permanente!nella!base!di!da6! ! Abort! ! La!transazione!non!termina!correIamente!ed! eventuali!modifiche!già!apportate!devono!essere! annullate! Giorgio Giacinto 2011 15 Fallimento*di*una*transazione**(1)* ! System!Crash! ! guas6!hardware,!errori!so[ware,!errori!di!rete! ! Errore!di!transazione!o!di!sistema! ! Errori!logici!di!programmazione! ! Interruzione!della!transazione!da!parte!dell’utente! ! Errori!locali!o!condizioni!di!eccezione!rilevate!dalla! transazione! ! Una!condizione!prevista!dal!programmatore!che! causa!l’annullamento!della!transazione! Giorgio Giacinto 2011 16 Fallimento*di*una*transazione**(2)* ! ANvazione!del!controllo!di!concorrenza! ! Il!DBMS!può!annullare!una!transazione!in!caso!di! mancata!sincronizzazione!con!altre!transazioni!o!per! evitare!(o!uscire!da)!condizioni!di!stallo! ! Disk!failure! ! Errori!dovu6!ai!dischi! ! Problemi!fisici!e!catastrofi! ! Even6!naturali,!sabotaggi,!errori!accidentali,!ecc.! Le&ul1me&due&cause&coinvolgono&l’intero&sistema&più&che& la&singola&transazione& Giorgio Giacinto 2011 17 Concetti*di*transazione*e*di*sistema* ! Giorgio Giacinto 2011 18 Stati*delle*transazioni* ! La!transazione!è!una!operazione!atomica! ! o!viene!completata!nella!sua!interezza!(commit)! ! o!non!viene!eseguita!affaIo!(abort!o!rollback)! ! Il!sistema!6ene!traccia!degli!sta6!di!una!transazione! Giorgio Giacinto 2011 19 Il*log*di*sistema* ! È!un!file!sequenziale!in!cui!vengono!registrate!le! operazioni!eseguite!durante!una!transazione! ! scriIo!solo!“in!aggiunta”! ! memorizzato!su!disco! ! si!effeIuano!copie!di!backup! ! In!caso!di!fallimento!di!una!transazione,!si!può! ripercorrere!il!log!all’indietro!! ! per!annullare!(undo)!alcune!operazioni! ! per!ripetere!(redo)!alcune!operazioni! Giorgio Giacinto 2011 20 Record*di*log* ! A!ogni!transazione!è!associato!un!iden6ficatore!di! transazione!T! ! Tipi!di!record! ! [start_transac6on,!T]! ! [write_item,!T,!X,old_value,!new_value]! ! [read_item,!T,!X]! ! [commit,!T]! ! [abort,!T]!! Giorgio Giacinto 2011 21 Proprietà*ACID*di*una*transazione* ! Atomicity! ! Una!transazione!che!deve!essere!eseguita!come!una!unità! indivisibile!di!elaborazione!! ! Consistency! ! Una!transazione!deve!mantenere!la!base!di!da6!in!uno! stato!valido!! ! Isola6on! ! L’esecuzione!di!una!transazione!non!deve!interferire!con! altre!transazioni!concorren6! ! Durability!(Persistenza)! ! Le!modifiche!apportate!alla!base!di!da6!dopo!un!commit! devono!essere!registrate!in!modo!permanente! Giorgio Giacinto 2011