Τεχνικές Ανάνηψης Περιεχόµενα



Σχετικά έγγραφα
Προχωρημένα Θέματα Βάσεων Δεδομένων

Βάσεις Δεδομένων ΙΙ Ενότητα 3

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

Βάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών

Προχωρημένα Θέματα Βάσεων Δεδομένων

Σημεία ελέγχου (Checkpoints)

Transactions Management. (Διαχείριση Δοσοληψιών)

Αποκατάσταση συστήματος Βάσεις Δεδομένων

PRINCIPLES OF TRANSACTION-ORIENTED DATABASE RECOVERY. Theo Haerder Andreas Reuter. Μαρία Κουτσουλιέρη

Επαναφορά του Συστήματος (Μέρος Α')

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Διαχείριση Δοσοληψιών

Κύρια & Περιφερειακή Μνήµη

Εικονική Μνήμη (Virtual Μemory)

Κατανεμημένες δοσοληψίες

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Κατανεμημένες δοσοληψίες

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (virtual memory)

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

Σηµειώσεις Βάσεων εδοµένων. ιαχείριση οσοληψιών. Γιάννης Θεοδωρίδης. Τµήµα Πληροφορικής, Πανεπιστήµιο Πειραιά.

Επεξεργασία οσοληψιών (συνέχεια)

Επεξεργασία οσοληψιών

Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός)

ηµιουργία αντιγράφων ασφαλείας και επαναφορά Οδηγός χρήσης

Κεφ. 10: Δομές Αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

Αποθήκευση εδομένων. ομή ενός Σ Β. Εισαγωγή Το «εσωτερικό» ενός ΜΕΡΟΣ Β : Η (εσωτερική) αρχιτεκτονική ενός Σ Β είναι σε επίπεδα

Θεµατολόγιο. Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη;

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

Το Πρόβληµα Οµοφωνίας Σύγχρονα Συστήµατα Μεταβίβασης Μηνύµατος Μοντέλο Κατάρρευσης (crash model) Οι διεργασίες µπορούν να σταµατούν να εκτελούνται σε

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΠΛΕ- 027 Μικροεπεξεργαστές

Λειτουργικά Συστήματα (ΗΥ321)

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Οργάνωση Υπολογιστών

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ

Βασικές Έννοιες της Πληροφορικής

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κατανεμημένες δοσοληψίες

Λειτουργικά Συστήματα Η/Υ

Το εσωτερικό ενός Σ Β

Αρχιτεκτονική Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ,

Βάσεις Δεδομένων ΙΙ Ενότητα 1

ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

Κεφάλαιο 5ο: Εντολές Επανάληψης

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Επεξεργασία Ερωτήσεων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Μετακινούμενος Κώδικας (Mobile Code) Κατανεμημένα Συστήματα 1

Επεξεργασία οσοληψιών (συνέχεια)

Μεθόδων Επίλυσης Προβλημάτων

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

Δομή Ηλεκτρονικού υπολογιστή

Βάσεις Δεδομένων ΙΙ. Διάλεξη 4 η Aρχιτεκτονικές ΣΒΔ. Αρχιτεκτονικές Συστημάτων Βάσεων Δεδομένων

Λειτουργικά Συστήματα (ΗΥ321)

Προγραμματισμός Ι (HY120)

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών

Σύστηµα Αρχείων και Καταλόγων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

Δοσοληψίες. Κατανεμημένα Συστήματα

Κατανεμημένες Βάσεις Δεδομένων

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ. Επίπεδα Αφαίρεσης Σ Β. Αποθήκευση Εγγραφών - Ευρετήρια. ρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, Επίπεδο Όψεων.

Συστήματα Διαχείρισης Βάσεων Δεδομένων

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ B.2.M3 Κύρια και Βοηθητική Μνήμη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διαχείριση μνήμης Εργαστηριακές Ασκήσεις

Μάθημα 8: Διαχείριση Μνήμης

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ErmisWIN v & Οδηγίες Τέλους Έτους ( 31/12/2014 )

Σχεδίαση Βάσεων Δεδομένων. Ενότητα 5-Κατανεμημένα συστήματα ΒΔ Μανώλης Μαραγκουδάκης

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Δοσοληψίες. Κατανεμημένα Συστήματα

Consensus and related problems

Λειτουργικά Συστήματα (ΗΥ321)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΕΡΩΤΗΣΕΙΣ ΓΙΑ ΕΠΑΝΑΛΗΨΗ

ΦΥΛΛΟ ΠΛΗΡΟΦΟΡΙΩΝ. Μονάδες μέτρησης χωρητικότητας μνήμης - Η περιφερειακή μνήμη

Transcript:

Τεχνικές Ανάνηψης Περιεχόµενα Εισαγωγή & υποθέσεις εργασίας Αλγόριθµος Write-Ahead Log (WAL) Ανάνηψη τη παρουσία WAL 2

