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

Σχετικά έγγραφα
Σημεία ελέγχου (Checkpoints)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

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

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

Αποθήκευση και Οργάνωση αρχείων. Βάσεις Δεδομένων Μάθημα 2ο Διδάσκων: Μαρία Χαλκίδη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

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

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

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

Αποθήκευση και Οργάνωση αρχείων. Βάσεις Δεδομένων Μάθημα 2ο Διδάσκων: Μαρία Χαλκίδη

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

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

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

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Εικονική Μνήµη. Κεφάλαιο 8. Dr. Garmpis Aristogiannis - EPDO TEI Messolonghi

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

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

Επεξεργασία ερωτημάτων

Αποθήκευση Δεδομένων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

Μάθημα 4 ο. Κρίσιμα Τμήματα και Αμοιβαίος Αποκλεισμός

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Προγραμματισμός Διαχείρισης Συστημάτων Ι

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

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

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

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

HY150a Φροντιστήριο 3 24/11/2017

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επισκόπηση Μαθήµατος

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

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

Εισαγωγή στην Πληροφορική

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Epsilon Net PYLON Platform

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Οργάνωση Υπολογιστών (IΙI)

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

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

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

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

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

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

Διαχείριση Πολιτισμικών Δεδομένων

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

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

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Οδηγός γρήγορης εκκίνησης του PowerSuite

PostgreSQL. Oracle. Εαρινό Εξάμηνο

Λιβανός Γιώργος Εξάμηνο 2017Β

Transcript:

Αποκατάσταση συστήματος Βάσεις Δεδομένων με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition

Κατηγοριοποίηση αποτυχιών Αποτυχία συναλλαγής (Transaction failure): Λογικά λάθη: οι συναλλαγές δεν μπορούν να ολοκληρωθούν εξαιτίας κάποιας εσωτερικής κατάστασης λάθους (π.χ. λανθασμένη εισόδου) Λάθη συστήματος: το σύστημα ΒΔ πρέπει να τερματίσει μία ενεργή δοσοληψία εξαιτίας μίας ανεπιθύμητης κατάστασης (π.χ. deadlock) Καταστροφή συστήματος: μία διακοπή ρεύματος ή καταστροφή υλικού ή λογισμικού οδηγεί στη καταστροφή του συστήματος. Υπόθεση αποτυχίας-διακοπής: υποθέτουμε ότι σταθερά μέσα αποθήκευσης δεν καταστρέφονται από την καταστροφή του συστήματος Τα συστήματα ΒΔ έχουν μεγάλο αριθμό από ελέγχους ακεραιότητας για να αποφύγουν καταστροφή των δεδομένων στο δίσκο. Αποτυχία δίσκου: καταστροφή κεφαλής ή παρόμοιες αποτυχίες δίσκου καταστρέφει όλα ή μέρος του περιεχομένου του δίσκου Βάσεις Δεδομένων, Παν. Πειραιά 2

Αλγόριθμοι αποκατάστασης Αλγόριθμοι αποκατάστασης είναι τεχνικές για να επιβεβαιώσουν τη συνέπεια της βάσης δεδομένων, ατομικότητα δοσοληψίας και διάρκεια παρά τις αποτυχίες Οι αλγόριθμοι αποκατάστασης έχουν δύο μέρη 1. Ενέργειες που γίνονται στη διάρκεια κανονικής επεξεργασίας δοσοληψιών για να επιβεβαιώσουν ύπαρξη αρκετής πληροφορίας για να ανανήψουμε από αποτυχίες 2. Οι ενέργειες γίνονται μετά από μία αποτυχία για να αποκαταστήσουμε τα περιεχόμενα της ΒΔ σε μία κατάσταση που επιβεβαιώνει ατομικότητα, συνέπεια και διάρκεια Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 3

