Tecnologia di un Database Server (centralizzato) Gestione dell affidabilità



Documenti analoghi
Recovery manager Gestore della affidabilità

Tecnologia di un Database Server (centralizzato) Introduzione generale

Basi di Dati prof. A. Longheu. 5 Progettazione fisica

Coordinazione Distribuita

Tecnologia di un Database Server (centralizzato) Gestione del buffer

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo

Linguaggio SQL: costrutti avanzati

Sistemi transazionali. sistemi transazionali 1

8 Tecniche di recovery

L architettura di un DBMS

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

TRANSAZIONI. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso.

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Transazioni. Transazioni. Transazioni. Definizione di una transazione. Transazione

Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni

Introduzione all Architettura del DBMS

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Esecuzione concorrente di transazioni

Centro Tecnico per la Rete Unitaria della Pubblica Amministrazione

Basi di Dati Distribuite

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Gestione del Buffer. Gestione delle Transazioni. Il buffer. Il gestore del buffer 2. Il gestore del buffer 1

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Basi di Dati e Sistemi Informativi. Le Transazioni. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

IL SISTEMA INFORMATIVO

Ottimizzazione delle interrogazioni (parte I)

Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario

Progettaz. e sviluppo Data Base

Il glossario della Posta Elettronica Certificata (PEC) Diamo una definizione ai termini tecnici relativi al mondo della PEC.

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Appunti sulla Macchina di Turing. Macchina di Turing

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

STRUTTURE DEI SISTEMI DI CALCOLO

Transazioni - Parte 1

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Presidenza del Consiglio dei Ministri

Laboratorio di Informatica di Base Archivi e Basi di Dati

DB - Cenni sulla gestione delle transazioni

Base di dati e sistemi informativi

SISTEMI OPERATIVI DISTRIBUITI

La Metodologia adottata nel Corso

Manuale Terminal Manager 2.0

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

copie di salvaguardia

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

SCHEMA DI DELIBERAZIONE

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Pronto Esecuzione Attesa Terminazione

La durability. I dati modificati da una transazione che ha fatto il commit non devono mai essere persi. La durability consente di reagire a:

Progettazione di Basi di Dati

Indicare se i seguenti schedule possono produrre anomalie; i simboli ci e ai indicano l esito (commit o abort) della transazione.

Web Application Libro Firme Autorizzate

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

Autorità per l'informatica nella pubblica amministrazione Deliberazione n. 42/2001

Materiali per il modulo 1 ECDL. Autore: M. Lanino

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

CASO D USO: MICRORACCOLTA. 21 aprile

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

File system II. Sistemi Operativi Lez. 20

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Esempio: aggiungere j

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

ARCHITETTURA DI UN B.D.M.S. Parte III Il Controllo di Affidabilità

FONDAMENTI di INFORMATICA L. Mezzalira

Linguaggi di programmazione

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

LA FORMAZIONE E LA CONSERVAZIONE DELLA MEMORIA DIGITALE

Istruzione Operativa Richiesta di Offerta on-line in busta chiusa digitale

Sistema Informativo Gestione Fidelizzazione Clienti MANUALE D USO

Database. Si ringrazia Marco Bertini per le slides

Corso di Programmazione Concorrente

Enhanced Write Filter

Il Sistema Operativo

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Libero Emergency PC. Sommario

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

ROM Upgrade Utility (RUU) Prima dell aggiornamento fare attenzione se

CONFIGURAZIONE E GESTIONE DEI DATABASE (rev. 1.1)

1) GESTIONE DELLE POSTAZIONI REMOTE

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

ENTRARE NEL SISTEMA. Clicca su Entra per entrare nel sistema. PAGINA 1

Fatturazione elettronica con WebCare

LINEE GUIDA PER L EROGAZIONE DELLA FORMAZIONE INTERNA

Il problema del produttore e del consumatore. Cooperazione tra processi

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Approfondimento: Migrazione dei database e backup della posta

COMUNE DI MELITO DI NAPOLI Provincia di Napoli

Traccia delle soluzioni

perpretate da utenti autorizzati perpretate da agenti ostili

Transcript:

Affidabilità Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione dell affidabilità Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine

Affidabilità Basi di Dati / Complementi di Basi di Dati 2 Controllo dell affidabilità Il controllore dell affidabilità garantisce due proprietà fondamentali delle transazioni: atomicità; persistenza. In particolare, il controllore dell affidabilità è il responsabile della scrittura del log, un archivio/file persistente che registra le varie azioni svolte dal DBMS. Ogni operazione di scrittura sulla base di dati viene protetta tramite un azione sul log, in modo che sia possibile disfare (undo) le azioni a seguito di malfunzionamenti o guasti che precedono il commit oppure rifare (redo) queste azioni qualora la loro buona riuscita sia dubbia e le transazioni abbiano effettuato il commit. Dato il suo ruolo fondamentale, è necessario che il log sia sufficientemente robusto.

Affidabilità Basi di Dati / Complementi di Basi di Dati 3 Architettura del gestore dell affidabilità

Affidabilità Basi di Dati / Complementi di Basi di Dati 4 I compiti del controllore dell affidabilità Realizza i comandi transazionali begin transaction, commit work, and rollback work. Realizza le primitive di ripristino (recovery) dopo i malfunzionamenti / guasti, dette rispettivamente ripresa a caldo e ripresa a freddo. Riceve le richieste di accesso alle pagine in lettura e in scrittura, che passa al gestore del buffer, e genera altre richieste di lettura e scrittura di pagine necessarie a garantire robustezza e resistenza ai guasti. Predispone i dati essenziali per i meccanismi di ripristino dai guasti, in particolare azioni di checkpoint e di dump.

Affidabilità Basi di Dati / Complementi di Basi di Dati 5 La nozione di memoria stabile Memoria stabile = memoria resistente ai guasti. La nozione di memoria stabile è un astrazione: a nessuna memoria può essere associata una probabilità nulla di fallimento. Meccanismi di replicazione e protocolli di scrittura robusti possono rendere tale probabilità arbitrariamente prossima allo zero. I meccanismi di controllo dell affidabilità vengono definiti come se la memoria stabile fosse effettivamente esente da guasti: un guasto della memoria stabile viene considerato un evento catastrofico. Come realizzare una memoria stabile? (i) un unità a nastro; (ii) una coppia di dispositivi (un unità a nastro e un disco in cui vengono registrate le stesse informazioni); (iii) due unità a disco a specchio (mirrored), contenenti la stessa informazione, scritte con un operazione di scrittura attenta (ha successo solo se l informazione viene registrata su entrambi i dischi) - l informazione stabile è disponibile in linea.

Affidabilità Basi di Dati / Complementi di Basi di Dati 6 Organizzazione dei log Il log è un file sequenziale, gestito dal controllore dell affidabilità, scritto in memoria stabile. Sul log vengono registrate le azioni eseguite dalle varie transazioni nell ordine temporale di esecuzione. Il log ha un blocco corrente (l ultimo ad esso allocato). I record di log vengono scritti sequenzialmente in tale blocco.

Affidabilità Basi di Dati / Complementi di Basi di Dati 7 Legenda I record del log sono di due tipi: record di transazione e di sistema. I record di transazione registrano le attività svolte dalle transazioni nell ordine in cui esse sono eseguite. Per ogni transazione, un record di begin (B), record di insert, delete e update (U) e un record di commit (C) o di abort (A). Nella figura precedente vengono evidenziati i record relativi alla transazione t 1, che esegue due modifiche prima di terminare con successo con un commit. I record di sistema registrano l esecuzione di operazioni di dump (rare) e di checkpoint (più frequenti).

Affidabilità Basi di Dati / Complementi di Basi di Dati 8 La struttura dei record nel log Per descrivere gli effetti di una transazione t i, vengono scritti nel log i seguenti record: i record di begin, commit e abort, che contengono il tipo di record e l identificativo t i della transazione; i record di update, che contengono l identificativo t i della transazione, l identificativo O j dell oggetto modificato, i valori BS i (before state) e AS i (after state) che descrivono rispettivamente il valore di O j prima e dopo la modifica (per semplicità assumeremo che BS i e AS i contengano copie complete delle pagine modificate; in realtà, il loro contenuto è molto più sintetico); i record di insert e delete, i primi privi del valore BS i, i secondi del valore AS i.