Επίπεδα αποθήκευσης Κυρίως µνήµη RAM, cache Ταχύτητα στην προσπέλαση Τα δεδοµένα χάνονται σε περίπτωση αποτυχίας ευτερεύουσα µνήµη Σκληρός ίσκος, Ταινίες Πιο αργά, λόγω ηλεκτροµηχανικής κίνησης Πιο αξιόπιστα σε επίπεδο αστοχίας Υπόκεινται και αυτά σε αστοχίες όµως 3 Επιπλέον επίπεδα αποθήκευσης Σταθερή αποθήκευση Π.χ., συστήµατα RAID [k αντίγραφα του ιδίου αποθηκευτικού µέσου] Hard-copies 4

Αστοχίες του συστήµατος Κακό πρόγραµµα (µε λάθη, δηλ.) Αστοχία δοσοληψίας (αδιέξοδο, abort από τον χρήστη, κλπ) Αστοχία του συστήµατος (πτώση ρεύµατος, αδιέξοδο λειτουργικού συστήµατος) Αστοχία υλικού (καταστροφή σκληρού δίσκου) Failure: αστοχία ή αποτυχία 5 Read & Write a b read(a,a) A buffer buffer write(b,b) B Main Memory Οι διακεκοµµένες αναπαριστούν λειτουργίες που µπορεί να καθυστερήσουν/ αγνοηθούν Disk 6

Επανάληψη: Τι πάει να πει read(a) ; a είναι µια µεταβλητή του προγράµµατος read(a) σηµαίνει: ιάβασε από το δίσκο την αντίστοιχη µε το a εγγραφή στη βάση, Φέρε την σε κάποιο buffer Αντίγραψέ την στην περιοχή µνήµης του προγράµµατος 7 Επανάληψη... Hard Disk Buffer Program memory Το αντίστοιχο συµβαίνει και µε τη write Όπως έχουµε πει, το a, εν γένει, δεν είναι εγγραφή, αλλά σελίδα στο δίσκο... 8

Εµείς θα ασχοληθούµε µε... Αστοχίες δοσοληψίας (αδιέξοδο, abort από τον χρήστη, κλπ) Αστοχίες του συστήµατος (πτώση ρεύµατος, αδιέξοδο λειτουργικού συστήµατος) Τα αποτελέσµατα τροποποιούνται για να αντιµετωπίσουµε και αστοχίες υλικού... 9 Αυτό µεταφράζεται πρακτικά ως... Τα δεδοµένα από την κυρίως µνήµηχάνονται οριστικά Τα δεδοµένα που έχουν αποθηκευθεί στο σκληρό δίσκο είναι ασφαλή Η Β πιθανώς βρίσκεται σε ασυνεπή µορφή. 10

A: 150 B: 200 «ασυνεπή»; read(a); A := A - 50; write(a); --CRASH-- read(b); B := B + 50; write(b). A: 100 B: 200 A+B=350 A+B=300 11 Σε περίπτωση αποτυχίας... Σκοπός είναι να διατηρήσουµε τη συνέπεια του συστήµατος. Πρέπει να επαναλάβουµε (REDO) όλες τις δοσοληψίες που έκαναν commit Πρέπει να αναιρέσουµε (UNDO) όσες παρενέργειες επέφεραν οι δοσοληψίες που δεν πρόλαβαν να κάνουν commit 12

Περιεχόµενα Εισαγωγή & υποθέσεις εργασίας Αλγόριθµος Write-Ahead Log (WAL) Ανάνηψη τη παρουσία WAL 13 Log (Ιστορικό) Log (Ιστορικό/Ίχνος/Ηµερολόγιο): ένα αρχείο στο σκληρό δίσκο που καταγράφει όλη την ιστορία των ενεργειών που εκτελέστηκαν από το DBMS Ενέργειες: BOT/EOT (Begin/End Of Transaction) INS/UPD/DEL (ήτοι, write) ένα record COMMIT/ABORT µια δοσοληψία UNDO/REDO µια ενέργεια εγγραφής (write) 14

Βασικές έννοιες για το Log Το log ως αρχείο είναι ένα σύνολο από εγγραφές (log records) Κάθε log record χαρακτηρίζεται µονοσήµαντα από ένα Log Sequence Number (LSN). Το σύστηµα εκδίδει αυτόµατα το max(lsn)+1 για κάθε νέα log record 15 Log Record τύπου Write LSN Transaction ID (TID) Σελίδα που κάνουµε update Offset στην εν λόγω σελίδα Μήκος σε bytes που αλλάζουµε Παλιά τιµή Νέα τιµή T1: UPDATE EMP SET ID = 30 WHERE ID = 3 Log Entry: LSN12,T1,PAGE32,0xFFF32,8,3,30 16