Δομή αποθήκευσης Τα διάφορα στοιχεία της ΒΔ μπορούν να αποθηκευτούν και να προσπελαύνονται σε διάφορα μέσα αποθήκευσης Χώροι αποθήκευσης Προσωρινή μνήμη: Δεν επιβιώνει σε καταστροφές συστήματος παραδείγματα: main memory, cache memory Μόνιμη μνήμη (Nonvolatile storage): Επιβιώνει σε καταστροφές συστήματος παραδείγματα: disk, tape, flash memory, non-volatile (battery backed up) RAM Σταθερή μνήμη (Stable storage): Μορφή αποθήκευσης που επιβιώνει σε όλες τις αποτυχίες Επιτυγχάνεται διατηρώντας πολλαπλά αντίγραφα σε διαφορετικά μη μεταβλητά μέσα Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4

Υλοποίηση σταθερής αποθήκευσης (1) Διατηρούμε πολλαπλά αντίγραφα από κάθε block σε ξεχωριστούς δίσκους Αντίγραφα μπορούν να διατηρούνται σε απομακρυσμένες θέσεις για να προστατέψουν από καταστροφές όπως φωτιά, πλημμύρες. Αποτυχία στη διάρκεια μεταφοράς δεδομένων μπορεί ακόμα να οδηγήσει σε ασυνεπή αντίγραφα Μεταφορά block μπορεί να καταλήξει σε Επιτυχή ολοκλήρωση Μερική αποτυχία: block προορισμού έχει λανθασμένη πληροφορία Συνολική αποτυχία: το block προορισμού δεν ενημερώνεται ποτέ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 6

Προσπέλαση δεδομένων Φυσικά blocks είναι εκείνα τα blocks που βρίσκονται στο disk. Buffer blocks είναι τα blocks που βρίσκονται προσωρινά στη κύρια μνήμη. Μετακινήσεις block ανάμεσα σε δίσκο και κύρια μνήμη αρχικοποιούνται διαμέσου των ακόλουθων δύο λειτουργιών: input(b) μεταφορά φυσικού block B στη κύρια μνήμη. output(b) μεταφορά buffer block B στο δίσκο και αντικατάσταση του κατάλληλου φυσικού block εκεί. Κάθε δοσοληψία T i έχει μία ιδιωτική περιοχή εργασίας στην οποία διατηρούνται τα τοπικά αντίγραφα όλων των αντικειμένων δεδομένων που προσπελαύνονται και ενημερώνονται από αυτή. το τοπικό αντίγραφο τηςt i για το αντικείμενο X καλείται x i. Υποθέτουμε, για λόγους απλότητας, ότι κάθε στοιχείο δεδομένων ταιριάζει και αποθηκεύεται μέσα σε ένα μόνο block. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 8

Προσπέλαση δεδομένων (2) Η δοσοληψία μεταφέρει δεδομένα ανάμεσα στο buffer blocks του συστήματος και της ιδιωτικής περιοχής εργασίας που χρησιμοποιεί τις ακόλουθες λειτουργίες: read(x) αναθέτει την τιμή του αντικειμένου X στη τοπική μεταβλητή x i. write(x) αναθέτει την τιμή της τοπικής μεταβλητής x i στο στοιχείο {X} στο buffer block. και οι δύο αυτές εντολές μπορεί να χρειάζονται την έκδοση μίας εντολής input(b X ) πριν την ανάθεση, εάν το block B X στο οποίο βρίσκεται το X δεν είναι ήδη στη μνήμη. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 9

Προσπέλαση δεδομένων (3) Δοσοληψίες Εκτελούν read(x) ενώ προσπελαύνουν το X για πρώτη φορά; Όλες οι επακόλουθες προσπελάσεις γίνονται στο τοπικό αντίγραφο. Μετά την τελευταία προσπέλαση, η δοσοληψία εκτελεί write(x). output(b X ) δεν χρειάζεται να ακολουθήσει άμεσα το write(x). Το σύστημα μπορεί να εκτελέσει τη λειτουργία output όταν θεωρεί ότι χρειάζεται. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 10

Παράδειγμα προσπέλασης δεδομένων Buffer Block A Buffer Block B read(x) buffer x input(a) Y output(b) write(y) disk A B x 1 y 1 x 2 work area of T 1 work area of T 2 memory Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 11

