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



Σχετικά έγγραφα
Διαχείριση Δοσοληψιών

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων 2. Φροντιστήριο Δοσοληψίες Τεχνικές ελέγχου συνδρομικότητας. Ημερ: 05/5/2009 Ακ.Έτος

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

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

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

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

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

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

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

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

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

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

Συναλλαγές. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών. Συναλλαγές. Βάσεις Δεδομένων ΙΙ

ΚΕΦΑΛΑΙΟ 1 ΣΥΝΑΛΛΑΓΕΣ ΚΑΙ ΕΛΕΓΧΟΣ ΤΑΥΤΟΧΡΟΝΙΣΜΟΥ

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

Θέματα Υλοποίησης Σχεσιακών ΣΔΒΔ

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

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

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

Έλεγχος Ταυτοχρονισμού

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

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

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

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

Κεφάλαιο 13 Δοσοληψίες

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

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

Έλεγχος Ταυτοχρονισμού

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

Ιδιοκτησία Αντικειµένου

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

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

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

ΕΥΧΑΡΙΣΤΙΕΣ. της εφαρµογής που υλοποιήσαµε, αλλά και προτάσεις για µελλοντικές εφαρµογές µε βάση την τεχνογνωσία που αποκτήσαµε.

Επαναληπτικές ασκήσεις

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

Έλεγχος Ταυτοχρονισμού

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

Επιµέλεια Θοδωρής Πιερράτος

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

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

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

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

Κατανεμημένα Συστήματα με Java. Ενότητα # 7: Ατομικές συναλλαγές Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

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

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

Τεχνικές Αναπαράστασης αλγορίθµων Ψευδοκώδικας Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή Επανάληψη)

Τεχνικές Ελέγχου Συνδροµικότητας

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

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

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

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

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Εγχειρίδιο Χρήστη - Μαθητή

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

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

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

Βάσεις Δεδομένων ΙΙ. Διάλεξη 2 η Tεχνικές Ελέγχου Συνδρομικότητας

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

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

Πανεπιστήµιο Θεσσαλίας

Εγχειρίδιο Φοιτητών. 1. Εισαγωγή

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Χρονοδιάγραμμα/Χρονοπρόγραμμα

8. Λεξιλόγιο μιας γλώσσας είναι όλες οι ακολουθίες που δημιουργούνται από τα στοιχεία του αλφαβήτου της γλώσσας, τις λέξεις.

ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΡΩΤΗΣΕΩΝ

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

FAIL PASS PASS οριακά

ΗΥ360 Αρχεία και Βάσεις εδοµένων

Transcript:

Σηµειώσεις Βάσεων εδοµένων ιαχείριση οσοληψιών Γιάννης Θεοδωρίδης Τµήµα Πληροφορικής, Πανεπιστήµιο Πειραιά http://isl.cs.unipi.gr/db/ version: 2006-11-28 Περιεχόµενα Ορισµός της δοσοληψίας Καταστάσεις µιας δοσοληψίας Υλοποίηση της Ατοµικότητας και της ιάρκειας Συνδροµικές εκτελέσεις (concurrency) Ανάκαµψη δοσοληψιών (recovery) Υλοποίηση της Αποµόνωσης Έλεγχος σειριοποιησιµότητας Βασική πηγή διαφανειών: Silberschatz et al., Database System Concepts, 4/e Μετάφραση στα Ελληνικά: Γιάννης Θεοδωρίδης, 2002-06. http://isl.cs.unipi.gr/db ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 1

Ορισµός της δοσοληψίας Μια δοσοληψία ή συναλλαγή (transaction) είναι ένα τµήµα της εκτέλεσης προγράµµατος, που προσπελαύνει και πιθανόν ενηµερώνει διάφορα αντικείµενα δεδοµένων. Μια δοσοληψία πρέπει να βλέπει µια συνεπή βάση και όταν επικυρωθεί η δοσοληψία, ηβάσηδεδοµένων πρέπει να είναι πάλι συνεπής. Κατά τη διάρκεια της δοσοληψίας η βάση µπορεί να είναι ασυνεπής. υο βασικά θέµαταπρέπεινααντιµετωπιστούν: ιαφόρων ειδών αποτυχίες, όπως αποτυχίες υλικού και πτώσεις συστήµατος (crash) Ησυνδροµική εκτέλεση πολλαπλών δοσοληψιών. 3 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ιδιότητες ACID Γιαναπροστατέψουµε την ακεραιότητα των δεδοµένων, το σύστηµα της βάσης δεδοµένων πρέπει να εγγυάται: Ατοµικότητα (Atomicity). Είτε όλες οι πράξεις της δοσοληψίας ανακλώνται στη βάση δεδοµένων είτε καµία. Συνέπεια (Consistency). Η εκτέλεση της δοσοληψίας σε αποµόνωση προστατεύει τη συνέπεια της βάσης δεδοµένων. Αποµόνωση (Isolation). Μολονότι πολλαπλές δοσοληψίες µπορεί να εκτελούνται συνδροµικά, κάθε δοσοληψία πρέπει να αγνοεί τις υπόλοιπες συνδροµικές δοσοληψίες. Τα ενδιάµεσα αποτελέσµατα µιας δοσοληψίας πρέπει να «κρύβονται» από άλλες δοσοληψίες που εκτελούνται συνδροµικά. ιάρκεια (Durability). Αφού µια δοσοληψία ολοκληρωθεί επιτυχώς, οι αλλαγές που έχει κάνει στη βάση δεδοµένων υπάρχουν, ακόµα και αν προκύψουν αποτυχίες του συστήµατος. 4 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 2