εν φτάνουν αυτά PrevLSN: To ακριβώς προηγούµενο LSN της ίδιας δοσοληψίας Τι γίνεται αν αλλάξει σελίδα η εγγραφή; BOT (T1) LSN12,T1, PAGE32, LSN13,T1, PAGE32, BOT (T2) EOT (T1) LSN16,T2, PAGE45, και τα ΕΟΤ/ΒΟΤ έχουν LSN (oops ) 17 Βασική Αρχή Write Ahead Log Προτού γράψεις οτιδήποτε στη Β, καταχώρησε την αντίστοιχη εγγραφή στο log Φυσικά υπάρχουν τεχνικές λεπτοµέρειες... 18

Τι θα πει write ; Hard Disk Πότε; Buffer Άµεσα Program memory Σε κάθε commit; Σε κάθε µια ενέργεια write (ασχέτως commit); Σε τακτά χρονικά διαστήµατα; Κάθε όποτε δεν έχει δουλειά το µηχάνηµα ;... Dirty page: σελίδα που έχει αλλαχθεί στον buffer, αλλά όχι στο σκληρό δίσκο 19 ύο βασικοί τρόποι εγγραφής Steal: επιτρέπουµε µια σελίδα να γραφτεί στο δίσκο, χωρίς να έχει κάνει commit η δοσοληψία που την άλλαξε [No-steal, αν γράφω µόνο committed σελίδες] Force: επιβάλλουµε σε όλες τις σελίδες µιας δοσοληψίας να γραφτούν στο δίσκο, αµέσως µετά το commit [No-Force, αν κάποιες µπορεί και να µη γραφτούν] 20

Στην πράξη: Steal Γράφω µια µη commited σελίδα στο δίσκο, είτε γιατί γέµισαν οι buffers, είτε γιατί αν κάνει commit η δοσοληψία χωρίς να αλλάξει ξανά τη σελίδα κέρδισα σε χρόνο Κι αν αποτύχει η δοσοληψία; Τότε πρέπει να κάνω UNDO στην αλλαγή της σελίδας Dirty bit: κρατάω ένα bit που λέει αν η σελίδα είναι dirty ή όχι 21 Στην πράξη: No-Force εν γράφω µια commited σελίδα στο δίσκο, για να αποφύγω το κόστος εγγραφής (π.χ., λόγω φόρτου του συστήµατος εκείνη τη στιγµή) Κι αν αποτύχει το σύστηµα; Τότε πρέπει να κάνω REDO στην αλλαγή της σελίδας στο δίσκο 22

Write Ahead Log revisited Προτού γράψεις οτιδήποτε στη Β, καταχώρησε την αντίστοιχη εγγραφή στο log Για να γράψεις µια updated σελίδα από το buffer πίσω στο δίσκο, πρέπει στο log (στο δίσκο) να έχουν περαστεί οι παλιές τιµές για τα records της Για να κάνεις commit µια δοσοληψία πρέπει στο log (στο δίσκο) να έχουν γραφτεί όλες οι σχετικές log records 23 Με άλλα λόγια... ΠΡΙΝ γράψω µια σελίδα στη Β, γράφω όλα τα log records που την αφορούν στο δίσκο ΠΡΙΝ κάνω commit µια δοσοληψία, γράφω όλα τα log records που την αφορούν στο δίσκο Προσοχή: τα παραπάνω είναι περιορισµοί ορθότητας και όχι αλγόριθµος 24

Σχόλια Steal: και να πας να κλέψεις στη Β, ΕΝ µπορείς να κλέψεις στο log No-Force: και να µην εξαναγκάσεις τις εγγραφές της Β να γραφούν στο δίσκο, πρέπει να γραφούν όλες οι log records Μην ξεχνάτε ότι και το log περνά από buffering! 25 Και τι κέρδισα; Για να γράψεις µια updated σελίδα από το buffer πίσω στο δίσκο, πρέπει στο log (στο δίσκο) να έχουν περαστεί οι παλιές τιµές για τα records της Σε περίπτωση αποτυχίας της δοσοληψίας, µπορώ να κάνω UNDO Για να κάνεις commit µια δοσοληψία πρέπει στο log (στο δίσκο) να έχουν γραφτεί όλες οι σχετικές log records Σε περίπτωση αποτυχίας του συστήµατος, µπορώ να κάνω REDO 26

Checkpoints Σηµεία ελέγχου Περιοδικά, το σύστηµα κάνει τις εξής ενέργειες: Σταµατά κάθε άλλη ενέργεια Καταγράφει το σύνολο των ενεργών δοσοληψιών Γράφει (flush) όλους τους buffers µε log records, στο δίσκο Γράφει (flush) όλους τους buffers µε records της Β, στο δίσκο Γράφει στο log µια εγγραφή CHK (checkpoint) 27 Οπότε το log θα δείχνει κάπως έτσι... BOT (T1) LSN12,T1, PAGE32, LSN13,T1, PAGE32, BOT (T2) EOT (T1) LSN16,T2, PAGE45, CHK {T2} {T2} είναι το σύνολο των ενεργών δοσοληψιών 28