Affidabilità Basi di Dati / Complementi di Basi di Dati 9 Le primitive undo e redo Convenzioni notazionali: data una transazione T, indicheremo con B(T ), C(T ) e A(T ) i record di begin, commit e abort relativi a T, rispettivamente, e con U(T, O, BS, AS), I(T, O, AS) e D(T, O, BS) i record di update, insert e delete, rispettivamente. I record del log associati ad una transazione, consentono di disfare e rifare le corrispondenti azioni sulla base di dati: primitive di undo: per disfare un azione su un oggetto O, è sufficiente ricopiare in O il valore BS (l insert viene disfatto cancellando l oggetto O) primitiva di redo: per rifare un azione su un oggetto O, è sufficiente ricopiare in O il valore AS (il delete viene rifatto cancellando l oggetto O)

Affidabilità Basi di Dati / Complementi di Basi di Dati 10 Proprietà di idempotenza Le operazioni di undo e redo godono della proprietà di idempotenza: l esecuzione di un numero arbitrario di undo e redo di una stessa azione è equivalente ad una singola esecuzione di tale azione. Formalmente, undo(undo(a)) = undo(a) redo(redo(a)) = redo(a) Utilità di tale proprietà: qualora si verifichino errori in fase di ripristino, sarà sufficiente ripetere le operazioni fino a quando verranno portate a termine con successo.

Affidabilità Basi di Dati / Complementi di Basi di Dati 11 L operazione di checkpoint L operazione di checkpoint viene svolta periodicamente, in stretto coordinamento con il buffer manager, per registrare le transazioni attive (al fine di semplificare le procedure di ripristino dopo un guasto). 1. si sospende l accettazione di operazioni di scrittura, commit o abort, da parte di qualunque transazione; 2. si trasferiscono in memoria di massa (tramite opportune operazioni di force) tutte le pagine del buffer su cui sono state eseguite delle modifiche da parte di transazioni che hanno già effettuato il commit; 3. si scrive in modo sincrono (force) nel log un record di checkpoint che contiene gli identificatori delle transazioni attive; 4. si riprende l accettazione delle operazioni sospese. Si noti che in tal modo gli effetti delle transazioni che hanno eseguito il commit vengono registrati nella base di dati in modo persistente.

Affidabilità Basi di Dati / Complementi di Basi di Dati 12 L operazione di dump L operazione di dump produce una copia completa della base di dati, effettuata in mutua esclusione con tutte le altre transazioni quando il sistema non è operativo. La copia viene memorizzata in memoria stabile (backup). Al termine del dump, viene scritto nel log un record di dump, che segnala l avvenuta esecuzione dell operazione in un dato istante. Il sistema riprende, quindi, il suo funzionamento normale. Convenzioni notazionali. Useremo DU M P per denotare il record di dump e CK(T 1, T 2,..., T n ) per denotare il record di checkpoint, dove T 1, T 2,..., T n sono gli identificatori delle transazioni attive all istante del checkpoint.

Affidabilità Basi di Dati / Complementi di Basi di Dati 13 La regola write-ahead-log Durante il funzionamento normale delle transazioni. il gestore dell affidabilità garantisce il rispetto delle seguenti due regole che impongono dei requisiti minimi che consentono di ripristinare la correttezza della base di dati in caso di guasti: La regola write-ahead-log (WAL) impone che la parte before-state dei record di un log venga scritta nel log (con un operazione di scrittura in memoria stabile) prima di effettuare la corrispondente operazione sulla base di dati. Questa regola consente di disfare le scritture già effettuate in memoria di massa da parte di una transazione che non ha ancora effettuato un commit (per ogni aggiornamento viene reso disponibile in modo affidabile il valore precedente la scrittura).

Affidabilità Basi di Dati / Complementi di Basi di Dati 14 La regola di commit-precedenza La regola di commit-precedenza impone che la parte after state dei record di un log venga scritta nel log (con un operazione di scrittura in memoria stabile) prima di effettuare il commit. Questa regola consente di rifare le scritture di una transazione che ha effettuato il commit le cui pagine modificate non sono ancora state trascritte dal buffer manager in memoria di massa. In realtà, anche se le regole fanno riferimento a before state e after state, nella pratica entrambe le componenti del record di log vengono scritte assieme. Regole semplificate: (i) i record di log siano scritti prima dei corrispondenti record della base di dati (regola WAL); (ii) i record di log siano scritti prima dell esecuzione dell operazione di commit (regola di commit-precedenza).