Παράδειγµα µεταφοράς κεφαλαίου (1) οσοληψία για τη µεταφορά 50 από το λογαριασµό A στο λογαριασµό B: 1. read(a) 2. A := A 50 3. write(a) 4. read(b) 5. B := B + 50 6. write(b) Απαίτηση συνέπειας: το άθροισµα τωνa και B δεν αλλάζει µε την εκτέλεση της δοσοληψίας. Απαίτηση ατοµικότητας: εάν η δοσοληψία αποτύχει µετά το βήµα 3 και πριν το βήµα 6, το σύστηµα πρέπει να διαβεβαιώνει ότι οι αλλαγές που έγιναν δεν αντανακλώνται στη βάση, αλλιώς θα οδηγηθούµε σεασυνεπή βάση δεδοµένων. 5 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Παράδειγµα µεταφοράς κεφαλαίου (2) (συν.) Απαίτηση διάρκειας: µόλις ο χρήστης ενηµερωθεί ότι η δοσοληψία έχει ολοκληρωθεί (δηλ, έχει γίνει η µεταφορά των 50 ), οι αλλαγές στη βάση δεδοµένων πρέπει να παραµείνουν παρά τις οποιεσδήποτε αποτυχίες. Απαίτηση αποµόνωσης: εάν µεταξύ των βηµάτων 3 και 6, επιτραπεί σε µια άλλη δοσοληψία να προσπελάσει τη µερικώς ενηµερωµένη βάση, εκείνη θα δει µιαασυνεπήβάσηδεδοµένων (το άθροισµα A + B θα είναι µικρότερο από όσο θα έπρεπε να είναι). Μπορούµε να εγγυηθούµε την αποµόνωση, αν εκτελέσουµε τις δοσοληψίες σειριακά, δηλαδή τη µια µετά την άλλη. Παρ όλα αυτά, η συνδροµική εκτέλεση πολλαπλών δοσοληψιών έχει σηµαντικά πλεονεκτήµατα, όπως θα δούµε. 6 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 3

Καταστάσεις µιας δοσοληψίας (1) Ενεργή (Active), η αρχική κατάσταση. Η δοσοληψία παραµένει σε αυτήν την κατάσταση όσο εκτελείται. Μερικώς επικυρωµένη (Partially committed), µετά την εκτέλεση και της τελευταίας εντολής. Αποτυχηµένη (Failed), µετάτηδιαπίστωσηότιδεµπορεί να προχωρήσει η κανονική εκτέλεση. Ακυρωµένη (Aborted), αφού έχει υποχωρήσει η δοσοληψία (rollback) και η βάση έχει επιστρέψει στην κατάσταση που ήταν πριν την έναρξη της δοσοληψίας. Υπάρχουν τώρα δυο δυνατότητες: Επανέναρξη της δοσοληψίας µόνο αν δεν υπάρχει κάποιο εσωτερικό λογικό λάθος «Θανάτωση» της δοσοληψίας. Επικυρωµένη (Committed), µετά την επιτυχή ολοκλήρωση. 7 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Καταστάσεις µιας δοσοληψίας (2) 8 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 4

Υλοποίηση ατοµικότητας και διάρκειας (1) Το τµήµα διαχείρισης ανάκαµψηςενόςσυστήµατος βάσης δεδοµένων υλοποιεί την υποστήριξη της ατοµικότητας και της διάρκειας. Το σχήµα shadow-database: Υποθέτει ότι µόνο µια δοσοληψία είναι ενεργή µια χρονική στιγµή. Ένας δείκτης που ονοµάζεται db_pointer δείχνει συνεχώς στο τρέχον συνεπέςαντίγραφοτηςβάσης. Όλες οι ενηµερώσεις γίνονται στο αντίγραφο-σκιά (shadow copy) της βάσης και ο db_pointer ετοιµάζεται ώστε να δείχνει στο ενηµερωµένο αντίγραφο-σκιά µόνο αφού η δοσοληψία µερικώς επικυρωθεί και όλες οι ενηµερωµένες σελίδες αντανακλαστούν στο δίσκο. Στην περίπτωση αποτυχίας της δοσοληψίας, µπορεί να χρησιµοποιηθεί το παλιό συνεπές αντίγραφο που δείχνεται από τον db_pointer και το αντίγραφο σκιά µπορεί να διαγραφεί. 9 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Υλοποίηση ατοµικότητας και διάρκειας (2) Το shadow-database σχήµα: Υποθέτειότιοιδίσκοιδεναποτυγχάνουν Είναι χρήσιµο π.χ. για κειµενογράφους, αλλά ΕΝ είναι αποδοτικό για µεγάλες βάσεις δεδοµένων: η εκτέλεση µιας απλής δοσοληψίας απαιτεί την αντιγραφή ολόκληρης της βάσης δεδοµένων. 10 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 5

Συνδροµικές εκτελέσεις Πολλαπλές δοσοληψίες µπορούν να τρέχουν συνδροµικά στο σύστηµα. Τα πλεονεκτήµατα που προκύπτουν είναι: Αύξηση της εκµετάλλευσης του επεξεργαστή και του δίσκου, που οδηγεί σε καλύτερη ρυθµαπόδοση (throughput) της δοσοληψίας: µια δοσοληψία µπορεί να χρησιµοποιεί τη CPU την ώρα που µια άλλη διαβάζει από ή γράφει στο δίσκο. Μείωση του µέσου χρόνου απόκρισης για δοσοληψίες: µικρές δοσοληψίες δε χρειάζεται να περιµένουν να τελειώσουν µεγάλες δοσοληψίες. Σχήµατα ελέγχου συνδροµικότητας µηχανισµοί για την επίτευξη αποµόνωσης, δηλ, µηχανισµοί ελέγχου της αλληλεπίδρασης µεταξύ των συνδροµικών δοσοληψιών µε στόχο την αποφυγή της καταστροφής της συνέπειας της βάσης δεδοµένων. 11 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Χρονοπρογράµµατα Χρονοπρογράµµατα (Schedules): ακολουθίες που δηλώνουν τη χρονολογική σειρά µε την οποία εκτελούνται εντολές από συνδροµικές δοσοληψίες Ένα χρονοπρόγραµµα για ένα σύνολο από δοσοληψίες πρέπει: να αποτελείται από το σύνολο των εντολών αυτών των δοσοληψιών να διατηρεί τη σειρά µε την οποία εµφανίζονται οι εντολές σε κάθε δοσοληψία ξεχωριστά. 12 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 6