Ανάνηψη και Ατομικότητα Τροποποίηση της ΒΔ χωρίς να επιβεβαιώνει ότι η δοσοληψία θα κάνει commit μπορεί να αφήσει τη βάση δεδομένων σε ασυνεπή κατάσταση. Υποθέτουμε τη δοσοληψία T i : μεταφορά $50 από λογαριασμό A στο λογαριασμό B; Ο στόχος είναι είτε να εκτελεστούν όλες οι λειτουργίες στη ΒΔ που γίνονται από την T i ή καμία. Μία αποτυχία μπορεί να συμβεί αφού μία από αυτές τις τροποποίησεις εκτελεστεί αλλά πριν γίνουν όλες. Έστω Α=1000, Β=2000. Καταστορφή στο σύστημα μετά το output(b A ), πριν το output(b B ) Τι θα συμβεί εάν ξαναεκτελέδουμε τη δοσοληψία Εάν δεν την εκτελέσουμε πάλι Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 12

Ανάνηψη και Ατομικότητα(2) Για να επιβεβαιώσουμε την ατομικότητα ανεξάρτητα από αποτυχίες, πρώτα εξάγουμε (output) την πληροφορία που περιγράφει τις τροποποιήσεις σε σταθερή μνήμη χωρίς να τροποποιούμε την ίδια τη ΒΔ. Μελετάμε δύο προσεγγίσεις: log-based recovery shadow-paging Υποθέτουμε (αρχικά) ότι οι δοσοληψίες τρέχουν σειριακά, δηλ., η μία μετά την άλλη. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 13

Log-Based Recovery (1) Ένα log διατηρείται σε σταθερή αποθήκευση. Το log είναι μία ακολουθία από log records, και διατηρεί μία εγγραφή για δραστηριότητες, ενημερώσεις στη ΒΔ. Όταν αρχίζει η δοσοληψία T i, εγγράφει τον εαυτό της γράφοντας μία <T i start> log εγγραφή Πριν η T i εκτελέσει write(x), μία log εγγραφή <T i, X, V 1, V 2 > γράφεται, όπου V 1 είναι η τιμή του X πριν την εγγραφή, και V 2 η τιμή που πρόκειται να γραφεί στο X. Log record σημειώνει ότι η T i έχει εκτελέσει μία εγγραφή στο αντικείμενο X j το X j έχει τιμή V 1 πριν το write, και θα έχει την τιμή V 2 μετά το write. Όταν το T i τελειώσει τη τελευταία εντολή, προστίθεται η εγγραφή log <T i commit>. Υποθέτουμε για τώρα ότι οι εγγραφές log γράφονται κατευθείαν στη σταθερή μνήμη (δηλαδή, δεν προστίθενται στο buffer) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 14

Log-Based Recovery (2) Δύο προσεγγίσεις που χρησιμοποιούν logs Τροποποίηση της ΒΔ με αναβολή Άμεση τροποποίηση της ΒΔ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 15

Τροποποίηση ΒΔ με αναβολή Το σχήμα τροποποίησης βάσης δεδομένων με αναβολή καταγράφει όλες τις τροποποιήσεις στο log, αλλά αναβάλλει όλα τα writes για μετά την μερική ολοκλήρωση της δοσοληψίας (εκτέλεση και τις τελευταίας εντολής) Υποθέτουμε ότι οι δοσοληψίες εκτελούνται σειριακά Οι δοσοληψίες αρχίζουν γράφοντας μία εγγραφή <T i start> στο log. Μία λειτουργία write(x) καταλήγει στην εγγραφή ενός log record <T i, X, V>, όπου V είναι η νέα τιμή για το X Σημείωση: η παλιά τιμή δεν χρειάζεται για αυτό το σχήμα Η εγγραφή δεν εκτελείται στο X αυτή τη στιγμή, αλλά αναβάλλεται. Όταν T i ολοκληρώνεται μερικώς, η εγγραφή <T i commit> προστίθεται στο log Τέλος, οι εγγραφές log διαβάζονται και χρησιμοποιούνται για να εκτελέσει τις προηγούμενα αναβληθείσες εγγραφές. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 16

