Κεφάλαιο 1 9

29
Κεφάλαιο 1 9 Τεχνικές Ανάκαμψης Βάσεων Δεδομένων (Recovery)

Upload: alicia

Post on 23-Jan-2016

42 views

Category:

Documents


0 download

DESCRIPTION

Κεφάλαιο 1 9. Τεχνικές Ανάκαμψης Βάσεων Δεδομένων (Recovery). Σκοπός Ανάκαμψης Βάσης Δεδομένων. Η επαναφορά της βάσης στην τελευταία συνεπή κατάσταση πριν την αποτυχία. Η διατήρηση των ιδιοτήτων δοσοληψιών (Ατομικότητα, Συνέπεια, Απομόνωση και Διάρκεια) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Κεφάλαιο 1 9

Κεφάλαιο 19

Τεχνικές Ανάκαμψης Βάσεων Δεδομένων

(Recovery)

Page 2: Κεφάλαιο 1 9

Σκοπός Ανάκαμψης Βάσης Δεδομένων

• Η επαναφορά της βάσης στην τελευταία συνεπή κατάσταση πριν την αποτυχία.

• Η διατήρηση των ιδιοτήτων δοσοληψιών (Ατομικότητα, Συνέπεια, Απομόνωση και Διάρκεια)

Παράδειγμα: Αν το σύστημα αποτύχει πριν μία μεταφορά χρημάτων λάβει χώρα, τότε μπορεί και οι δύο λογαριασμοί να έχουν λάθος τιμή. Επομένως, θα πρέπει η βάση δεδομένων να επανέλθει στην προηγούμενή της κατάσταση.

Page 3: Κεφάλαιο 1 9

Τύποι Αποτυχίας

Αποτυχία Δοσοληψίας: Μία δοσοληψία μπορεί να

αποτύχει λόγω λανθασμένης εισόδου, αδιεξόδου κτλ.

Αποτυχία Συστήματος: λόγω λάθους λειτουργικού

συστήματος, λάθος διευθυνσιοδότησης κτλ.

Αστοχία Υλικού: αστοχία δίσκου, διακοπή παροχής

ενέργειας κτλ.

Page 4: Κεφάλαιο 1 9

Το Ημερολόγιο Συστήματος

Για την επαναφορά των δεδομένων απαιτούνται οι τιμές πριν την αλλαγή (πρότερο αποτύπωμα – BFIM) και οι τιμές μετά την αλλαγή (ύστερο αποτύπωμα – AFIM). Αυτές οι τιμές και επιπρόσθετη πληροφορία αποθηκεύεται στο ημερολόγιο συστήματος. Οι Back P και Next P δείχνουν στην προηγούμενη και επόμενη καταχώρηση της δοσοληψίας στο ημερολόγιο.

T ID Back P Next P Operation Data item BFIM AFIM T1 0 1 T1 1 4 T2 0 8 T1 2 5 T1 4 7 T3 0 9 T1 5 nil

BeginWrite

Read Commit

BeginX

Y M N

X = 200

Y = 100M = 200N = 400

X = 100

Y = 50M = 200N = 400

ReadWrite

Page 5: Κεφάλαιο 1 9

Ενδιάμεση Μνήμη

Τα στοιχεία που έχουν ενημερωθεί αποθηκεύονται πρώτα στην ενδιάμεση μνήμη της βάσης και έπειτα μεταφέρονται στον δίσκο. Η μεταφορά στο δίσκο ελέγχεται από το δυαδικό ψηφίο τροποποίησης (dirty bit) και ένα δυαδικό ψηφίο Pin-Unpin.

Pin-Unpin: Δηλώνει αν μπορεί το μπλοκ να γραφεί στο δίσκο

Modified: Δηλώνει αν ένα στοιχείο έχει τροποποιηθεί

Page 6: Κεφάλαιο 1 9

Steal/No-steal: Μία ενημερωμένη σελίδα της

ενδιάμεσης μνήμης γράφεται στο δίσκο πριν/μετά

την επικύρωση.

Εξαναγκασμός/Μη-εξαναγκασμός: Όλες οι

ενημερωμένες σελίδες μία δοσοληψίας γράφονται

αμέσως/όχι αμέσως όταν η δοσοληψία επικυρωθεί

Steal/No-steal και Force/No-force