Παράδειγµα χρονοπρογράµµατος (1) Έστω η T1 µεταφέρει 50 από το A στο B και η T2 αφαιρεί το 10% του A και το µεταφέρει στο B. S 1 Το χρονοπρόγραµµα S1 είναι σειριακό, µε τηνt1 να προηγείται της T2. 13 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Παράδειγµα χρονοπρογράµµατος (2) Έστω T1 και T2 οι δοσοληψίες που ορίστηκαν προηγουµένως. S 2 Το χρονοπρόγραµµα S2 δεν είναι σειριακό, αλλά παρόλα αυτά είναι ισοδύναµο µε το(σειριακό) S1. Τόσο στο S1 όσο και στο S2, διατηρείται το άθροισµα A + B 14 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 7

Παράδειγµα χρονοπρογράµµατος (3) S 3 Αντίθετα, το χρονοπρόγραµµα S3 δεν είναι ισοδύναµο µε τοs1 εν διατηρεί την τιµή του αθροίσµατος A + B. 15 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Σειριοποιησιµότητα Βασική υπόθεση Κάθε δοσοληψία διατηρεί τη συνέπεια της βάσης δεδοµένων. Συνεπώς, η σειριακή εκτέλεση ενός συνόλου δοσοληψιών διατηρεί τη συνέπεια της βάσης δεδοµένων. Ένα (πιθανώς συνδροµικό) χρονοπρόγραµµα είναι σειριοποιήσιµο (serializable) εάν είναι ισοδύναµο µε ένα σειριακό χρονοπρόγραµµα. Στη συνέχεια θα µελετήσουµε ένα είδος ισοδυναµίας χρονοπρογραµµάτων, τη σειριοποιησιµότητα βάσει συγκρούσεων (conflict serializability) Περιοριζόµαστε στις λειτουργίες read και write. 16 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 8

Σειριοποιησιµότητα βάσει συγκρούσεων (1) Οι εντολές l i και l j των δοσοληψιών T i και T j αντιστοίχως, συγκρούονται εάν και µόνο αν υπάρχει κάποιο αντικείµενο Q που προσπελαύνεται τόσο από την l i όσο και από την l j, και τουλάχιστον µια από αυτές τις εντολές γράφει στο Q. 1. l i = read(q), l j = read(q). l i και l j δε συγκρούονται. 2. l i = read(q), l j = write(q). Συγκρούονται. 3. l i = write(q), l j = read(q). Συγκρούονται. 4. l i = write(q), l j = write(q). Συγκρούονται. ιαισθητικά, µια σύγκρουση µεταξύ των l i και l j αναγκάζει µια (λογική) προσωρινή αναδιάταξη µεταξύ τους. Εάν οι l i και l j είναι συνεχόµενες σε ένα χρονοπρόγραµµα και δεν συγκρούονται, τα αποτελέσµατά τους θα παρέµεναν τα ίδια ακόµα κιανείχαν ανταλλάξει θέσεις στο χρονοπρόγραµµα. 17 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Σειριοποιησιµότητα βάσει συγκρούσεων (2) Εάν ένα χρονοπρόγραµµα S µπορεί να µετασχηµατιστεί σε ένα χρονοπρόγραµµα S µε µια σειρά από αντιµεταθέσεις µη συγκρουόµενων εντολών, λέµε ότι τα S και S είναι ισοδύναµα βάσει συγκρούσεων (conflict equivalent). Λέµεότιέναχρονοπρόγραµµα S είναι σειριοποιήσιµο βάσει συγκρούσεων (conflict serializable), εάν είναι ισοδύναµο βάσει συγκρούσεων µε ένα σειριακό χρονοπρόγραµµα. Παράδειγµα χρονοπρογράµµατος που δεν είναι σειριοποιήσιµο βάσει συγκρούσεων: T3 T4 read(q) write(q) write(q) 18 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 9

Σειριοποιησιµότητα βάσει συγκρούσεων (3) Το χρονοπρόγραµµα S2 (βλ. προηγουµένως) µπορεί να µετασχηµατιστεί στο S1, ένα σειριακό χρονοπρόγραµµα όπουηt2 ακολουθεί την T1, µε µια σειρά από αντιµεταθέσεις µη συγκρουόµενων εντολών. Εποµένως, το S2 είναι σειριοποιήσιµο βάσει συγκρούσεων. 19 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Συνδροµικότητα βασισµένη σε κλειδιά (1) Κλείδωµα είναι ένας µηχανισµός για τον έλεγχο της συνδροµικής προσπέλασης σε ένα αντικείµενο δεδοµένων. Τα αντικείµενα µιας Β µπορούν να κλειδωθούν µε δυο τρόπους: Αποκλειστικός - exclusive (X) τρόπος. Το αντικείµενο µπορεί και να διαβαστεί και να γραφεί. Το κλειδί γραφής X-lock ζητείται µε χρήσητης lock-x αίτησης. ιαµοιραζόµενος - shared (S) τρόπος. Το αντικείµενο µπορεί µόνο να διαβαστεί. Το κλειδί ανάγνωσης S-lock ζητείται µε χρήσητηςlock-s αίτησης. Οι αιτήσεις κλειδώµατος γίνονται από το διαχειριστή ελέγχου συνδροµικότητας. Μια δοσοληψία µπορεί να προχωρήσει µόνο αφού ικανοποιηθεί η αίτηση κλειδώµατος που έχει κάνει. 20 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 10

Συνδροµικότητα βασισµένη σε κλειδιά (2) Πίνακας συµβατότητας κλειδωµάτων Σε µια δοσοληψία µπορεί να παραχωρηθεί ένα κλειδί, εάν αυτό είναι συµβατό µε κλειδιά που έχουν ήδη παραχωρηθεί (σε άλλες δοσοληψίες). Πολλές δοσοληψίες µπορούν να διατηρούν κλειδιά S για ένα αντικείµενο, αλλά αν µια δοσοληψία πάρει κλειδί X, σε καµιά άλλη δοσοληψία δεν µπορεί να παραχωρηθεί κλειδί, είτε S είτε X. Εάν δεν µπορεί να παραχωρηθεί κλειδί, η δοσοληψία περιµένει έως ότου ελευθερωθούν όλα τα µη συµβατά κλειδιά που διατηρούνται από άλλες δοσοληψίες. Στη συνέχεια τής παραχωρείται το κλειδί που έχει ζητήσει. 21 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Συνδροµικότητα βασισµένη σε κλειδιά (3) Παράδειγµα εκτέλεσης κλειδώµατος από µια δοσοληψία: T2: lock-s(a); read (A); unlock(a); lock-s(b); read (B); unlock(b); display(a+b) Ένα τέτοιο σχήµα απόδοσης κλειδιών δεν µπορεί να εγγυηθεί τη σειριοποιησιµότητα εάν το Α και το Β ενηµερωθούν µεταξύ της ανάγνωσης των A και B, το απεικονιζόµενο άθροισµα Α+Β θα είναι λάθος. 22 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 11