Ανάνηψη: Τροποποίηση ΒΔ με αναβολή Στη διάρκεια της ανάνηψης μετά από καταστροφή, μία δοσοληψία χρειάζεται να ξαναγίνει αν και μόνο αν τόσο η <T i start> και <T i commit> υπάρχουν στο log. Το να ξαναγίνει μία δοσοληψία T i ( redot i ) οδηγεί στο να τεθούν οι τιμές όλων των αντικειμένων που ενημερώνονται από τη δοσοληψία στις νέες τιμές. Καταστροφές μπορούν να συμβούν ενώ Η δοσοληψία εκτελεί τις αρχικές ενημερώσεις, ή Λαμβάνεται η λειτουργία ανάνηψης example transactions T 0 and T 1 (T 0 executes before 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) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 17

Παράδειγμα: Τροποποίηση ΒΔ με αναβολή Κατάσταση log και της ΒΔ που αντιστοιχεί στις Το και Τ1 Log Ημερολόγιο καταγραφής <To start> <To, A, 950> <To, B, 2050> <To commit> <T1 start> <T1, C, 600> <T1 commit> Βάση δεδομένων A=950 B=2050 C=600 Α = 1000 Β = 2000 C=700 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 18

Τροποποίηση ΒΔ με αναβολή (3) log όπως εμφανίζεται σε τρια χρονικά στιγμιότυπα. Write B Write C T1 commit Εάν το log σε σταθερή αποθήκευση τη χρονική στιγμή τηε καταστροφής είναι όπως στην περίπτωση: (a) No redo actions need to be taken (b) redo(t 0 ) must be performed since <T 0 commit> is present (c) redo(t 0 ) must be performed followed by redo(t 1 ) since <T 0 commit> and <T i commit> are present Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 19

Άμεση τροποποίηση ΒΔ Το σχήμα άμεσης τροποποίησης ΒΔ επιτρέπει ενημερώσεις ΒΔ από μη ολοκληρωμένες δοσοληψίες να γίνονται μόλις εκδοθούν οι εγγραφές Καθώς αναιρέσεις μπορεί να χρειαστούν, logs ενημέρωσης (update logs) πρέπει να έχουν τόσο την παλιά όσο και τη νέα τιμή Update log record πρέπει να γράφονται πριν γραφεί αντικείμενο της ΒΔ Υποθέτουμε ότι το log record εξάγεται κατευθείαν στη σταθερή μνήμη Μπορεί να επεκταθεί στο να αναβληθεί η έξοδος του log record, τόσο ώστε πριν την εκτέλεση της λειτουργίας output(b) για ένα block δεδομένων B, όλες οι εγγραφές log records που αντιστοιχούν σε αντικείμενα B να περάσουν στη σταθερή μνήμη Η έξοδος των ενημερωμένων blocks μπορεί να λάβει χώρα οποιαδήποτε στιγμή πριν ή μετά την ολοκλήρωση της δοσοληψίας Η σειρά με την οποία τα blocks εξάγονται μπορεί να είναι διαφορετική από τη σειρά με την οποία γράφονται. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 20

Παράδειγμα: Άμεση τροποποίηση ΒΔ Log <T 0 start> <T 0, A, 1000, 950> <T o, B, 2000, 2050> <T 0 commit> <T 1 start> <T 1, C, 700, 600> Write A = 950 B = 2050 C = 600 <T 1 commit> Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 21