Checkpoints Sharp checkpoint: το προαναφερθέν είδος checkpoint Fuzzy checkpoint: αντί να σταµατήσει το σύστηµα, γράφει µόνο ποιες είναι οι dirty pages και στέλνει την εγγραφή των σελίδων αυτών στο background. ικαιούµαστε να ξαναπάρουµε checkpoint µόνο όταν η παρασκηνιακή διεργασία τελειώσει. Θεωρήστε sharp checkpoints 29 Περιεχόµενα Εισαγωγή & υποθέσεις εργασίας Αλγόριθµος Write-Ahead Log (WAL) Ανάνηψη τη παρουσία WAL 30

Ανάνηψη αν έχουµε WAL Έστω ότι το σύστηµα αποτυγχάνει και πρέπει να το επαναφέρουµε (ήτοι, να επαναφέρουµε τη Β σε συνεπή µορφή). Η διαδικασία αυτή ονοµάζεται ανάνηψη (recovery) ή ανάκαµψη ή επαναφορά Αν έχουµε χρησιµοποιήσει WAL κατά την κανονική λειτουργία του συστήµατος, η ανάνηψη έχει 3 φάσεις: 1. Ανάλυση 2. UNDO 3. REDO 31 Φάση Ανάλυσης ιαβάζουµε το log από το τελευταίο CHK ως το τέλος Ανακαλύπτουµε νικητές (winners), ήτοι, δοσοληψίες που πρόλαβαν και έκαναν commit µέσα σε αυτό το διάστηµα ηττηµένους (losers), ήτοι δοσοληψίες που είτε δεν πρόλαβαν να κάνουν commit, είτε οι χρήστες τους τις έκαναν abort Εντοπίζουµε τις dirty pages τη στιγµή της αποτυχίας (βλ. στη συνέχεια) 32

T r a n s a c t i o n s Winners & losers Time tc tf T1 T2 T3 T4 Checkpoint (time tc) Source: An Introduction to Database Systems, C.J. Date, p. 381 T5 System failure (time tf) 33 Winners & losers Time tc tf T1 T2 T3 T4 T5 δε µας αφορά winner loser Checkpoint (time tc) System failure (time tf) 34

Φάση UNDO UNDO losers! ιαβάζουµε ανάποδα το log, από το τέλος προς την αρχή Κάθε πράξη που ανήκει σε δοσοληψία loser γίνεται UNDO Προσοχή: µπορεί µια loser να έχει ξεκινήσει πριν το checkpoint! 35 Φάση REDO REDO winners! ιαβάζουµε κανονικά το log, από το σηµείο που κάναµε update την πιο παλιά buffer page ως το τέλος Κάθε πράξη που ανήκει σε δοσοληψία winner γίνεται REDO 36

Ανάνηψη αν έχουµε WAL CHK Αποτυχία LOG BOT παλαιότερης loser δοσοληψία UNDO Πιο παλιά dirty page ANALYSIS REDO 37 Εδώ τι θα κάναµε ; Αποτυχία CHK BOT (T1) LSN12,T1, PAGE32, LSN13,T1, PAGE32, BOT (T2) EOT (T1) LSN16,T2, PAGE45, 38

Πώς εντοπίζω τις dirty pages; Έστω ότι σε κάθε σελίδα κρατάω ένα πεδίο pagelsn που καταγράφει το LSN της τελευταίας ενέργειας που έκανε update κάποιο record στη σελίδα Πώς µπορώ να βρω τις dirty pages όταν ανανήψει το σύστηµα; Τι θα άλλαζε αν δεν κρατούσα αυτή την πληροφορία; 39 Ερωτήσεις κρίσεως... Πώς µπορώ να προφυλαχθώ από αποτυχίες του υλικού [µε βάση όλα τα προηγούµενα]; Τι θα κέρδιζα/έχανα/άλλαζε αν πέρναγα τα updates στο δίσκο, µόνο στο commit [και όχι πιο πριν] ; Τι θα κέρδιζα/έχανα/άλλαζε αν έκανα υποχρεωτικώς flush τις dirty pages στο commit ; 40

Ερωτήσεις κρίσεως Τι θα γίνει αν κατά τη διάρκεια της ανάνηψης το σύστηµα αποτύχει ξανά; Τι θα άλλαζε αν αντί για [παλιά τιµή,νέα τιµή] στο log record έγραφα [παλιά τιµή,διαφορά]; Έχει σηµασία η σειρά των UNDO και REDO; Μέσα σε κάθε µια από αυτές τις φάσεις, έχει σηµασία η σειρά; 41