Dubbio su appello 16 Giugno

Rispondi
Avatar utente
InformateciBot
Messaggi: 314
Iscritto il: 30/09/2018, 16:33

Immagine

Perchè abbiamo due record per il checkpoint? Secondo i checkpoint buffer-consistenti viene inserito solo un record formato così: (CKP, L) ed il significato è spiegato sul libro. A quanto sappia i due record, begin e end, li abbiamo solo intravisti nell'algoritmo ARIES che non dovrebbe essere parte d'esame.

Lucio Messina

So che è tardi, comunque forse interessa ancora a qualcuno.
Il problema è che fare il checkpoint non è instantaneo: bisogna flushare tutte le pagine dal buffer al disco, e questo richiede tempo.

Quindi possiamo fare in due modi:
- interrompiamo tutte le transazioni, facciamo il checkpoint e poi facciamo ripartire tutte le transazioni: in questo modo nel log ci sarà una sola marca di checkpoint (CKP, {transazioni attive}) che indica che tutte le operazioni svolte prima della marca sono state portate sul buffer. Gli svantaggi sono ovvi: usare questo metodo ferma qualsiasi altra funzionalità del sistema per tutta la durata del checkpoint.
- eseguire il checkpoint in parallelo alle altre transazioni In questo modo nel log ci saranno due marche di checkpoint: (BEGIN_CKP, {transazioni attive}) eventualmente altre scritture fatte da altre transazioni e poi (END-CKP). In questo modo il sistema non si interrompe durante il checkpoint, però non abbiamo garanzia che il risultato delle operazioni eseguite fra l'inizio e la fine del checkpoint siano sul disco. Quindi, la marca di fine checkpoint indica che tutte le operazioni eseguite prima dell'inizio sono sicuramente sul disco.
Rispondi

Torna a “Advanced databases”