Le transazioni
Transcript
Le transazioni Basi di dati: Architetture e linee di evoluzione Seconda edizione Capitolo 2 (paragrafo 2.1) Appunti dalle lezioni Transazione ContiCorrenti(ccnum,saldo) Update CC set saldo = saldo + 25 where ccnum = 26000 Update CC set saldo = saldo – 25 where ccnum = 26488 Cosa succede, ad esempio, se tra il primo update ed il secondo si ha un guasto, una interruzione di corrente o un altro problema? Soluzione: – – I due update devono essere considerati come un comando unico. Ciò si realizza attraverso il concetto di transazione Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 2 Transazione Insieme ordinato di operazioni di lettura e scrittura su un DB. Sintatticamente: – – Inizia con uno Start Transaction All’interno del codice: Commit work – Rollback work (abort) – La transazione termina e va a buon fine La transazione termina senza avere alcun effetto Nei sistemi attuali è tipicamente garantito un solo livello di controllo (transazioni flat). Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 3 Transazione Start Transaction Update CC set saldo = saldo – 25 where ccnum = 26488 Update CC set saldo = saldo + 25 where ccnum = 26000 Commit Work A cosa serve il rollback? – 1. 2. È fondamentale per due motivi Una transazione può decidere di annullare il lavoro fatto Il sistema può decidere di annullare il lavoro fatto da una transazione Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 4 Stati di una Transazione Read/ Write start Active commit rollback ok Partially Committed Committed ko Terminated Failed Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 5 Osservazioni Se non specifico start transaction – Ogni comando SQL costituisce una transazione Un comando SQL ed il trigger collegato sono in una transazione Gli statement all’interno di una transazione sono eseguiti in maniera più veloce rispetto agli statement isolati Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 6 ACIDità delle Transazioni Atomicity – Consistency – Una transazione deve lasciare il DB in uno stato consistente con i vincoli. Isolation – Una transazione è una unità indivisibile. 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. Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 7 Atomicità 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 l’eventuale commit, le operazioni effettuate sono tutte rese visibili al mondo esterno. Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 8 Consistenza Una transazione lascia il DB in uno stato consistente. SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE } 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. Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 9 Isolamento 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. Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 10 Durability (Persistenza) 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. Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 11 Moduli di un DBMS Gestore di Interrogazioni e aggiornamenti Gestore dei metodi d’accesso Gestore delle transazioni Gestore della concorrenza Gestore della affidabilità Gestore del buffer Gestore della memoria secondaria Memoria secondaria Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 12 Transazioni in PostgreSQL 9.0 BEGIN [ WORK | TRANSACTION ] [transaction_mode [, ...] ] – where transaction_mode is one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY Commit [WORK | TRANSACTION] Rollback [WORK | TRANSACTION] Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 13 Transazioni in PostgreSQL 9.0 START TRANSACTION [transaction_mode [, ...] ] – where transaction_mode is one of: ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED } READ WRITE | READ ONLY Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 14 Transazioni in PostgreSQL 9.0 Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 15 Transazioni in PostgreSQL 9.0 SAVEPOINT name ROLLBACK TO SAVEPOINT name BEGIN; INSERT INTO table1 VALUES (1); SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (2); ROLLBACK TO SAVEPOINT my_savepoint; INSERT INTO table1 VALUES (3); COMMIT; Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 16 Transazioni e JDBC La connessione, per default, è in modalità auto commit – Ogni statement SQL è trattato come un transazione ed è committato immediatamente Per raggruppare 2 o più statements in una transazione bisogna disabilitare l’auto commit – conn.setAutoCommit(false); Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 17 Transazioni e JDBC Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 18 Transazioni e JDBC Basi di Dati 2 – Prof. Antonio d’Acierno Le Transazioni 19
Documenti analoghi
Basi di dati e Web introduzione
Inizia con un begin transaction.
Termina con un end transaction.
La sua esecuzione comporta il raggiungimento di un commit o di un
rollback work e dopo il commit/rollback non si eseguono
altri acce...
Tecnologia di un Database Server - Dipartimento di Matematica e
Consistenza. L’esecuzione della transazione non deve violare i
vincoli di integrità definiti sulla base di dati. Tale condizione può
forzare l’annullamento della transazione o un intervento per
c...
Transazioni
Livelli di isolamento SQL
SERIALIZABLE assicura che
la transazione T legge solo cambiamenti fatti da transazioni concluse
nessun valore letto o scritto da T verrà cambiato da altre transazio...
teoria
La gestione della concorrenza:
teoria
Basi di dati: Architetture
e linee di evoluzione Seconda edizione
Capitolo 2
Appunti dalle lezioni
transazioni distribuite - Dipartimento di Ingegneria dell`Informazione
Se una transazione esegue un rollback oppure viene uccisa dal
sistema si dice che la transazione va in abort
Proprietà acide di una transazione (ACID)
– Atomicity, atomicità: una transazione è una ...