Page 7: Κεφάλαιο 1 9

Τύποι Ενημέρωσης Δεδομένων

Απευθείας Ενημέρωση: Αμέσως μόλις ένα στοιχείο ενημερωθεί στην ενδιάμεση μνήμη, το αντίγραφο στο δίσκο ενημερώνεται

Ετεροχρονισμένη Ενημέρωση: Όλα τα ενημερωμένα στοιχεία στην ενδιάμεση μνήμη μεταφέρονται στο δίσκο είτε μετά το πέρας μία δοσοληψίας ή μετά το πέρας ενός σταθερού αριθμού δοσοληψιών.

Σκιώδης Ενημέρωση: Η νέα τιμή ενός στοιχείου δεν αντικαθιστά την παλιά στο δίσκο αλλά γράφεται σε μία νέα θέση.

Άμεση Ενημέρωση: Η εκδοχή στο δίσκο ενός στοιχείου αντικαθίσταται από την εκδοχή που υπάρχει στην ενδιάμεση μνήμη.

Page 8: Κεφάλαιο 1 9

Ανάκαμψη Βάσης Δεδομένων

Αναίρεση (Undo) και Επανάληψη (Redo) Δοσοληψιών

Για την διατήρηση της ατομικότητας χρησιμοποιούμε τις πράξεις:Αναίρεση: Επαναφορά όλων των πρότερων αποτυπωμάτων BFIM) στο δίσκο (διαγραφή των AFIM)Επανάληψη: Επαναφορά όλων των ύστερων αποτυπωμάτων (AFIM) στο δίσκο.Η ανάκαμψη επιτυγχάνεται είτε εκτελώντας μία από τις δύο αυτές πράξεις ή με ένα συνδυασμό τους. Αυτές οι πράξεις καταγράφονται στο ημερολόγιο

Page 9: Κεφάλαιο 1 9

Παράδειγμα Ανάκαμψης

T1 T2 T3read_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) write_item (A)

Page 10: Κεφάλαιο 1 9

Εκτέλεση των Τ1, Τ2 και Τ3 όπως φαίνεται στο ημερολόγιο

A B C D30 15 40 20

