Cenni sulla gestione delle transazioni in DBMS

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

Tecnologia delle basi di dati: Strutture fisiche di accesso
1 Introduzione ai calcolatori Parte II Software di base.
Gestione della memoria centrale
Introduzione ai DBMS I Sistemi di Gestione di Basi di Dati sono strumenti software evoluti per la gestione di grandi masse di dati residenti su memoria.
Architettura MySQL E Motori MySQL L. Vigliano.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Sicurezza e concorrenza nelle basi di dati
Unità D2 Archivi e file.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Data Bases Distribuiti Finalità Caratteristiche Struttura Mario Capurso
Java: programmazione concorrente con condivisione di memoria
Gestione della Memoria
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
Comandi ai dispositivi di I/O + Si usano due metodi per mandare informazioni a un dispositivo: –Istruzioni specifiche di I/O –I/O mappato in memoria (memory.
Basi di Dati prof. A. Longheu
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
Interfaccia del file system
La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema.
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
SCHEDA INFORMATIVA DI UNITÀ
Tecnologia di un Database Server S. Costantini Dispensa per il Corso di Basi di dati e Sistemi Informativi.
Risorse e Stallo.
Tecnologie di un database server: la gestione della concorrenza
Corso di Programmazione Concorrente Stallo Valter Crescenzi nz.
Struttura dei sistemi operativi (panoramica)
Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.
Sincronizzazione fra thread
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
Le transazioni Itis Max Planck.
Transazioni.
Distributed File System Service Dario Agostinone.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
SISTEMA OPERATIVO..
DAGLI ARCHIVI AI DATABASE
Cos’è una transazione? Una transazione è un’unità logica di elaborazione richiesta da un’applicazione che dà luogo a una serie di operazioni fisiche elementari.
Docente: Roberto Basili Fond Inf (a.a ) Introduzione alla Progettazione Concettuale R. Basili.
Basi di Dati e Sistemi Informativi
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Architettura Centralizzata di un DBMS Relazionale
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
I DATABASE.
I processi.
Progetto Message Queues Service Olivelli Enrico Corso di Reti di Calcolatori LS A.A
Nemesi Creazione e pubblicazione di una rivista online tramite l’utilizzo di Java Message Service.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
BDE-TRANS 1 Gestione di transazioni concorrenti. BDE-TRANS 2 Lock Principio: –Tutte le letture sono precedute da r_lock (lock condiviso) e seguite da.
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: –COMMIT –SAVEPOINT nome_punto.
IV D Mercurio DB Lezione 2
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Tipo Documento: unità didattica 4 Modulo 14 Compilatore: Antonella Bolzoni Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Transazioni in MySQL 4 Transazioni in MySQL 4
Progettazione di basi di dati: metodologie e modelli
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
BDE-TRANS 1 Gestione di transazioni concorrenti. BDE-TRANS 2 Controllo di concorrenza La concorrenza è fondamentale: decine o centinaia di transazioni.
Le basi di dati.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Gestione delle periferiche. Le periferiche sono dispositivi che permettono le operazioni di input/output.
Anno Architetture dati DBMS Centralizzati Controllo di concorrenza Carlo Batini.
Introduzione alle basi di dati e ai sistemi di gestione di basi di dati.
Anno Architetture dati - DBMS Centralizzati Recovery management Carlo Batini.
Transcript della presentazione:

Cenni sulla gestione delle transazioni in DBMS Basato sulle slides di Monica Mordonini (http://www.ce.unipr.it/people/monica/) Esempi di transaction log estratti dalle slides di Dario Maio (http://www.csr.unibo.it/~maio/)

Definizione di Transazione Sequenza di operazioni sul DB cui si vogliono associare particolari caratteristiche di correttezza, robustezza, isolamento. Esempi: Bonifico bancario, acquisto biglietto, prenotazione aerea, etc. Sistema transazionale: mette a disposizione un meccanismo per la definizione e l’esecuzione di transazioni. DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Per mantenere le informazioni consistenti è necessario controllare opportunamente le sequenze di accessi e aggiornamenti ai dati. Gli utenti interagiscono con la base di dati attraverso programmi applicativi i quali usano le transazioni per garantire la correttezza del dato inserito/letto. Una transazione si può interpretare come un insieme parzialmente ordinato di operazioni di lettura e scrittura; essa costituisce l'effetto dell'esecuzione di programmi che effettuano le funzioni desiderate dagli utenti DB - Cenni sulla gestione delle transazioni

Transazione Ogni transazione è incapsulata tra due comandi: Begin transaction (bot) End transaction (eot) Dentro ad una transazione devono essere eseguiti (solo una volta) almeno uno dei seguenti comandi: Commit work (conferma l’operazione) Rollback work (aborto) All’inizio ed alla fine della transazione il sistema e’ in uno stato “consistente” Durante l’esecuzione della transazione stessa il sistema puo’ temporaneamente essere in uno stato inconsistente Esecuzione transazione Permessi stati inconsistenti temporanei Inizio transazione Stato consistente Fine transazione Stato consistente DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Ogni transazione è eseguita o completamente (cioè effettua il commit), oppure per nulla (cioè effettua l’abort) se si verifica un qualche errore (hardware o software) durante l’esecuzione Dobbiamo di garantire che le transazioni eseguite concorrentemente si comportino come se fossero state eseguite in sequenza (controllo della concorrenza) Sono necessarie tecniche per ripristinare uno stato corrente della base di dati a fronte di malfunzionamenti di sistema (tecniche di ripristino - recovery) DB - Cenni sulla gestione delle transazioni

Transazione ben formata Proprietà che si manifesta a tempo di esecuzione Una transazione comincia con begin transaction e finisce con end transaction, nella cui esecuzione solo uno dei due comandi commit work o rollback work viene eseguito, le operazioni sui dati sono eseguite solo quando si fa una di queste due operazioni. DB - Cenni sulla gestione delle transazioni

Transazioni - Proprietà L’insieme di operazioni che costituiscono una transazione deve soddisfare alcune proprietà, note come proprietà ACID: Atomicità Consistenza Isolamento Durabilità (Persistenza) DB - Cenni sulla gestione delle transazioni

Transazioni - Atomicità (1/2) E’ detta anche proprietà “tutto o niente” Tutte le operazioni di una transazione devono essere trattate come una singola unità: o vengono eseguite tutte, oppure non ne viene eseguita alcuna L’atomicità delle transazioni è assicurata dal sottosistema di ripristino (recovery). DB - Cenni sulla gestione delle transazioni

Transazioni - Atomicità (2/2) Non deve lasciare il database in uno stato intermedio: un errore prima di commit deve causare l’UNDO delle operazioni fatte prima. un errore dopo il commit deve far fare un REDO del lavoro fatto prima Possibili comportamenti: Buon fine aborto richiesto dall’applicazione (suicidio) aborto richiesto dal sistema (morte) la base di dati DB - Cenni sulla gestione delle transazioni

Transazioni - Consistenza (1/2) una transazione deve agire sulla base di dati in modo corretto se viene eseguita su una base di dati in assenza di altre transazioni, la transazione trasforma la base di dati da uno stato consistente (cioè che riflette lo stato reale del mondo che la base di dati deve modellare) ad un altro stato ancora consistente l'esecuzione di un insieme di transazioni corrette e concorrenti deve a sua volta mantenere consistente la base di dati il sottosistema di controllo della concorrenza (concurrency control) sincronizzale transazioni concorrenti in modo da assicurare esecuzioni concorrenti libere da interferenze DB - Cenni sulla gestione delle transazioni

Transazioni - Consistenza (2/2) La consistenza richiede l’esecuzione della transazione senza violare i vincoli di integrità definiti sulla base di dati. La verifica dei vincoli di integrità può essere: immediata: durante la transazione (le operazioni devono essere inabilitate) differita: quando il cliente ha deciso il commit nel qual caso l’intera transazione deve essere cancellata conseguenza: se lo stato iniziale è corretto lo è anche quello finale DB - Cenni sulla gestione delle transazioni

Transazioni - Isolamento (1/2) ogni transazione deve sempre osservare una base di dati consistente, cioè, non può leggere risultati intermedi di altre transazioni. la proprietà di isolamento è assicurata dal sottosistema di controllo della concorrenza che isola gli effetti di una transazione fino alla sua terminazione DB - Cenni sulla gestione delle transazioni

Transazione - Isolamento (2/2) Richiede che ogni transazione venga eseguita indipendentemente dall’esecuzione di tutte le altre transazioni concorrenti eliminare effetto domino: il rollback di una transazione causa il rollback delle altre DB - Cenni sulla gestione delle transazioni

Transazioni - Durabilità (Persistenza) i risultati di una transazione terminata con successo devono essere resi permanenti nella base di dati nonostante possibili malfunzionamenti del sistema. transazioni concorrenti la persistenza è assicurata dal sottosistema di ripristino (recovery) tale sottosistema può inoltre fornire misure addizionali, quali back-up su supporti diversi e journaling delle transazioni, per garantire la durabilità anche a fronte di guasti ai dispositivi di memorizzazione indipendente dai guasti di sistema DB - Cenni sulla gestione delle transazioni

Transazioni e moduli di sistema Atomicità e Persistenza sono garantiti dal controllo dell’affidabilità (sottosistema di ripristino) L’isolamento è garantito dal controllo di concorrenza La consistenza è infine gestita dai compilatori DDL (Data definition Language) che introducono le opportune verifiche sui dati DB - Cenni sulla gestione delle transazioni

Transazioni e protocolli Le proprietà ACID vengono assicurate utilizzando due insiemi distinti di algoritmi o protocolli, che assicurano: l'atomicità dell'esecuzione Devono mantenere la consistenza globale della base di dati e quindi assicurare la proprietà di consistenza delle transazioni (anche concorrenti) Necessita di protocolli di controllo della concorrenza l'atomicità del fallimento assicura l'atomicità, l'isolamento e la persistenza Necessita di protocolli di ripristino DB - Cenni sulla gestione delle transazioni

Transazioni - Modello flat Facciamo riferimento al modello di transazioni più semplice (transazioni flat), che prevede un solo livello di controllo a cui appartengono tutte le transazioni eseguite (è il modello usato nei DBMS commerciali) Tutte le istruzioni eseguite devono essere contenute tra le istruzioni BeginWork e CommitWork l'istruzione BeginWork dichiara l'inizio di una transazione flat l'istruzione CommitWork è invocata per indicare che il sistema ha raggiunto un nuovo stato consistente DB - Cenni sulla gestione delle transazioni

Transazioni - Modello flat La transazione può terminare la propria esecuzione con successo (commit) e rendere definitivi i cambiamenti prodotti sulla base di dati dalle istruzioni eseguite tra BeginWork e Commit Work, oppure sarà disfatta (cioè i suoi effetti saranno annullati) e tutti gli aggiornamenti eseguiti andranno persi (abort) In questo caso, si dice che viene eseguito il rollback della transazione DB - Cenni sulla gestione delle transazioni

Transazioni - Modello flat I vari DBMS forniscono specifiche istruzioni SQL per supportare l'uso di transazioni flat tali istruzioni sono invocate all'interno di programmi applicativi (nelle tre modalità viste in precedenza) e consentono al programmatore di identificare l'inizio e la fine di una transazione DB - Cenni sulla gestione delle transazioni

Controllo della concorrenza Scopo: Garantire l'integrità della base di dati in presenza di accessi concorrenti da parte di più utenti. Necessità di sincronizzare le transazioni eseguite concorrentemente Carico applicativo di DBMS : numero di transazioni per secondo Misurato in tps(transation per second):10-100 migliaia di operazioni esempi: banche, aerei... DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Concorrenza: esempio base di dati che organizza le informazioni sui conti dei clienti di una banca il sig. Rossi e' titolare di due conti: un conto corrente (intestato anche alla sig.ra Rossi) e un libretto di risparmio rispettivamente con € 100 e € 1000. con la transazione T1 il sig. Rossi trasferisce € 150 dal libretto di risparmio al conto corrente contemporaneamente con la transazione T2 la sig.ra Rossi deposita € 500 sul conto corrente. DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Concorrenza: esempio T1 Read(Lr) Lr = Lr - 150 Write(Lr) Read(Cc) Cc = Cc + 150 Write(Cc) Commit T2 Read(Cc) Cc = Cc + 500 Write(Cc) Commit La somma depositata da T2 è persa, (Lost update) e non si ottiene l’effetto voluto sulla base dati. DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Concorrenza: esempio l'esecuzione concorrente di più transazioni genera un'alternanza di computazioni da parte delle varie transazioni, detta interleaving l'interleaving tra le transazioni T1 e T2 nell'esempio produce uno stato della base di dati scorretto si sarebbe ottenuto uno stato corretto se ciascuna transazione fosse stata eseguita da sola o se le due transazioni fossero state eseguite l'una dopo l'altra, consecutivamente DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Perdita di update DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Letture Sporche DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Letture inconsistenti DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Update fantasma DB - Cenni sulla gestione delle transazioni

Transazioni -Concorrenza: lock Idea base: ritardare l'esecuzione di operazioni in conflitto imponendo che le transazioni pongano dei blocchi (lock) sui dati per poter effettuare operazioni di lettura e scrittura due operazioni si dicono in conflitto se operano sullo stesso dato e almeno una delle due è un'operazione di scrittura una transazione può accedere ad un dato solo se ha un lock su quel dato esistono vari protocolli di locking il più noto: two-phase locking DB - Cenni sulla gestione delle transazioni

Teoria del controllo della concorrenza Transazione: sequenza di operazioni di lettura e scrittura Ogni transazione ha un identificatore univoco assegnato dal sistema Assumiamo di omettere il begin/end transaction una transazione può essere rappresentata come: t1: r1(x)r1(y)w1(x)w1(y) DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Schedule: Rappresenta la sequenza di operazioni I/O presentate da transazioni concorrenti esempio: S :r1(x)r2(z)w1(x)w2(z) Il compito del controllo di concorrenza è di accettare alcuni schedule e rifiutarne altri Lo schedule S è valido? DB - Cenni sulla gestione delle transazioni

Scheduler serializzabile Uno scheduler seriale non è efficiente anche se elimina alla fonte molte anomalie Scheduler view-serializzabile: Uno scheduler che produce lo stesso risultato di uno seriale a partire dalle stesse transazioni ma in condizioni di concorrenza DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Primitive di lock Tutte le operazioni di lettura e scrittura devono essere protette tramite l’esecuzione di tre diverse primitive: r_lock w_lock Unlock Lo scheduler che riceve una sequenza di richieste di esecuzione di queste primitive da parte delle transazioni ne determina la concorrenza DB - Cenni sulla gestione delle transazioni

Transazioni ben formate Stato di un oggetto: Libero r-locked(bloccato da un lettore) w-locked(bloccato da uno scrittore) Ogni read di un oggetto deve essere preceduto da r_lock e seguito da unlock Ogni write di un oggetto deve essere preceduto da w_lock e seguito da unlock DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Tabella dei conflitti libera r-locked w-locked r-lock si ok no w-lock si no no Si: blocco della risorsa il programma procede no: il programma va in attesa che la risorsa venga sbloccata ok: il contatore dei lettori viene incrementato per ogni lettore e decrementato dopo operazione unlock (una risorsa può essere letta da più lettori, ma non modificata mentre si legge) DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Locking a due fasi Una transazione dopo aver rilasciato un lock non può acquisirne degli altri: prima fase: la transazione acquisisce tutti i lock che le servono (fase crescente) seconda fase (calante) i lock acquisiti vengono rilasciati DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Assunzioni L’uso di: Transazioni ben formate Politica dei conflitti (come da tabella) Locking a due fasi ->implicano la serializzabilità DB - Cenni sulla gestione delle transazioni

Varianti two-phase locking Strict two-phase locking: I lock vengono rilasciati solo al commit Conservative two-phase locking: Ottiene tutti i lock necessari al begin transaction. Vantaggi: Non si può avere deadlock Svantaggi: Si devono dichiarare (e quindi conoscere) i lock da ottenere. DB - Cenni sulla gestione delle transazioni

Realizzazione del locking DB Granularità ridotta Maggiore concorrenza Tabella Pagina T-upla Campo DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Problema del deadlock T1 w-lock(a) w-lock(b) read/write(a) read/write(b) unlock(a) unlock(b) T2 w-lock(b) w-lock(a) read/write(a) read/write(b) unlock(b) unlock(a) DB - Cenni sulla gestione delle transazioni

Insorgenza del deadlock T2 T1 esegue w-lock(a) T2 esegue w-lock(b) T1 attende una risorsa controllata da T2 T2 attende una risorsa controllata da T1 T1 DB - Cenni sulla gestione delle transazioni

Tecniche risolutive del deadlock Time-out Un’attesa eccessiva è interpretata come deadlock (per clustered database) Prevenzione evitare alcune condizioni di attesa Determinazione ricerca dei cicli sul grafo di attesa DB - Cenni sulla gestione delle transazioni

Livelli di isolamento in lettura SERIALIZABLE: Garantisce isolamento totale, come se le transazioni vengano fatte in sequenza. REPEATABLE READ : Acquisisce tutti i lock necessari alla SELECT in base al WHERE. Phantom reads in caso di insert/update simultanee READ COMMITTED (Cursor stability): Blocca in lettura il record da leggere e lo sblocca subito dopo averlo letto. Non-repeatable reads, phantom reads READ UNCOMMITED: Non blocca il record da leggere. Può vedere dati di transazioni non committate. dirty reads,… DB - Cenni sulla gestione delle transazioni

Gestione del ripristino Tre principali tipi di malfunzionamenti: malfunzionamenti del disco: le informazioni residenti su disco vengono perse (rottura della testina, errori durante il trasferimento dei dati) malfunzionamenti di alimentazione: le informazioni memorizzate in memoria centrale e nei registri vengono perse errori nel software: si possono generare risultati scorretti e il sistema potrebbe essere in uno stato inconsistente (errori logici ed errori di sistema) DB - Cenni sulla gestione delle transazioni

Ripristino: classificazione delle memorie Ai fini del ripristino, le memorie vengono classificate come segue: Memoria volatile: le informazioni contenute vengono perse in caso di cadute di sistema Memoria non volatile: le informazioni contenute sopravvivono a cadute di sistema, possono però essere perse a causa di altri malfunzionamenti Memoria stabile: le informazioni contenute non possono essere perse (astrazione) se ne implementano approssimazioni, duplicando le informazioni in diverse memorie non volatili con probabilità di fallimento indipendenti DB - Cenni sulla gestione delle transazioni

Come garantire la memoria stabile Replicazione on-line (es: Sistemi RAID) DB - Cenni sulla gestione delle transazioni

Come garantire la memoria stabile Replicazione off-line (backup): unità nastro DVD,CD NFS DB - Cenni sulla gestione delle transazioni

Ripristino: modello astratto Una transazione è sempre in uno dei seguenti stati: active: in stato di esecuzione partially committed: lo stato raggiunto dopo che è stata eseguita l'ultima istruzione failed: lo stato raggiunto dopo aver determinato che l'esecuzione non può procedere normalmente aborted: lo stato raggiunto dopo che la transazione ha subito un rollback e la base di dati e' stata ripristinata allo stato precedente l'inizio della transazione committed: dopo il completamento con successo DB - Cenni sulla gestione delle transazioni

Ripristino: modello astratto E' importante che una transazione non effettui scritture esterne osservabili (cioè scritture che non possono essere “cancellate”, ad es. su terminale o stampante) prima di entrare nello stato di commit dopo il rollback di una transazione, il sistema ha due possibilità: Rieseguire la transazione ha senso solo se la transazione è stata abortita a seguito di errori software o hardware non dipendenti dalla logica interna della transazione eliminare la transazione se si verificano degli errori interni che possono essere corretti solo riscrivendo il programma applicativo DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Ripristino: esempio T transazione che trasferisce € 100 dal conto A al conto B A = € 1.000, B = € 15.000 dopo la modifica di A e prima della modifica di B, si verifica una caduta di sistema e i contenuti della memoria vengono persi se si riesegue T: stato (inconsistente) in cui A = € 800 e B = € 15.100 se non si riesegue T : stato corrente (inconsistente) in cui A = € 900 e B = € 15.000 in entrambi i casi lo stato risultante è inconsistente DB - Cenni sulla gestione delle transazioni

Ripristino: meccanismi di recovery con log Durante l'esecuzione di una transazione tutte le operazioni di scrittura sono registrate in un particolare file gestito dal sistema, detto file di log concettualmente, il log può essere pensato come un file sequenziale, nell'implementazione effettiva possono essere usati più file fisici ad ogni record inserito nel log viene attribuito un identificatore unico LSN (log sequence number), che in genere è l'indirizzo logico del record a fronte di un malfunzionamento, si utilizzano le informazioni contenute nel file di log per riportare la base di dati in uno stato consistente, rieseguendo o disfacendo le operazioni eseguite tramite il log, il sistema può gestire qualsiasi malfunzionamento che non implichi la perdita di informazioni contenute in memoria non volatile DB - Cenni sulla gestione delle transazioni

Giornale delle transazioni File sequenziale di record che descrivono le azioni svolte dalle transazioni Dump (bk completo) Checkpoint (flush su disco) Top = Istante corrente CHECKPOINT Bg(T1) Up(T1) Up(T1) Cm(T1) TOP Dump DB - Cenni sulla gestione delle transazioni

Principale funzione del giornale di transazione Registra in memoria stabile le azioni svolte dalla transazione sotto forma di transazioni di stato se UPDATE (U) trasforma il record O dal valore O1 al valore O2 registrazione sul giornale: BEFORE_STATE (U)=O1 AFTER_STATE (U) =O2 DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Uso del giornale In caso di rollback-work oppure guasto prima del commit UNDO T1: O=O1 In caso di guasto dopo il commit REDO T1: O=O2 Proprietà idempotenza di undo e redo: dato che queste primitive sono definite tramite una azione di copiatura vale per esse la proprietà per la quale l’effettuazione di un numero arbitrario di undo e redo equivale allo svolgimento della stessa azione una sola volta Undo(Undo(A)) = Undo(A) Redo(Redo(A)) = Redo(A) DB - Cenni sulla gestione delle transazioni

Tipi di record del giornale Record relativi ai comandi transazionali: BEGIN, COMMIT, ABORT Record relativi alle operazioni: INSERT, DELETE,UPDATE Record relativi alle azioni di recovery: DUMP (copia completa della base di dati, normalmente viene effettuata quando il sistema non è operativo) CHEKPOINT (svolta periodicamente, obiettivo: controllo delle transazioni attive) DB - Cenni sulla gestione delle transazioni

Tipi di record nel giornale Record relativi ai comandi transazionali: B(T),C(T),A(T) Record relativi alle operazioni: I(T,PID,AS), D(T,PID,BS), U(T,PID,BS,AS) Record relativi alle azioni di recovery: DUMP, CKPT(T1,T2,...Tn) Campi dei record: T identificatore di transazione PID identificatore di oggetto BS, AS: before state, after state DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Esempio Log File DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Esempio roll-back DB - Cenni sulla gestione delle transazioni

Politiche (STEAL / NOT STEAL) STEAL: Il buffer manager può scrivere sul DB le modifiche apportate dalla transazione T prima che avvenga il commit Necessità di operazioni per il rollback, più veloce in caso di commit Usata da BD2 e Oracle NO STEAL: Il buffer manager, potrà scrivere le modifiche apportate dalla transazione solo al commit (prendendo i dati dal log) Non necessità di operazioni per il rollback, ma sovraccarica il buffer manager al commit DB - Cenni sulla gestione delle transazioni

Politiche FORCE/ NO FORCE NO FORCE (commit anticipato): Al commit viene scritto nel log lo stato di committed ma non si forzano i dati su disco. Il Buffer Manager deciderà quando salvarli Usato da DB2 e Oracle perché più efficiente normalmente FORCE (commit posticipato): Al commit, si forza la scrittura sul disco di tutte le modifiche, quindi si scrive sul log lo stato di committed. Più efficiente in caso di system failure DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni In caso di guasto Guasto soft: perdita di memoria centrale richiede una RIPRESA A CALDO Guasto hard: danneggiamento della memoria non volatile richiede una RIPRESA A FREDDO DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Modello fail-stop Quando il sistema individua un guasto, sia di sistema che di dispositivo, esso forza un completo stop delle transazioni ed il successivo ripristino del Sistema Operativo (boot). Quindi viene attivata una procedura di ripresa a caldo o a freddo a seconda del tipo di guasto. DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Recovery Checkpoint Istante di tempo “consistente” (in cui tutte le transazioni scrivono i loro dati dal buffer al disco) Si registrano le transazioni attive Dump Istante di tempo in cui viene effettuata una copia completa della base di dati (tipicamente di notte oppure alla fine della settimana); DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Esempio checkpoint DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Ripresa a caldo Si leggono le registrazioni del giornale a partire dal checkpoint Si separano le transazioni in: INSIEME UNDO (da disfare) INSIEME REDO (da rifare) Si eseguono le azioni di UNDO ripercorrendo il log all’indietro Si eseguono le azioni di REDO ripercorrendo il log in avanti DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni Ripresa a freddo Si ripristinano i dati a partire dal backup Si eseguono le operazioni registrate sul giornale fino all'istante del guasto Si esegue una ripresa a caldo DB - Cenni sulla gestione delle transazioni