Συνδροµικότητα βασισµένη σε κλειδιά (4) Θεωρήστε το ακόλουθο «παράθυρο» ενός χρονοπρογράµµατος Ούτε η T3 ούτε η T4 µπορούν να προχωρήσουν ηεκτέλεσητουlock-s(b) αναγκάζει την T4 να περιµένει την T3 να ελευθερώσει το κλειδί της στο B, ενώ η εκτέλεση του lock-x(a) αναγκάζει την T3 να περιµένει την T4 ναελευθερώσειτοκλειδίτηςστοa. S 4 Μια τέτοια κατάσταση ονοµάζεται αδιέξοδο (deadlock). Για την αντιµετώπιση του αδιεξόδου, µια από τις T3 και T4 πρέπει να υποχωρήσει (rollback), ώστε τα κλειδιά που κατέχει να ελευθερωθούν. 23 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Συνδροµικότητα βασισµένη σε κλειδιά (5) Το ενδεχόµενο για αδιέξοδα δεν µπορεί να αποκλειστεί. Τα αδιέξοδα είναι ένα αναγκαίο κακό. Λιµοκτονία (starvation) µπορεί επίσης να προκύψει εάν ο διαχειριστής ελέγχου συνδροµικότητας είναι κακοσχεδιασµένος. Για παράδειγµα: Μια δοσοληψία µπορεί να περιµένει για ένα X-lock σε ένα αντικείµενο, ενώ µια ακολουθία από άλλες δοσοληψίες αιτούν και αποκτούν ένα S-lock στο ίδιο αντικείµενο. Η ίδια δοσοληψία ακυρώνεται (rollback) κατ επανάληψη εξαιτίας αδιεξόδων. Ο διαχειριστής ελέγχου συνδροµικότητας µπορεί να σχεδιαστεί έτσι ώστε να αποτρέπει τις καταστάσεις λιµοκτονίας. 24 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 12

Έλεγχος σειριοποιησιµότητας Έστω χρονοπρόγραµµα ενός συνόλου δοσοληψιών T 1, T 2,..., T n Γράφος προβαδίσµατος (precedence graph) ένας κατευθυνόµενος γράφος όπου οι κορυφές είναι οι δοσοληψίες (ονόµατα). Σχεδιάζουµε µια ακµή απότηνt i στην T j εάν οι δυο δοσοληψίες συγκρούονται και η T i προσπέλασε το αντικείµενο στο οποίο συγκρούονται νωρίτερα. Μπορεί να προσθέτουµε µια ετικέτα στην ακµή µε τοόνοµα του αντικειµένου x που προσπελάστηκε. y 25 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Παράδειγµα γράφουπροβαδίσµατος T 1 T 2 T 3 T 4 T 5 read(x) read(y) read(z) read(v) read(w) write(w) read(y) write(y) write(z) read(u) read(y) write(y) read(z) write(z) read(u) write(u) Γράφος προβαδίσµατος για το Χρονοπρόγραµµα S Y T 1 T 2 Z Z Y Y T T 4 3 Z 26 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 13

Έλεγχος σειριοποιησιµότητας βάσει συγκρούσεων Ένα χρονοπρόγραµµα είναι σειριοποιήσιµο βάσει συγκρούσεων αν και µόνο αν ο αντίστοιχος γράφος προβαδίσµατος είναι ακυκλικός. Οι συνήθεις αλγόριθµοι εντοπισµού κύκλων απαιτούν χρόνο Ο(n 2 ), όπου n είναι ο αριθµός των κορυφών του γράφου. Εάν ο γράφος προβαδίσµατος είναι ακυκλικός, η σειρά σειριοποιησιµότητας µπορεί να βρεθεί µε µια τοπολογική ταξινόµηση του γράφου. Για παράδειγµα µια σειρά σειριοποιησιµότητας για το χρονοπρόγραµµα S θα ήταν: Γράφος προβαδίσµατος για το Χρονοπρόγραµµα S Y T 1 T 2 Z Z Y Y T T 4 3 Z T 5 T 1 T 3 T 2 T 4 27 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Πρωτόκολλο κλειδώµατος 2 φάσεων (1) Εγγυάται χρονοπρογράµµατα σειριοποιήσιµα βάσει συγκρούσεων και αποτελείται από 2 φάσεις (2 phase locking 2PL) Φάση 1(εξάπλωσης) Η δοσοληψία µπορεί να δεσµεύει κλειδιά αλλά δεν µπορεί να ελευθερώσει κλειδιά. Φάση 2(συρρίκνωσης) Η δοσοληψία µπορεί να ελευθερώνει κλειδιά αλλά δεν µπορεί να δεσµεύσει κλειδιά. Το πρωτόκολλο 2PL εγγυάται σειριοποιησιµότητα. Μπορεί να αποδειχθεί ότι οι δοσοληψίες µπορούν να σειριοποιηθούν µε τησειρά των σηµείων κλειδώµατός τους - lock points Σηµείο κλειδώµατος λέγεται το χρονικό σηµείο στο οποίο η δοσοληψία απαίτησε το τελευταίο της κλειδί. 28 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 14