Άμεση τροποποίηση ΒΔ (2) Η διαδικασία αποκατάστασης έχει δύο λειτουργίες αντί για μία: undo(t i ) αποκαθιστά την τιμή όλων των αντικειμένων δεδομένων που ενημερώνονται από το T i στις παλιές τιμές, ξεκινώντας από την τελευταία log εγγραφή για το T i redo(t i ) θέτει την τιμή όλων των αντικειμένων που ενημερώνονται από το T i στις νέες τιμές, ξεκινώντας από την πρώτη log εγγραφή για T i Θα πρέπει και για τις δύο λειτουργίες ακόμα και εάν εκτελούνται πολλές φορές το αποτέλεσμα να είναι το ίδιο σαν να εκτελέστηκε μία φορά Χρειάζεται καθώς οι λειτουργίες μπορεί να χρειαστεί να επανεκτελεστούν στη διάρκεια της ανάνηψης Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 22

Άμεση τροποποίηση ΒΔ (3) Όταν μία δοσοληψία αποκαθίσταται μετά από αποτυχία: Η δοσοληψία T i χρειάζεται να αναιρεθεί εάν το log περιέχει εγγραφή <T i start>, αλλά δεν περιέχει και την εγγραφή <T i commit>. Η δοσοληψία T i χρειάζεται να ξαναγίνει εάν το log περιέχει και την εγγραφή <T i start> και την εγγραφή <T i commit>. Οι λειτουργίες undo εκτελούνται πρώτες, μετά οι λειτουργίες redo. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 23

Άμεση τροποποίηση ΒΔ παράδειγμα ανάνηψης Παρακάτω βλέπουμε το log όπως εμφανίζεται σε τρία χρονικά στιγμιότυπα. Λειτουργίες ανάνηψης σε κάθε μία από τις παραπάνω περιπτώσεις: (a) undo (T 0 ): B is restored to 2000 and A to 1000. (b) undo (T1) and redo (T0): C is restored to 700, and then A and B are set to 950 and 2050 respectively. (c) redo (T0) and redo (T1): A and B are set to 950 and 2050 respectively. Then C is set to 600 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 24

Σημεία ελέγχου Προβλήματα στην διαδικασία ανάνηψης για την περίπτωση που χρησιμοποιείται log: 1. Αναζήτηση ολόκληρου του log είναι χρονοβόρα 2. Μπορεί να ξαναγίνουν δοσοληψίες που έχουν ήδη γίνει 3. Έχει γίνει έξοδος των ενημερώσεων τους στη ΒΔ. Διαδικασία ανάνηψης με περιοδική εκτέλεση checkpointing (έλεγχος σημείων). Το σύστημα εκτελεί περιοδικά σημεία ελέγχου που απαιτούν: 1. Έξοδος όλων των log εγγραφών που βρίσκονται αυτή τη στιγμή στη κύρια μνήμη σε σταθερή αποθήκευση. 2. Έξοδος όλων των τροποποιημένων buffer blocks στο δίσκο. 3. Εγγραφή ενός log record < checkpoint> σε σταθερή μνήμη. Ενώ βρίσκεται σε εξέλιξη ένα σημείο ελέγχου οι δοσοληψίες δεν επιτρέπεται να εκτελούν ενέργειες ενημέρωσης 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 25

Σημεία ελέγχου (2) Στη διάρκεια ανάνηψης χρειάζεται να λάβουμε υπόψη μας μόνο την πιο πρόσφατη δοσοληψία T i που άρχισε πριν το checkpoint, και δοσοληψίες που άρχισαν μετά το T i. 1. Σαρώνουμε από το τέλος προς την αρχή το log για να βρούμε την πιο πρόσφατη εγγραφή <checkpoint> 2. Συνεχίζουμε την σάρωση μέχρι να βρεθεί μία εγγραφή <T i start>. 3. Χρειάζεται να λάβουμε υπόψη μας μόνο το κομμάτι του log που ακολουθεί πέρα από το start record. Το προηγούμενο κομμάτι του log μπορεί να αγνοηθεί στη διάρκεια της ανάνηψης, και μπορεί να σβηστεί οποτεδήποτε είναι επιθυμητό. 4. Για όλες τις δοσοληψίες (ξεκινώντας από το T i ή μετά) χωρίς <T i commit>, εκτέλεσε undo(t i ). (Γίνεται μόνο στην περίπτωση της άμεσης τροποποίησης.) 5. Σάρωση του log, για όλες τις δοσοληψίες που ξεκινάνε από το T i ή αργότερα με <T i commit>, εκτέλεσε redo(t i ). 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 26