Affidabilità Basi di Dati / Complementi di Basi di Dati 15 La scrittura dei record di commit e di abort La scrittura dei record di commit. La transazione sceglie in modo atomico e indivisibile tra abort e commit nel momento in cui scrive sul log, in modo asincrono (primitiva force), il record di commit. Guasti che occorrono prima (undo) e dopo (redo) la scrittura del record di commit. I guasti che si verificano prima impongono l undo delle azioni effettuate, in modo da riportare la base di dati nello stato iniziale; quelli che si verificano dopo impongono il redo delle azioni effettuate, in modo da produrre con certezza lo stato finale della transazione. La scrittura dei record di abort. Il record di abort definisce in modo atomico la decisione di abortire la transazione (suicidio/omicidio). Dato che tale decisione non modifica le decisioni del gestore della recovery, la scrittura del record di abort può essere fatta in modo asincrono con un operazione di flush.

Affidabilita ' Basi di Dati / Complementi di Basi di Dati 16 $ Protocolli di scrittura del log e della base di dati Le due regole precedenti impongono i seguenti protocolli per la scrittura del log e della base di dati (per semplicita, si considerano solo operazioni di update): & %

Affidabilità Basi di Dati / Complementi di Basi di Dati 17 Schema (a) La transazione scrive inizialmente il record B(T ). Successivamente, esegue le operazioni di update scrivendo prima il record di log U(T, O, BS, AS) e poi la pagina della base di dati, che passa dal valore BS al valore AS. Tutte queste pagine devono essere effettivamente scritte (autonomamente dal gestore del buffer o con esplicite richieste di force) prima del commit, il quale comporta una scrittura sincrona (force). Al commit, tutte le pagine della base di dati modificate dalla transazione sono state scritte in memoria di massa. Tale schema non richiede operazioni di redo.

Affidabilità Basi di Dati / Complementi di Basi di Dati 18 Schemi (b) e (c) Nello schema (b), la scrittura dei record di log precede quella delle azioni sulla base di dati, che avvengono dopo la decisione di commit e la conseguente scrittura sincrona del record di commit sul log. Tale schema non richiede operazioni di undo. Nello schema (c) (più generale e comunemente usato), le scritture sulla base di dati, una volta protette dalle opportune scritture sul log, possono avvenire in un qualunque momento rispetto alla scrittura del record di commit sul log. Tale schema consente al gestore del buffer di ottimizzare le operazioni di flush relative ai suoi buffer, indipendentemente dal controllore dell affidabilità. Tale schema può richiedere operazioni sia di undo sia di redo.

Affidabilità Basi di Dati / Complementi di Basi di Dati 19 I costi Tutti e tre gli schemi rispettano le due regole fondamentali e scrivono il record di commit in modo sincrono. Si differenziano per il momento in cui scrivono le pagine della base di dati. Il costo delle scritture del log è paragonabile al costo dell aggiornamento della base di dati: l uso di protocolli transazionali robusti introduce, quindi, un notevole sovraccarico per il sistema, ma garantisce le proprietà acide.

Affidabilità Basi di Dati / Complementi di Basi di Dati 20 Ottimizzazione delle operazioni sul log Le operazioni sul log possono essere ottimizzate. Una possibilità: scrivere i record di log relativi ad una transazione nella stessa pagina in cui si scrive il record di commit della transazione (il loro flush viene eseguito contestualmente alla scrittura sincrona del record di commit). In alternativa, può essere eseguito un group-commit: vari record di commit vengono posti nella stessa pagina del log e scritti con un unica scrittura sincrona, attesa da tutte le transazioni richiedenti. Sistemi con un elevato numero di transazioni per secondo (tps) possono adottare schemi paralleli di scrittura del log.

