Le transazioni

Transcript

Le transazioni
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

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...

Dettagli

Tecnologia di un Database Server - Dipartimento di Matematica e

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...

Dettagli

Transazioni

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...

Dettagli

teoria

teoria La gestione della concorrenza: teoria Basi di dati: Architetture e linee di evoluzione Seconda edizione Capitolo 2 Appunti dalle lezioni

Dettagli

transazioni distribuite - Dipartimento di Ingegneria dell`Informazione

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 ...

Dettagli