Πρωτόκολλο κλειδώµατος 2 φάσεων (2) Το πρωτόκολλο 2PL δεν εγγυάται την αποτροπή αδιεξόδων. Είναι πιθανό να οδηγηθούµε σε διαδοχικές υποχωρήσεις (cascading roll-back). Για την αποφυγή αυτού του ενδεχοµένου, υπάρχουν δύο παραλλαγές πρωτοκόλλου 2PL: αυστηρό πρωτόκολλο δυο φάσεων (strict 2PL): µια δοσοληψία πρέπει να διατηρήσει όλα τα κλειδιά γραφής που έχει δεσµεύσει έως ότου είτε επικυρωθεί είτε ακυρωθεί. άκαµπτο (ακόµη πιοαυστηρό) πρωτόκολλο δυο φάσεων (rigorous 2PL): όλατακλειδιά(ανάγνωσης ή γραφής) διατηρούνται έως την επικύρωση ή ακύρωση. Σε αυτό το πρωτόκολλο οι δοσοληψίες µπορούν να σειριοποιηθούν µε τη σειρά που επικυρώνονται. 29 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Υλοποίηση των κλειδωµάτων (1) Μπορεί να υλοποιηθεί ένας ιαχειριστής κλειδωµάτων ως µια ξεχωριστή διαδικασία στην οποία οι δοσοληψίες στέλνουν αιτήσεις κλειδώµατος και ξεκλειδώµατος. Ο διαχειριστής κλειδωµάτων απαντά σε µια αίτηση κλειδώµατος στέλνοντας ένα µήνυµα παραχώρησης κλειδιού (ή ένα µήνυµα ζητώντας από τη δοσοληψία να κάνει rollback, στην περίπτωση αδιεξόδου). Η αιτούσα δοσοληψία περιµένει έως ότου απαντηθεί η αίτησή της. Ο διαχειριστής κλειδωµάτων συντηρεί µια δοµή δεδοµένων, που λέγεται πίνακας κλειδιών (lock table), για την καταγραφή των παραχωρηµένων κλειδιών και των εκκρεµών αιτήσεων. Ο πίνακας κλειδωµάτων υλοποιείται συνήθως ως ένας πίνακας κατακερµατισµού κύριας µνήµης µε δεικτοδότηση στο όνοµα του αντικειµένου δεδοµένων που κλειδώνεται. 30 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 15

Υλοποίηση των κλειδωµάτων (2) Πίνακας Κλειδωµάτων Τα µαύρα τετράγωνα δηλώνουν παραχωρηµένα κλειδιά, τα άσπρα τετράγωνα δηλώνουν αιτήσεις που περιµένουν. Κάθε νέα αίτηση κλειδώµατος προστίθεται στο τέλος της ουράς των αιτήσεων και το ζητούµενο κλειδί παραχωρείται αν είναι συµβατό µεόλα τα προηγούµενα κλειδιά. Μια αίτηση ξεκλειδώµατος επιδρά στην αντίστοιχη αίτηση κλειδώµατος (διαγράφεται) και στις εκκρεµείς αιτήσεις (ελέγχεται το εάν µπορούν να ικανοποιηθούν). 31 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ανάκαµψη δοσοληψιών (1) Ανάγκη αντιµετώπισης της επίδρασης των αποτυχιών των δοσοληψιών στην περίπτωση συνδροµικών δοσοληψιών. Ανακάµψιµο χρονοπρόγραµµα εάν µια δοσοληψία Tj διαβάζει ένα αντικείµενο που έχει προηγουµένως γραφτεί από µια δοσοληψία T i, η λειτουργία επικύρωσης (commit) της T i εµφανίζεται πριν τη λειτουργία επικύρωσης της T j. Το χρονοπρόγραµµα S5 είναι µη ανακάµψιµο εάνηt9 επικυρωθεί αµέσως µετά την ανάγνωση. Εάν η T8 ακυρωθεί, η T9 θα έχει διαβάσει (και πιθανότατα θα έχει παρουσιάσει στο χρήστη) µια µη συνεπή κατάσταση της βάσης. Τα Σ Β πρέπει να εξασφαλίζουν ότι τα χρονοπρογράµµατα είναι ανακάµψιµα. S 5 32 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 16

Ανάκαµψη δοσοληψιών (2) ιαδοχικές υποχωρήσεις (Cascading rollbacks) ηαποτυχία µίας δοσοληψίας οδηγεί σε µια σειρά από υποχωρήσεις (rollbacks) και άλλων δοσοληψιών. Ας θεωρήσουµε το ακόλουθο χρονοπρόγραµµαόπουκαµιά δοσοληψία δεν έχει ακόµα επικυρωθεί(συνεπώς το χρονοπρόγραµµα είναι ανακάµψιµο). Εάν η T10 αποτύχει, τότε οι T11 και T12 πρέπει επίσης S 6 να κάνουν rollback. Τέτοιου είδους σενάρια µπορεί να οδηγήσουν στην ακύρωση αρκετής δουλειάς που έχει ήδη γίνει Ένα επιθυµητό χαρακτηριστικό είναι να έχουµε χρονοπρογράµµατα χωρίς υποχωρήσεις (Cascadeless) 33 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Κατηγοριοποίηση αποτυχιών Αποτυχία δοσοληψίας : Το Σ Β πρέπει να τερµατίσει µια ενεργή δοσοληψία εξαιτίας µιας λανθασµένης συνθήκης (π.χ. αδιέξοδο). Πτώση συστήµατος (system crash): µια απώλεια ισχύος ή κάποια άλλη αποτυχία λογισµικού ή υλικού προκαλεί πτώση συστήµατος. Παραδοχή Fail-stop: τα περιεχόµενα της µόνιµης αποθήκευσης υποθέτουµε πως δεν αλλοιώνονται από µια πτώση συστήµατος. Αποτυχία µέσου αποθήκευσης (π.χ. δίσκου): µια καταστροφή της κεφαλής ήπαρόµοια αποτυχία του δίσκου καταστρέφει ολόκληρο ή ένα µέρος της αποθηκευµένης πληροφορίας στο δίσκο. τα συστήµατα δίσκων χρησιµοποιούν αθροίσµατα ελέγχου (checksums). 34 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 17