Affidabilità Basi di Dati / Complementi di Basi di Dati 21 Gestione dei guasti Distinguiamo due classi di guasti. Guasti di sistema. Guasti causati da bachi software, ad esempio di sistema operativo, oppure da interruzioni del funzionamento dei dispositivi, ad esempio cali di tensione, che portano il sistema in uno stato inconsistente. Effetto: perdita del contenuto della memoria principale (buffer), conservazione del contenuto della memoria di massa (base di dati e log). Guasti di dispositivo. Guasti relativi ai dispositivi di gestione della memoria di massa (ad esempio, strisciamento delle testine di un disco, che causa la perdita del suo contenuto). Dato che il log risiede in memoria stabile, un guasto di dispositivo può causare unicamente una perdita (di parte) del contenuto della base di dati, non del log.

Affidabilità Basi di Dati / Complementi di Basi di Dati 22 Il modello fail-stop Modello ideale di funzionamento di un DBMS

Affidabilità Basi di Dati / Complementi di Basi di Dati 23 Legenda Modello fail-stop. Quando il sistema rileva un guasto (di sistema o di funzionamento), esso forza un arresto completo delle transazioni e il successivo ripristino del corretto funzionamento del sistema operativo (boot). Viene, quindi, avviata una procedura di ripristino (recovery), denominata ripresa a caldo (warm restart) nel caso di guasti di sistema e ripresa a freddo (cold restart) nel caso di guasti di dispositivo. Al termine delle procedure di ripresa, il sistema torna a disposizione delle transazioni. Il buffer è completamente vuoto e può riprendere a caricare pagine della base di dati e del log.

Affidabilità Basi di Dati / Complementi di Basi di Dati 24 Come funzionano le procedure di ripresa? Al verificarsi del guasto, esiste un insieme di transazioni potenzialmente attive, delle quali si ignora se hanno ultimato le loro azioni sulla base di dati (in quanto il buffer manager ha perso ogni informazione utile). Tali transazioni possono essere suddivese in due classi, in base alle informazioni presenti nel log. Transazioni che hanno effettuato il commit. Per esse è necessario rifare le azioni al fine di garantire la proprietà di persistenza. Transazioni che non hanno effettuato il commit. Per esse è necessario disfare le azioni, in quanto non è noto quali azioni siano state effettivamente eseguite (la base di dati deve essere lasciata nello stato precedente l esecuzione della transazione).

Affidabilità Basi di Dati / Complementi di Basi di Dati 25 L uso del record di end Alcuni sistemi, al fine di semplificare i protocolli di ripristino, aggiungono un ulteriore record al log, denominato record di end, nel momento in cui le operazioni di trascrizione (flush) delle pagine da parte del buffer manager sono terminate. Ciò consente di individuare una terza classe di transazioni, per le quali non occorre né rifare né disfare le azioni. In genere, per non complicare la gestione delle transazioni, non viene previsto alcun record di end. Nel seguito, faremo riferimento al modello fail-stop dei guasti, senza record di end.

Affidabilità Basi di Dati / Complementi di Basi di Dati 26 Ripresa a caldo - 1 La ripresa a caldo è articolata in 4 fasi successive: (i) Si accede all ultimo blocco del log, corrente all istante di guasto, e si ripercorre all indietro il log fino al record di checkpoint. (ii) Si individuano le transazioni da rifare e da disfare. Si costruiscono due insiemi, detti di UNDO e di REDO, contenenti identificativi di transazioni. All inizio, l insieme di UNDO contiene l insieme delle transazioni attive al checkpoint; l insieme di REDO è vuoto. Si percorre, quindi, il log in avanti, aggiungendo all insieme di UNDO tutte le transazioni di cui è presente un record di begin e spostando dall insieme di UNDO all insieme di REDO tutti gli identificativi delle transazioni di cui è presente il record di commit. Al termine di tale fase, gli insiemi di UNDO e REDO contengono rispettivamente gli identificativi delle transazioni da disfare e quelli delle transazioni da rifare.

Affidabilità Basi di Dati / Complementi di Basi di Dati 27 Ripresa a caldo - 2 (iii) Si ripercorre all indietro il log disfacendo le azioni delle transazioni contenute nel set di UNDO, risalendo fino alla prima azione della transazione più vecchia fra quelle presenti nei due insiemi di UNDO e REDO (tale azione potrebbe precedere il record di checkpoint nel log). (iv) Nell ultima fase, si applicano le azioni delle transazioni dell insieme di REDO nell ordine in cui sono state registrate nel log. In tal modo, viene replicato esattamente il comportamento delle transazioni originali.