Παράδειγμα Checkpoints T c T f T 1 T 2 T 3 T 4 checkpoint system failure T 1 can be ignored (updates already output to disk due to checkpoint) T 2 and T 3 redone. T 4 undone 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 27

Σκιώδης Σελιδοποίηση - Shadow Paging Η σκιώδης σελιδοποίηση είναι μία εναλλακτική προσέγγιση της ανάνηψης με βάση log Το σχήμα σκιώδης σελιδοποίησης είναι χρήσιμο εάν οι δοσοληψίες εκτελούνται σειριακά Βασική ιδέα: διατήρησε δύο πίνακες στη διάρκεια ζωής μίας δοσοληψίας Τρέχων πίνακας σελίδων και σκιώδης πίνακας σελίδων Αποθηκεύουμε το σκιώδη πίνακα σελίδων σε σταθερή μνήμη, έτσι ώστε η κατάσταση της ΒΔ πριν την εκτέλεση της δοσοληψίας να μπορεί να αποκατασταθεί. Ο σκιώδης πίνακας σελίδας δεν τροποποιείται ποτέ στη διάρκεια της εκτέλεσης Όταν ξεκινάει η δοσοληψία και οι δύο πίνακες σελίδων είναι ίδιοι. Μόνο ο τρέχων πίνακας σελίδων χρησιμοποιείται για προσπελάσεις δεδομένων στη διάρκεια εκτέλεσης της δοσοληψίας. 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 28

Σκιώδης Σελιδοποίηση (2) Η δοσοληψία T j εκτελεί μία λειτουργία write(x) και έστω το Χ βρίσκεται στη σελίδα i. Αν η σελίδα i δεν είναι ήδη στη κύρια μνήμη, τότε το σύστημα δίνει την εντολή input(x) Εάν είναι ένα γράψιμο που εκτελέστηκε πρώτα στη σελίδα i από αυτή τη δοσοληψία, τότε το σύστημα τροποποιεί τον τρέχων πίνακα σελίδων ως εξής: Ένα αντίγραφο αυτής της σελίδας δημιουργείται σε μία σελίδα που δεν χρησιμοποιείται Ο τρέχων πίνακας σελίδας δείχνει στο αντίγραφο Η ενημέρωση γίνεται στο αντίγραφο Δίνει την τιμή του x j στο Χ στη σελίδα του buffer 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 29

Δείγμα πίνακα σελίδων 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 30

Παράδειγμα σκιώδους σελιδοποίησης Shadow and current page tables after write to page 4 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 31

Σκιώδης σελιδοποίηση (3) Για να τελειώσει μία δοσοληψία: 1. Μεταφέρονται όλες οι τροποποιημένες σελίδες από την κύρια μνήμη στο δίσκο 2. Έξοδος του τρέχοντος πίνακα σελίδων στο δίσκο 3. Κάνουμε τον τρέχων πίνακα σελίδων το νέο σκιώδη πίνακα σελίδων, ως ακολούθως: διατηρούμε ένα pointer στο σκιώδη πίνακα σελίδων σε συγκεκριμένη (γνωστή) θέση στο δίσκο. Για να κάνουμε τον τρέχων πίνακα σελίδων νέο σκιώδη πίνακα, απλά ενημέρωσε τον pointer να δείχνει στον τρέχων πίνακα σελίδων στο δίσκο Μόλις γραφεί ο pointer στο σκιώδη πίνακα σελίδων, η δοσοληψία τελειώνει (κάνει commit) Δεν απαιτείται ανάνηψη μετά από καταστροφή νέες δοσοληψίες μπορούν να αρχίσουν, χρησιμοποιώντας το σκιώδη πίνακα σελίδων. Σελίδες που δεν δείχνονται από τρέχων/σκιώδη πίνακα σελίδων μπορεί να ελευθερωθούν (garbage collected). 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 32