Αλγόριθµοι ανάκαµψης Οι αλγόριθµοι ανάκαµψης (recovery) είναι τεχνικές που εγγυώνται τη συνέπεια της Β και την ατοµικότητα και τη διάρκεια µιας δοσοληψίας παρά τις οποιεσδήποτε αποτυχίες. Οι αλγόριθµοι ανάκαµψης έχουν δυο µέρη: ράσεις που αναπτύσσονται κατά τη διάρκεια της εκτέλεσης των δοσοληψιών για να εγγυηθούν την ύπαρξη επαρκούς πληροφορίας για την ανάκαµψη από αποτυχίες. ράσεις που αναπτύσσονται µετά από µια αποτυχία για την ανάκαµψη των περιεχοµένων της βάσης σε µια κατάσταση που εγγυάται την ατοµικότητα, συνέπεια και διάρκεια. 35 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης οµή αποθήκευσης Προσωρινή (volatile) αποθήκευση: εν επιβιώνει µετά από πτώσεις συστήµατος. Παραδείγµατα: κύρια µνήµη, µνήµη cache. Μόνιµη (non-volatile) αποθήκευση: Επιβιώνει µετά από πτώσεις συστήµατος (αλλά όχι από άλλες αποτυχίες π.χ. δίσκου). Παραδείγµατα: δίσκοι, ταινίες, µνήµη flash. Ακλόνητη (stable) αποθήκευση: Μια ιδανική µορφή αποθήκευσης που επιβιώνει µετά από όλες τις αποτυχίες. Προσεγγίζεται µέσω πολλαπλών αντιγράφων σε διακριτά µόνιµα µέσα. 36 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 18

Προσπέλαση δεδοµένων (1) Τα φυσικά blocks είναι εκείνα τα blocks που βρίσκονται στο δίσκο. Τα blocks ενδιάµεσης µνήµης (buffer blocks) είναι εκείνα τα blocks που βρίσκονται προσωρινά στην κύρια µνήµη. Οι µετακινήσεις των blocks µεταξύ της κυρίας µνήµης και του δίσκου ξεκινούν µέσω των ακόλουθων δυο λειτουργιών: input(b): µεταφέρει το φυσικό block B στην κύρια µνήµη. output(b): µεταφέρει το block ενδιάµεσης µνήµης B στο δίσκο και αντικαθιστά εκεί το κατάλληλο φυσικό block. Κάθε δοσοληψία T i έχει τη δική της ιδιωτική περιοχή λειτουργίας, στην οποία φυλάσσονται τοπικά αντίγραφα από όλα τα αντικείµενα δεδοµένων που προσπελαύνονται και ενηµερώνονται από αυτήν. 37 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Προσπέλαση δεδοµένων (2) Η δοσοληψία µεταφέρει αντικείµενα µεταξύ των blocks ενδιάµεσης µνήµης του συστήµατος και της ιδιωτικής περιοχής λειτουργίας της µε χρήση των ακόλουθων λειτουργιών: read(x): αναθέτει την τιµή τουαντικειµένου δεδοµένων X στην τοπική µεταβλητή x. write(x): αναθέτει την τιµή τηςτοπικήςµεταβλητής x στο αντικείµενο X στο block ενδιάµεσης µνήµης. Οι δοσοληψίες εκτελούν την read(x) όταν προσπελαύνουν το X για πρώτη φορά. Όλες οι επακόλουθες προσπελάσεις γίνονται στο τοπικό αντίγραφο. Μετά την τελευταία προσπέλαση, η δοσοληψία εκτελεί την write(x). 38 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 19

Παράδειγµα προσπέλασης δεδοµένων Buffer Block A Buffer Block B read(x) buffer x input(a) Y output(b) write(y) A B x 1 y 1 x 2 δίσκος χώρος λειτουργίας της T 1 χώρος λειτουργίας της T 2 µνήµη 39 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ανάκαµψη και ατοµικότητα (1) Η τροποποίηση της βάσης χωρίς εγγύηση ότι η δοσοληψία θα επικυρωθεί µπορείνααφήσειτηβάσηδεδοµένων σε µια ασυνεπή κατάσταση. Θεωρήστε τη δοσοληψία T i που µεταφέρει 50 από το λογαριασµό A στο λογαριασµό B. Οστόχοςείναιείτεναπραγµατοποιηθούν όλες οι τροποποιήσεις στη βάση που γίνονται λόγω της T i ήκαµιά από αυτές. Μπορεί να απαιτούνται πολλαπλές λειτουργίες εξόδου για την T i (για την εξαγωγή των A και B). Αποτυχία µπορεί να συµβείαφούέχειγίνει τουλάχιστον µια από αυτές τις τροποποιήσεις, αλλά όµως πριν γίνουν όλες. 40 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 20

Ανάκαµψη και ατοµικότητα (2) Γιαναεγγυηθούµε για την ατοµικότητα παρά τις πιθανές αποτυχίες, εξάγουµε πρώτα πληροφορία που περιγράφει τις τροποποιήσεις στην ακλόνητη αποθήκευση χωρίς να τροποποιείται η ίδια η βάση. Μελετάµε την εξής προσέγγιση: Ανάκαµψη βασισµένη στο ηµερολόγιο του συστήµατος (Log) Υποθέτουµε ότι οι δοσοληψίες εκτελούνται σειριακά, δηλαδή η µια µετά την άλλη. 41 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ανάκαµψη βασισµένη στο ηµερολόγιο συστήµατος (1) Ένα ηµερολόγιο συστήµατος (log) φυλάσσεται στην ακλόνητη αποθήκευση. Το ηµερολόγιο συστήµατος είναι µια ακολουθία από εγγραφές ηµερολογίου και συντηρεί µια καταγραφή των ενηµερώσεων που έγιναν στη βάση. Όταν µια δοσοληψία T i ξεκινά, καταχωρεί τον εαυτό της στο ηµερολόγιο γράφοντας µια <T i start> εγγραφή ηµερολογίου. Πριν η T i εκτελέσει την λειτουργία write(x), προστίθεται µια εγγραφή στο ηµερολόγιο <T i, X, V 1, V 2 >, όπου V 1 είναι η προηγούµενη τιµή του X (πριν εκτελεστεί η write) και V 2 είναι η τιµή που πρόκειται να γραφεί στο X. 42 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 21