Affidabilità Basi di Dati / Complementi di Basi di Dati 28 Atomicità e persistenza delle transazioni La soluzione proposta garantisce atomicità e persistenza delle transazioni. Atomicità. Le transazioni in corso all istante del guasto lasciano la base di dati nello stato iniziale o nello stato finale, sulla base dell assenza o della presenza del relativo record di commit. Persistenza. Le pagine presenti nel buffer relative a transazioni completate con successo, ma non ancora trascritte in memoria di massa, vengono effettivamente completate con una scrittura in memoria di massa. Si noti che ogni transazione incerta, presente nell ultimo record di checkpoint o iniziata dopo l ultimo checkpoint, viene disfatta, se l ultimo suo record scritto nel log è un record che descrive un azione o è un record di abort, o rifatta, se l ultimo suo record nel log è il record di commit.

Affidabilità Basi di Dati / Complementi di Basi di Dati 29 Un esempio Vediamo ora un esempio di applicazione del protocollo. Si supponga che nel log vengano registrate nell ordine le seguenti azioni: B(T 1), B(T 2), U(T 2, O1, B1, A1), I(T 1, O2, A2), B(T 3), C(T 1), B(T 4), U(T 3, O2, B3, A3), U(T 4, O3, B4, A4), CK(T 2, T 3, T 4), C(T 4), B(T 5), U(T 3, O3, B5, A5), U(T 5, O4, B6, A6), D(T 3, 05, B7), A(T 3), C(T 5), I(T 2, O6, A8). Successivamente, si verifica un guasto.

Affidabilità Basi di Dati / Complementi di Basi di Dati 30 L applicazione del protocollo all esempio - 1 1. Si accede al record di checkpoint; UNDO = {T 2, T 3, T 4} e REDO = {}. 2. Si percorre in avanti il record di log e si aggiornano gli insiemi di UNDO e di REDO: (a) C(T 4): UNDO = {T 2, T 3} e REDO = {T 4} (b) B(T 5): UNDO = {T 2, T 3, T 5} e REDO = {T 4} (c) C(T 5): UNDO = {T 2, T 3} e REDO = {T 4, T 5}

Affidabilità Basi di Dati / Complementi di Basi di Dati 31 L applicazione del protocollo all esempio - 2 3. Si ripercorre indietro il log fino all azione U(T 2, O1, B1, A1) eseguendo le seguenti azioni di Undo: (a) Delete(06 (b) Re-insert (05 = B7) (c) 03 = B5 (d) 02 = B3 (e) 01 = B1 4. Vengono svolte le azioni di Redo: (a) O3 = A4 (si noti che A4 = B5) (b) 04 = A6

Affidabilità Basi di Dati / Complementi di Basi di Dati 32 Ripresa a freddo La ripresa a freddo reagisce ad un guasto che provoca il deterioramento di una parte della base di dati. Si articola in tre fasi successive: 1. durante la prima fase, si accede al più recente record di dump nel log; sulla base delle informazioni in esso contenute, si accede al dump e si ricopia selettivamente la parte deteriorata della base di dati; 2. a partire dal record di dump, si ripercorre in avanti il log, applicando, relativamente alla parte deteriorata della base di dati, sia le azioni sulla base di dati sia le azioni di commit e abort, riportandosi in tal modo alla situazione precedente il verificarsi del guasto; 3. infine, si esegue una ripresa a caldo.

Affidabilità Basi di Dati / Complementi di Basi di Dati 33 Effetti sulla base di dati La soluzione proposta ricostruisce passo passo tutto il lavoro svolto sulla parte della base di dati soggetta al guasto; successivamente, con una ripresa a caldo, garantisce le proprietà di persistenza e di atomicità relativamente all istante di guasto. La seconda fase dell algoritmo può essere ottimizzata, ad esempio, effettuando unicamente le azioni di transazioni che abbiano eseguito il commit prima del verificarsi del guasto.