[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

Page 11: Κεφάλαιο 1 9

Διαδοχικές Ανακλήσεις

READ(C) READ(A)

READ(D)

WRITE(B)T3

BEGIN READ(B) WRITE(D)WRITE(B)T2BEGIN WRITE(D)READ(A) READ(D)

T1BEGIN

αποτυχία συστήματοςΧρόνος

Απεικόνιση Διαδοχικών Ανακλήσεων

Page 12: Κεφάλαιο 1 9

Προεγγραφή Ημερολογίου

Για άμεσες ενημερώσεις (απευθείας ή ετεροχρονισμένες) θα πρέπει να χρησιμοποιείται αναγκαστικά το ημερολόγιο συστήματος. Αυτό επιτυγχάνεται με το πρωτόκολλο προεγγραφής ημερολογίου:

Για Αναίρεση: Πριν το AFIM γραφτεί στο δίσκο, το BFIM θα πρέπει να γραφεί στο ημερολόγιο και να αποθηκευτεί στο δίσκο.

Για Επανάληψη: Πριν την εκτέλεση της πράξης επικύρωσης της δοσοληψίας, όλα τα AFIM θα πρέπει να γραφούν στο ημερολόγιο και να αποθηκευτούν στο δίσκο.

Page 13: Κεφάλαιο 1 9

Σημεία Ελέγχου

1. Σταματά η εκτέλεση δοσοληψιών προσωρινά2. Γράφονται τα περιεχόμενα της ενδιάμεσης μνήμης3. Η εγγραφή [checkpoint] εισάγεται στο ημερολόγιο4. Επαναφορά κανονικής εκτέλεσης δοσοληψιών

Ανά τακτά χρονικά διαστήματα η βάση δεδομένων αποθηκεύει την ενδιάμεση μνήμη στη βάση ώστε να ελαχιστοποιείται η εργασία σε περίπτωση ανάκαμψης.

Κατά τη διάρκεια ανάκαμψης οι πράξεις Αναίρεσης και Επανάληψης απαιτούνται μόνο για τις εγγραφές μετά την εγγραφή [checkpoint].

Page 14: Κεφάλαιο 1 9

Η T1 αφήνεται ως έχει (οι ενημερώσεις έχουν γραφτεί ήδη στο δίσκο λόγω σημείου ελέγχου)

Η T4 αναιρείται Οι T2 και T3 επαναλαμβάνονται.

Tc Tf

T1

T2

T3

T4

Σημείο Ελέγχου Αποτυχία Συστήματος

Παράδειγμα Σημείου Ελέγχου

Page 15: Κεφάλαιο 1 9

Οι ενημερώσεις γίνονται ως εξής:1. Οι δοσοληψίες αποθηκεύουν τις ενημερώσεις που

κάνουν στο ημερολόγιο2. Στο σημείο επικύρωσης με προεγγραφή

ημερολογίου αυτές οι ενημερώσεις αποθηκεύονται στο δίσκο

Έπειτα από εκκίνηση από αποτυχία το ημερολόγιο χρησιμοποιείται για επανάληψη όλων των δοσοληψιών που επηρεάστηκαν από αυτή την αποτυχία. Αναίρεση δεν είναι απαραίτητη μιας και κανένα AFIM δεν γράφεται στο δίσκο πριν την επικύρωση.

Σχήμα Ανάκαμψης (Ετεροχρονισμένο – Όχι Αναίρεση/Επανάληψη)

Page 16: Κεφάλαιο 1 9

Παράδειγμα για Σύστημα ενός Χρήστη

(a) T1 T2read_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 δεν λαμβάνονται υπόψη.

Page 17: Κεφάλαιο 1 9

Για Συνδρομικό Περιβάλλον

Σε συνδρομικό περιβάλλον απαιτείται ένας μηχανισμός ελέγχου συνδρομικότητας για εγγύηση της απομόνωσης των δοσοληψιών. Σε ανάκαμψη οι εγγραφές μετά το σημείο ελέγχου επαναλαμβάνονται.

T1

T3T4

T5

αποτυχία συστήματοςΧρόνος

T2

t1 t2σημείο ελέγχου

Page 18: Κεφάλαιο 1 9

Παράδειγμα για Συνδρομικό Περιβάλλον

(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) T1 T2 T3 T4read_item (A) read_item (B) 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)

Page 19: Κεφάλαιο 1 9

Ετεροχρονισμένες Ενημερώσεις σε Συνδρομικό Περιβάλλον

Δύο πίνακες απαιτούνται για την υλοποίηση του πρωτοκόλλου:

Ενεργός Πίνακας: Αποθηκεύει όλες τις ενεργές δοσοληψίεςΠίνακας Επικύρωσης: Αποθηκεύει όλες τις δοσοληψίες που έχουν επικυρωθεί (από το τελευταίο σημείο ελέγχου)

Κατά τη διάρκεια ανάκαμψης, όλες οι δοσοληψίες του πίνακα επικύρωσης επαναλαμβάνονται ενώ όλες οι δοσοληψίες του ενεργού πίνακα δεν λαμβάνονται υπόψη.

Page 20: Κεφάλαιο 1 9

Σχήμα Ανάκαμψης (Απευθείας Ενημ. – Αναίρεση/Όχι Επανάληψη)

Σε αυτόν τον αλγόριθμο τα ύστερα αποτυπώματα (AFIM) μιας δοσοληψίας γράφονται στο δίσκο με προεγγραφή ημερολογίου πριν την επικύρωση.

Για αυτό το λόγο ο διαχειριστής ανάκαμψης αναιρεί όλες τις δοσοληψίες. Καμία δοσοληψία δεν επαναλαμβάνεται. Ακόμα και αν μία δοσοληψία έχει ολοκληρώσει και απλά ανέμενε επικύρωση πριν την αποτυχία θα αναιρεθεί κατά τη διάρκεια της ανάκαμψης.

Page 21: Κεφάλαιο 1 9

Τα σχήματα ανάκαμψης αυτής της κατηγορίας εφαρμόζουν επανάληψη και αναίρεση. Απαιτείται έλεγχος συνδρομικότητας και προεγγραφή ημερολογίου. Χρησιμοποιούνται σημεία ελέγχου για ελαχιστοποίηση του φόρτου εργασίας κατά τη διάρκεια ανάκαμψης