Ανάνηψη με ταυτόχρονες δοσοληψίες (1) Τροποποιούμε τα σχήματα ανάνηψης με βάση log για να επιτρέπουμε πολλαπλές δοσοληψίες να εκτελούνται ταυτόχρονα. Όλες οι δοσοληψίες μοιράζονται ένα μόνο disk buffer και ένα μόνο log Ένα buffer block μπορεί να περιέχει δεδομένα που ενημερώνονται από μία ή περισσότερες εγγραφές Υποθέτουμε ταυτόχρονο έλεγχο χρησιμοποιώντας αυστηρό 2-φάσεων κλείδωμα; Οι ενημερώσεις των uncommitted transactions δεν πρέπει να είναι εμφανής στις άλλες δοσοληψίες Αλλιώς πως να εκτελέσουμε undo εάν T1 updates A, μετά T2 updates A και commits, και τέλος T1 πρέπει να αναιρεθεί? Οι εγγραφές log από διαφορετικές δοσοληψίες μπορεί να είναι διασκορπισμένες στο log. Η τεχνική σημείων ελέγχου και οι ενέργειες που γίνονται στην ανάνηψη πρέπει να αλλάξουν Καθώς διαφορετικές δοσοληψίες μπορεί να είναι ενεργές όταν εκτελείται ο έλεγχος σημείου. 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 33

Ανάνηψη με ταυτόχρονες δοσοληψίες (2) Τα σημεία ελέγχου εκτελούνται όπως και στην περίπτωση των σειριακών δοσοληψιών. Η διαφορά είναι ότι η checkpoint log record έχει τώρα τη μορφή < checkpoint L> L είναι η λίστα δοσοληψιών που είναι ενεργές τη στιγμή του σημείου ελέγχου Υποθέτουμε ότι καμία ενημέρωση δεν είναι σε εξέλιξη όταν πραγματοποιείται ένα checkpoint Αποκατάσταση συστήματος από μία καταστροφή, : 1. Initialize undo-list and redo-list to empty 2. Scan the log backwards from the end, stopping when the first <checkpoint L> record is found. For each record found during the backward scan: if the record is <T i commit>, add T i to redo-list if the record is <T i start>, then if T i is not in redo-list, add T i to undo-list 3. For every T i in L, if T i is not in redo-list, add T i to undo-list 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 34

Ανάνηψη με ταυτόχρονες δοσοληψίες (3) Στο σημείο αυτό undo-list περιέχει λίστα ατελών δοσοληψιών που πρέπει να αναιρεθούν redo-list περιέχει δοσοληψίες που έχουν τελειώσει και πρέπει να ξαναγίνουν. Η ανάνηψη συνεχίζει ως εξής: 1. Σάρωση του log από την πιο πρόσφατη εγγραφή προς τα πίσω, σταματώντας όταν <T i start> records έχουν βρεθεί για κάθε T i στη undolist. Στη διάρκεια της σάρωσης, εκτελούμε undo για κάθε log record που ανήκει σε δοσοληψία στην undo-list. 2. Εντοπίζουμε το πιο πρόσφατο <checkpoint L> record. 3. Σαρώνουμε προς τα εμπρός το log από το <checkpoint L> record μέχρι το τέλος του log. Στη διάρκεια της σάρωσης, εκτελούμε redo για κάθε log record που ανήκει σε μία δοσοληψία στη redo-list 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 35

Παράδειγμα αποκατάστασης Go over the steps of the recovery algorithm on the following log: <T 0 start> <T 0, A, 0, 10> <T 0 commit> <T 1 start> <T 1, B, 0, 10> <T 2 start> /* */ <T 2, C, 0, 10> <T 2, C, 10, 20> <checkpoint {T 1, T 2 }> <T 3 start> <T 3, A, 10, 20> <T 3, D, 0, 10> <T 3 commit> Re-do list : T3 Undo list: T1, T2 1/2/2013 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 36