Ανάκαµψη βασισµένη στο ηµερολόγιο συστήµατος (2) Όταν η T i ολοκληρώσει και την τελευταία της εντολή, γράφεται στο ηµερολόγιο η εγγραφή <T i commit>. Υποθέτουµε (για την ώρα) ότιοιεγγραφέςηµερολογίου γράφονται απευθείας στην ακλόνητη αποθήκευση (δηλαδή δεν τοποθετούνται σε έναν buffer). υο προσεγγίσεις µε χρήση ηµερολογίου: Ετεροχρονισµένη τροποποίηση της βάσης. Άµεση τροποποίηση της βάσης. 43 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ετεροχρονισµένη τροποποίηση της Β (1) Το σχήµα ετεροχρονισµένης τροποποίησης µιας Β καταγράφει όλες τις τροποποιήσεις στο ηµερολόγιο, αλλά καθυστερεί όλες τις γραφές στηβάσηέωςότουηδοσοληψίαεπικυρωθείµερικώς. Υποθέτει ότι οι δοσοληψίες εκτελούνται σειριακά. Η δοσοληψία ξεκινά γράφοντας την εγγραφή <T i start> στο ηµερολόγιο. Μια λειτουργία write(x) προκαλεί την προσθήκη στο ηµερολόγιο µιας εγγραφής <T i, X, V>, όπου V είναι η νέα τιµή γιατοx. Σηµείωση: η παλιάτιµή δεχρειάζεταισ αυτό το σχήµα. ΗγραφήστοX δεγίνεταιαυτήτηστιγµή, αλλά αναβάλλεται. Όταν η T i επικυρώνεται µερικώς, η εγγραφή <T i commit> γράφεται στο ηµερολόγιο. Τέλος, οι εγγραφές του ηµερολογίου διαβάζονται και χρησιµοποιούνται για την πραγµατικήεκτέλεσητωνπροηγούµενων γραφών που έχουν αναβληθεί. 44 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 22

Ετεροχρονισµένη τροποποίηση της Β (2) Κατά τη διάρκεια της ανάκαµψης µετά από πτώση συστήµατος, µια δοσοληψία χρειάζεται να εκτελεστεί ξανά αν και µόνο αν και η <T i start> και η <T i commit> υπάρχουν στο ηµερολόγιο. Η εκ νέου εκτέλεση µιας δοσοληψίας T i (redo T i ) θέτει την τιµή όλωντων αντικειµένων δεδοµένων που ενηµερώνονται από τη δοσοληψία στις νέες τιµές. Αποτυχίες συστήµατος µπορούν να συµβούν ενώ: Η δοσοληψία εκτελεί τις αρχικές ενηµερώσεις, ή Εκτελείται η διαδικασία ανάκαµψης (λόγω προηγούµενης αποτυχίας συστήµατος). Παράδειγµα (η T 0 εκτελείται πριν T 1 ): T 0 : read (A) T 1 : read (C) A A - 50 C C- 100 write (A) write (C) read (B) B B + 50 write (B) 45 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ετεροχρονισµένη τροποποίηση της Β (3) το ηµερολόγιο συστή- µατος σε τρεις χρονικές στιγµές: Εάν η αποτυχία συµβεί στην περίπτωση: (a) δε χρειάζεται καµιά επανεκτέλεση και απλά διαγράφονται οι 3 εγγραφές. (b) η redo(t 0 ) πρέπει να εκτελεστεί αφού υπάρχει η <T 0 commit> (όχι όµως και η T 1, απλά διαγράφονται οι 2 τελευταίες εγγραφές). (c) τότε η redo(t 0 ) πρέπει να εκτελεστεί ακολουθούµενη από την redo(t 1 ) αφού υπάρχουν οι <T 0 commit> και <T 1 commit>. 46 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 23