1. Αναίρεση: όλες οι δοσοληψίες στον ενεργό πίνακα2. Επανάληψη: όλες οι δοσοληψίες στον πίνακα επικύρωσης

Σχήμα Ανάκαμψης (Απευθείας Ενημ. – Αναίρεση/Επανάληψη)

Page 22: Κεφάλαιο 1 9

Παράδειγμα

Πράξεις Ανάκαμψης σε κάθε περίπτωση:(a) Αναίρεση T0: Το B γίνεται 2000 και το A 1000.

(b) Αναίρεση T1 και επανάληψη T0: Το C γίνεται 700, και έπειτα το A και το B γίνονται 950 και 2050 αντίστοιχα.

(c) Επανάληψη T0 και επανάληψη T1: Τα A και B γίνονται 950 και 2050 αντίστοιχα. Το C γίνεται 600

Παρακάτω φαίνεται το ημερολόγιο σε τρεις χρονικές στιγμές:

Page 23: Κεφάλαιο 1 9

Το AFIM δεν αντικαθιστά στο δίσκο το BFIM αλλά αποθηκεύεται σε κάποιο άλλο σημείο στο δίσκο. Επομένως, κάθε στοιχείο έχει το ύστερο (AFIM) και το πρότερο (BFIM) (Σκιώδες αντίγραφο) αποτύπωμα σε δύο διαφορετικά σημεία στη βάση.

X Y

Βάση Δεδομένων

X' Y'

X και Y: Σκιώδη αντίγραφα στοιχείωνX` και Y`: Τρέχοντα αντίγραφα στοιχείων

Σκιώδης Σελιδοποίηση

Page 24: Κεφάλαιο 1 9

Για τη διαχείριση των στοιχείων αυτών χρησιμοποιούνται δύο ευρετήρια (τρέχων και σκιώδες)

Σελίδα 5 (π)Σελίδα 1Σελίδα 4Σελίδα 2 (π)Σελίδα 3Σελίδα 6Σελίδα 2 (ν)Σελίδα 5 (ν)

123456

Τρέχων Ευρετήριο(αλλαγή στις σελίδες 2, 5)

Σκιώδες Ευρετήριο

123456

Σκιώδης Σελιδοποίηση

Page 25: Κεφάλαιο 1 9

Ο Αλγόριθμος Ανάκαμψης ARIES

Page 26: Κεφάλαιο 1 9

ARIES Το ARIES είναι από τις καλύτερες μεθόδους

ανάκαμψης:

1. Προεγγραφή Ημερολογίου

2. Επαναλαμβανόμενη Ιστορία – ξαναπερνά όλη την ιστορία της βάσης μέχρι το σημείο της κατάρρευσης αναιρώντας τις μη επικυρωμένες

3. Καταγραφή αλλαγών στο ημερολόγιο κατά την αναίρεση – αποφυγή επανάληψης διαδικασίας σε περίπτωση αποτυχίας κατά την ανάκαμψη

Page 27: Κεφάλαιο 1 9

Φάσεις ARIES

Φάση Ανάλυσης: προσδιορισμός ενημερωμένων σελίδων και συνόλου ενεργών δοσοληψιών. Προσδιορισμός σημείου από όπου ξεκινά η επανάληψη

Φάση Επανάληψης: Μόνο οι απαραίτητες πράξεις επανάληψης υλοποιούνται

Φάση Αναίρεσης: Αναιρούνται οι ενεργές δοσοληψίες

Page 28: Κεφάλαιο 1 9

Μηχανισμοί (1) Αύξων αριθμός σειράς στο ημερολόγιο

(LSN): κάθε εγγραφή στο ημερολόγιο έχει το δικό της LSN. Χρησιμοποιείται για να καθορίσει τις αναγκαίες πράξης επανάληψης

Πίνακας Δοσοληψιών: περιέχει ενεργές δοσοληψίες και πληροφορίες σχετικά με αυτές

Πίνακας Τροποποιημένων Σελίδων: περιέχει τις ενημερωμένες σελίδες της ενδιάμεσης μνήμης μαζί με επιπλέον πληροφορίες.

Page 29: Κεφάλαιο 1 9

Μηχανισμοί (2) Ασαφή Σημεία Ελέγχου: Δεν σταματά η

επεξεργασία δοσοληψιών κατά τη διάρκεια της εκτέλεσης του σημείου ελέγχου