Dubbio su appello 16 Giugno

LvxeFQW.jpg

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.

Comments

  • Lucio MessinaLucio Messina Posts: 139
    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.
Sign In or Register to comment.