Κεφάλαιο 19 Τεχνικές Ανάκαμψης Βάσεων Δεδομένων (Recovery)
Σκοπός Ανάκαμψης Βάσης Δεδομένων Η επαναφορά της βάσης στην τελευταία συνεπή κατάσταση πριν την αποτυχία. Η διατήρηση των ιδιοτήτων δοσοληψιών (Ατομικότητα, Συνέπεια, Απομόνωση και Διάρκεια) Παράδειγμα: Αν το σύστημα αποτύχει πριν μία μεταφορά χρημάτων λάβει χώρα, τότε μπορεί και οι δύο λογαριασμοί να έχουν λάθος τιμή. Επομένως, θα πρέπει η βάση δεδομένων να επανέλθει στην προηγούμενή της κατάσταση.
Τύποι Αποτυχίας Αποτυχία Δοσοληψίας: Μία δοσοληψία μπορεί να αποτύχει λόγω λανθασμένης εισόδου, αδιεξόδου κτλ. Αποτυχία Συστήματος: λόγω λάθους λειτουργικού συστήματος, λάθος διευθυνσιοδότησης κτλ. Αστοχία Υλικού: αστοχία δίσκου, διακοπή παροχής ενέργειας κτλ.
Το Ημερολόγιο Συστήματος Για την επαναφορά των δεδομένων απαιτούνται οι τιμές πριν την αλλαγή (πρότερο αποτύπωμα – BFIM) και οι τιμές μετά την αλλαγή (ύστερο αποτύπωμα – AFIM). Αυτές οι τιμές και επιπρόσθετη πληροφορία αποθηκεύεται στο ημερολόγιο συστήματος. Οι Back P και Next P δείχνουν στην προηγούμενη και επόμενη καταχώρηση της δοσοληψίας στο ημερολόγιο.
Ενδιάμεση Μνήμη Τα στοιχεία που έχουν ενημερωθεί αποθηκεύονται πρώτα στην ενδιάμεση μνήμη της βάσης και έπειτα μεταφέρονται στον δίσκο. Η μεταφορά στο δίσκο ελέγχεται από το δυαδικό ψηφίο τροποποίησης (dirty bit) και ένα δυαδικό ψηφίο Pin-Unpin. Pin-Unpin: Δηλώνει αν μπορεί το μπλοκ να γραφεί στο δίσκο Modified: Δηλώνει αν ένα στοιχείο έχει τροποποιηθεί
Steal/No-steal: Μία ενημερωμένη σελίδα της ενδιάμεσης μνήμης γράφεται στο δίσκο πριν/μετά την επικύρωση. Εξαναγκασμός/Μη-εξαναγκασμός: Όλες οι ενημερωμένες σελίδες μία δοσοληψίας γράφονται αμέσως/όχι αμέσως όταν η δοσοληψία επικυρωθεί Steal/No-steal και Force/No-force
Τύποι Ενημέρωσης Δεδομένων Απευθείας Ενημέρωση: Αμέσως μόλις ένα στοιχείο ενημερωθεί στην ενδιάμεση μνήμη, το αντίγραφο στο δίσκο ενημερώνεται Ετεροχρονισμένη Ενημέρωση: Όλα τα ενημερωμένα στοιχεία στην ενδιάμεση μνήμη μεταφέρονται στο δίσκο είτε μετά το πέρας μία δοσοληψίας ή μετά το πέρας ενός σταθερού αριθμού δοσοληψιών. Σκιώδης Ενημέρωση: Η νέα τιμή ενός στοιχείου δεν αντικαθιστά την παλιά στο δίσκο αλλά γράφεται σε μία νέα θέση. Άμεση Ενημέρωση: Η εκδοχή στο δίσκο ενός στοιχείου αντικαθίσταται από την εκδοχή που υπάρχει στην ενδιάμεση μνήμη.
Ανάκαμψη Βάσης Δεδομένων Αναίρεση (Undo) και Επανάληψη (Redo) Δοσοληψιών Για την διατήρηση της ατομικότητας χρησιμοποιούμε τις πράξεις: Αναίρεση: Επαναφορά όλων των πρότερων αποτυπωμάτων BFIM) στο δίσκο (διαγραφή των AFIM) Επανάληψη: Επαναφορά όλων των ύστερων αποτυπωμάτων (AFIM) στο δίσκο. Η ανάκαμψη επιτυγχάνεται είτε εκτελώντας μία από τις δύο αυτές πράξεις ή με ένα συνδυασμό τους. Αυτές οι πράξεις καταγράφονται στο ημερολόγιο
Παράδειγμα Ανάκαμψης T1T2T3 read_item (A)read_item (B)read_item (C) read_item (D)write_item (B)write_item (B) write_item (D)read_item (D)read_item (A)write_item (A)
Εκτέλεση των Τ1, Τ2 και Τ3 όπως φαίνεται στο ημερολόγιο ABCD [start_transaction, T3] [read_item, T3, C] *[write_item, T3, B, 15, 12]12 [start_transaction,T2] [read_item, T2, B] **[write_item, T2, B, 12, 18]18 [start_transaction,T1] [read_item, T1, A] [read_item, T1, D] [write_item, T1, D, 20, 25]25 [commit, T1] [read_item, T2, D] **[write_item, T2, D, 25, 26] [commit, T1]26 [read_item, T3, A] ---- αποτυχία συστήματος ---- * Η T3 αναιρείται μιας και δεν έφτασε στο σημείο επικύρωσης ** Η T2 αναιρείται μιας και διαβάζει την τιμή του Β που γράφτηκε από την Τ3
Διαδοχικές Ανακλήσεις Απεικόνιση Διαδοχικών Ανακλήσεων
Προεγγραφή Ημερολογίου Για άμεσες ενημερώσεις (απευθείας ή ετεροχρονισμένες) θα πρέπει να χρησιμοποιείται αναγκαστικά το ημερολόγιο συστήματος. Αυτό επιτυγχάνεται με το πρωτόκολλο προεγγραφής ημερολογίου: Για Αναίρεση: Πριν το AFIM γραφτεί στο δίσκο, το BFIM θα πρέπει να γραφεί στο ημερολόγιο και να αποθηκευτεί στο δίσκο. Για Επανάληψη: Πριν την εκτέλεση της πράξης επικύρωσης της δοσοληψίας, όλα τα AFIM θα πρέπει να γραφούν στο ημερολόγιο και να αποθηκευτούν στο δίσκο.
Σημεία Ελέγχου 1. Σταματά η εκτέλεση δοσοληψιών προσωρινά 2. Γράφονται τα περιεχόμενα της ενδιάμεσης μνήμης 3. Η εγγραφή [checkpoint] εισάγεται στο ημερολόγιο 4. Επαναφορά κανονικής εκτέλεσης δοσοληψιών Ανά τακτά χρονικά διαστήματα η βάση δεδομένων αποθηκεύει την ενδιάμεση μνήμη στη βάση ώστε να ελαχιστοποιείται η εργασία σε περίπτωση ανάκαμψης. Κατά τη διάρκεια ανάκαμψης οι πράξεις Αναίρεσης και Επανάληψης απαιτούνται μόνο για τις εγγραφές μετά την εγγραφή [checkpoint].
Η T 1 αφήνεται ως έχει (οι ενημερώσεις έχουν γραφτεί ήδη στο δίσκο λόγω σημείου ελέγχου) Η T 4 αναιρείται Οι T 2 και T 3 επαναλαμβάνονται. TcTc TfTf T1T1 T2T2 T3T3 T4T4 Σημείο ΕλέγχουΑποτυχία Συστήματος Παράδειγμα Σημείου Ελέγχου
Οι ενημερώσεις γίνονται ως εξής: 1. Οι δοσοληψίες αποθηκεύουν τις ενημερώσεις που κάνουν στο ημερολόγιο 2. Στο σημείο επικύρωσης με προεγγραφή ημερολογίου αυτές οι ενημερώσεις αποθηκεύονται στο δίσκο Έπειτα από εκκίνηση από αποτυχία το ημερολόγιο χρησιμοποιείται για επανάληψη όλων των δοσοληψιών που επηρεάστηκαν από αυτή την αποτυχία. Αναίρεση δεν είναι απαραίτητη μιας και κανένα AFIM δεν γράφεται στο δίσκο πριν την επικύρωση. Σχήμα Ανάκαμψης (Ετεροχρονισμένο – Όχι Αναίρεση/Επανάληψη)
Παράδειγμα για Σύστημα ενός Χρήστη (a) T1T2 read_item (A)read_item (B) read_item (D)write_item (B) write_item (D)read_item (D) write_item (D) (b) [start_transaction, T1] [write_item, T1, D, 20] [commit T1] [start_transaction, T2] [write_item, T2, B, 10] [write_item, T2, D, 25] system crash Οι [write_item, …] πράξεις της T1 επαναλαμβάνονται. Οι εγγραφές του T2 δεν λαμβάνονται υπόψη.
Για Συνδρομικό Περιβάλλον Σε συνδρομικό περιβάλλον απαιτείται ένας μηχανισμός ελέγχου συνδρομικότητας για εγγύηση της απομόνωσης των δοσοληψιών. Σε ανάκαμψη οι εγγραφές μετά το σημείο ελέγχου επαναλαμβάνονται.
Παράδειγμα για Συνδρομικό Περιβάλλον (b)[start_transaction, T1] [write_item, T1, D, 20] [commit, T1] [checkpoint] [start_transaction, T4] [write_item, T4, B, 15] [write_item, T4, A, 20] [commit, T4] [start_transaction T2] [write_item, T2, B, 12] [start_transaction, T3] [write_item, T3, A, 30] [write_item, T2, D, 25] αποτυχία συστήματος Οι T2 και T3 δεν λαμβάνονται υπόψη μιας και δεν έχουν επικυρωθεί Η T4 επαναλαμβάνεται μιας και το σημείο επικύρωσης είναι μετά το σημείο ελέγχου (a) T1T2T3T4 read_item (A)read_item (B) read_item (D)write_item (B) write_item (A)write_item (B) write_item (D)read_item (D) read_item (C)read_item (A) write_item (D) write_item (C)write_item (A)
Ετεροχρονισμένες Ενημερώσεις σε Συνδρομικό Περιβάλλον Δύο πίνακες απαιτούνται για την υλοποίηση του πρωτοκόλλου: Ενεργός Πίνακας: Αποθηκεύει όλες τις ενεργές δοσοληψίες Πίνακας Επικύρωσης: Αποθηκεύει όλες τις δοσοληψίες που έχουν επικυρωθεί (από το τελευταίο σημείο ελέγχου) Κατά τη διάρκεια ανάκαμψης, όλες οι δοσοληψίες του πίνακα επικύρωσης επαναλαμβάνονται ενώ όλες οι δοσοληψίες του ενεργού πίνακα δεν λαμβάνονται υπόψη.
Σχήμα Ανάκαμψης (Απευθείας Ενημ. – Αναίρεση/Όχι Επανάληψη) Σε αυτόν τον αλγόριθμο τα ύστερα αποτυπώματα (AFIM) μιας δοσοληψίας γράφονται στο δίσκο με προεγγραφή ημερολογίου πριν την επικύρωση. Για αυτό το λόγο ο διαχειριστής ανάκαμψης αναιρεί όλες τις δοσοληψίες. Καμία δοσοληψία δεν επαναλαμβάνεται. Ακόμα και αν μία δοσοληψία έχει ολοκληρώσει και απλά ανέμενε επικύρωση πριν την αποτυχία θα αναιρεθεί κατά τη διάρκεια της ανάκαμψης.
Τα σχήματα ανάκαμψης αυτής της κατηγορίας εφαρμόζουν επανάληψη και αναίρεση. Απαιτείται έλεγχος συνδρομικότητας και προεγγραφή ημερολογίου. Χρησιμοποιούνται σημεία ελέγχου για ελαχιστοποίηση του φόρτου εργασίας κατά τη διάρκεια ανάκαμψης 1. Αναίρεση: όλες οι δοσοληψίες στον ενεργό πίνακα 2. Επανάληψη: όλες οι δοσοληψίες στον πίνακα επικύρωσης Σχήμα Ανάκαμψης (Απευθείας Ενημ. – Αναίρεση/Επανάληψη)
Παράδειγμα Πράξεις Ανάκαμψης σε κάθε περίπτωση: (a) Αναίρεση T 0 : Το B γίνεται 2000 και το A (b) Αναίρεση T 1 και επανάληψη T 0 : Το C γίνεται 700, και έπειτα το A και το B γίνονται 950 και 2050 αντίστοιχα. (c) Επανάληψη T 0 και επανάληψη T 1 : Τα A και B γίνονται 950 και 2050 αντίστοιχα. Το C γίνεται 600 Παρακάτω φαίνεται το ημερολόγιο σε τρεις χρονικές στιγμές:
Το AFIM δεν αντικαθιστά στο δίσκο το BFIM αλλά αποθηκεύεται σε κάποιο άλλο σημείο στο δίσκο. Επομένως, κάθε στοιχείο έχει το ύστερο (AFIM) και το πρότερο (BFIM) (Σκιώδες αντίγραφο) αποτύπωμα σε δύο διαφορετικά σημεία στη βάση. X και Y: Σκιώδη αντίγραφα στοιχείων X` και Y`: Τρέχοντα αντίγραφα στοιχείων Σκιώδης Σελιδοποίηση
Για τη διαχείριση των στοιχείων αυτών χρησιμοποιούνται δύο ευρετήρια (τρέχων και σκιώδες) Σκιώδης Σελιδοποίηση
Ο Αλγόριθμος Ανάκαμψης ARIES
ARIES Το ARIES είναι από τις καλύτερες μεθόδους ανάκαμψης: 1.Προεγγραφή Ημερολογίου 2.Επαναλαμβανόμενη Ιστορία – ξαναπερνά όλη την ιστορία της βάσης μέχρι το σημείο της κατάρρευσης αναιρώντας τις μη επικυρωμένες 3.Καταγραφή αλλαγών στο ημερολόγιο κατά την αναίρεση – αποφυγή επανάληψης διαδικασίας σε περίπτωση αποτυχίας κατά την ανάκαμψη
Φάσεις ARIES Φάση Ανάλυσης: προσδιορισμός ενημερωμένων σελίδων και συνόλου ενεργών δοσοληψιών. Προσδιορισμός σημείου από όπου ξεκινά η επανάληψη Φάση Επανάληψης: Μόνο οι απαραίτητες πράξεις επανάληψης υλοποιούνται Φάση Αναίρεσης: Αναιρούνται οι ενεργές δοσοληψίες
Μηχανισμοί (1) Αύξων αριθμός σειράς στο ημερολόγιο (LSN): κάθε εγγραφή στο ημερολόγιο έχει το δικό της LSN. Χρησιμοποιείται για να καθορίσει τις αναγκαίες πράξης επανάληψης Πίνακας Δοσοληψιών: περιέχει ενεργές δοσοληψίες και πληροφορίες σχετικά με αυτές Πίνακας Τροποποιημένων Σελίδων: περιέχει τις ενημερωμένες σελίδες της ενδιάμεσης μνήμης μαζί με επιπλέον πληροφορίες.
Μηχανισμοί (2) Ασαφή Σημεία Ελέγχου: Δεν σταματά η επεξεργασία δοσοληψιών κατά τη διάρκεια της εκτέλεσης του σημείου ελέγχου