Άµεση τροποποίηση της Β (1) Το σχήµα άµεσης τροποποίησης µιας Β επιτρέπει οι ενηµερώσεις από µια µη επικυρωµένη δοσοληψία να γίνονται αµέσως µόλις εκτελεστούν οι αντίστοιχες εντολές γραφής. Αφού µπορεί να χρειαστεί κάποια ακύρωση, τα ενηµερωµένα ηµερολόγια πρέπει να έχουν και την παλιά τιµή καιτηνέατιµή. Η ενηµέρωση της εγγραφής του ηµερολογίου πρέπει να γίνει πριν ενηµερωθεί το αντικείµενο της Β. Υποθέτουµε ότι η εγγραφή του ηµερολογίου εξάγεται αµέσως στην ακλόνητη αποθήκευση. Ηέξοδοςενηµερωµένων blocks στο δίσκο (εντολή output) µπορεί να γίνει οποιαδήποτε στιγµή (πριν/µετά την επικύρωση µιας δοσοληψίας. Ησειράµε την οποία εξάγονται τα blocks στο δίσκο (εντολή output) µπορεί να είναι διαφορετική από τη σειρά µε την οποία ενηµερώνονται στην ενδιάµεση µνήµη (εντολή write). 47 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Άµεση τροποποίηση της Β (2) Ηµερολόγιο Ενδιάµεση µνήµη ίσκος <T0 start> <T0, A, 1000, 950> To, B, 2000, 2050 write (A) // 950 write (B) // 2050 <T0 commit> <T1 start> <T1, C, 700, 600> write (C) // 600 output (BB) output (BC) <T1 commit> output (BA) Σηµείωση: το BX δηλώνει το block που περιέχει το X. 48 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 24

Άµεση τροποποίηση της Β (3) Η διαδικασία ανάκαµψης έχει δυο λειτουργίες: undo(t i ): επαναφέρει όλα τα αντικείµενα που ενηµερώθηκαν από την T i στις παλιές τους τιµές, πηγαίνοντας προς τα πίσω από την τελευταία προς την πρώτη εγγραφή του ηµερολογίου για την T i redo(ti): θέτει όλα τα αντικείµενα που ενηµερώθηκαν από την T i στις νέες τιµές, πηγαίνονταςπροςταεµπρός από την πρώτη προς την τελευταία εγγραφή του ηµερολογίου για την T i Κατά την ανάκαµψη µετά από αποτυχία: η δοσοληψία T i χρειάζεται να ακυρωθεί (εντολή undo), εάν το ηµερολόγιο περιέχει την εγγραφή <T i start>, αλλά δεν περιέχει την εγγραφή <T i commit>. η δοσοληψία T i χρειάζεται να επανεκτελεστεί (εντολή redo), εάν το ηµερολόγιο περιέχει και την εγγραφή <T i start> και την εγγραφή <T i commit>. Κατά τη διαδικασία ανάκαµψης, οι ακυρώσεις δοσοληψιών προηγούνται των επανεκτελέσεων 49 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Άµεση τροποποίηση της Β (4) το ηµερολόγιο συστήµατος σε τρεις χρονικές στιγµές: (a) undo (T 0 ): Το B επαναφέρεται στο 2000 και το A στο 1000. (b) undo (T 1 ) και redo (T 0 ): Το C επαναφέρεται στο 700 και µετά τα A και B τίθενται στο 950 και 2050, αντιστοίχως. (c) redo (T 0 ) και redo (T 1 ): Τα A και B τίθενται στο 950 και 2050, αντιστοίχως. Στη συνέχεια, το C γίνεται 600. 50 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 25

Σηµεία ελέγχου (1) Η διαδικασία ανάκαµψης που συζητήσαµε προηγουµένως έχει τα εξής προβλήµατα: Ησάρωσηόλουτουηµερολογίου είναι χρονοβόρα. Μπορεί χωρίς λόγο να εκτελέσουµε εκ νέου δοσοληψίες οι οποίες ήδη έχουν εξάγει τα αποτελέσµατά τους στη βάση. Η διαδικασία ανάκαµψης µπορεί να απλοποιηθεί εκτελώντας περιοδικά ελέγχους σε προκαθορισµένα σηµεία ελέγχου (check points) Έξοδος όλων των εγγραφών του ηµερολογίου που βρίσκονται επί του παρόντος στην κύρια µνήµη στην ακλόνητη αποθήκευση. Έξοδος όλων των τροποποιηµένων blocks ενδιάµεσης µνήµης στα αντίστοιχα φυσικά blocks στο δίσκο. Γράψιµοστοηµερολόγιο, στην ακλόνητη αποθήκευση, µιας εγγραφής <checkpoint>. 51 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Σηµεία ελέγχου (2) Κατά τη διάρκεια της ανάκαµψης πρέπει να θεωρήσουµε µόνο την πιο πρόσφατη δοσοληψία T i που ξεκίνησε πριν το σηµείο ελέγχου και τις δοσοληψίες που ξεκίνησαν µετά την T i. (κρατάµε την παραδοχή ότι οι δοσοληψίες εκτελούνται σειριακά) Εξετάζουµε προς τα πίσω από το τέλος του ηµερολογίου για να βρούµε την πιο πρόσφατη εγγραφή <checkpoint>. Συνεχίζουµε ψάχνοντας προς τα πίσω µέχρι να βρεθεί µια εγγραφή <T i start> Θεωρούµε µόνοτοτµήµα τουηµερολογίου που ακολουθεί την παραπάνω start εγγραφή. Το προηγούµενο τµήµα τουηµερολογίου µπορεί να αγνοηθεί (και µπορεί να διαγραφεί όποτε το επιθυµούµε). Για όλες τις δοσοληψίες (από την T i και έπειτα) χωρίς <T i commit>, εκτελούµε undo(t i ). (µόνο στην περίπτωση άµεσης τροποποίησης.) Εξετάζονταςπροςταεµπρός το ηµερολόγιο, για όλες τις δοσοληψίες (από την T i και έπειτα) µε <T i commit>, εκτελούµε redo(t i ). 52 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 26

Παράδειγµα σηµείων ελέγχου T c T f T 1 T 2 T 3 T4 Σηµείο ελέγχου Αποτυχία συστήµατος Η δοσοληψία T 1 µπορεί να αγνοηθεί (οι ενηµερώσεις έχουν ήδη εξαχθεί στο δίσκο εξαιτίας του σηµείου ελέγχου T c ). Οι δοσοληψίες T 2 και T 3 επανεκτελούνται (επειδή υπάρχει commit). Η δοσοληψία T 4 ακυρώνεται (επειδή δεν υπάρχει commit). 53 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Ανάκαµψη µετά από απώλεια του µέσου αποθήκευσης (1) Μέχρι τώρα, υποθέταµε ότιτοµέσο µόνιµης αποθήκευσης (π.χ. δίσκος) στο οποίο βρίσκεται η βάση δεδοµένων δεν αποτυγχάνει Γιαναχειριστούµε αποτυχίες της µόνιµης αποθήκευσης χρησιµοποιούµε τεχνικές παρόµοιες µε τασηµεία ελέγχου Περιοδικά αποθηκεύουµε φυλάσσουµε (dump) ολόκληρο το περιεχόµενο της βάσης σε µέσο ακλόνητης αποθήκευσης Κατά τη διαδικασία αυτή, καµία δοσοληψία δεν είναι ενεργή (αντίστοιχα µε τη διαδικασία των σηµείων ελέγχου) Εξάγουµε στην ακλόνητη αποθήκευση όλες τις εγγραφές ηµερολογίου που βρίσκονται προσωρινά στην κύρια µνήµη. Εξάγουµε όλαταblocks ενδιάµεσης µνήµης στο δίσκο. Αντιγράφουµε τοπεριεχόµενο της βάσης στην ακλόνητη αποθήκευση. Γράφουµε µια εγγραφή <dump> στο ηµερολόγιο, στην ακλόνητη αποθήκευση. 54 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 27

Ανάκαµψη µετά από απώλεια του µέσου αποθήκευσης (2) (συν.) Για ανάκαµψη µετά από απώλεια του δίσκου κάνουµε ταεξής: Αποκαθιστούµε τη βάση από την ακλόνητη αποθήκευση στο δίσκο, σύµφωνα µε τοπιοπρόσφατοdump. Συµβουλευόµαστε το ηµερολόγιο και επανεκτελούµε όλες τις δοσοληψίες που έγιναν commit µετά το dump 55 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Εργασία Κατεβάστε από το site του µαθήµατος και διαβάστε το κλασικό άρθρο των Haerder & Reuter για το database recovery πρόβληµα (1983) Σε 1-2 σελίδες καταγράψτε τα εξής: ποια σηµεία σας έκαναν εντύπωση στο άρθρο; ποιεςτεχνικέςαπόαυτέςπουπαρουσιάσαµε στοµάθηµα, αναφέρονταν και στo άρθρο αυτό; Παράδοση: σε 2 εβδοµάδες από σήµερα 56 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 28

Τέλος ενότητας! 57 ΠΑ.ΠΕΙ. Γιάννης Θεοδωρίδης Page 29