Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΤίμω Μαυρογένης Τροποποιήθηκε πριν 9 χρόνια
1
Κεφάλαιο 17 Εισαγωγή στη Θεωρία των Δοσοληψιών
2
Δοσοληψίες Η Έννοια της Δοσοληψίας Κατάσταση Δοσοληψίας Ταυτόχρονες Εκτελέσεις Σειριοποιησιμότητα Ανάκαμψη Χειρισμός Απομόνωσης
3
Συστήματα Βάσεων Δεδομένων Μονοχρηστικά Συστήματα: Ένας χρήστης χρησιμοποιεί το σύστημα κάθε φορά. Πολυχρηστικά Συστήματα: Πολλοί χρήστες ταυτόχρονα. Συνδρομικότητα (Concurrency) Διαπεπλεγμένη Επεξεργασία: η επεξεργασία των διαδικασιών γίνεται με διαπεπλεγμένο τρόπο σε μία CPU Παράλληλη Επεξεργασία: οι διαδικασίες εκτελούνται παράλληλα σε πολλές CPU.
4
Η Έννοια της Δοσοληψίας Μία δοσοληψία είναι μία προγραμματιστική μονάδα εκτέλεσης Μία δοσοληψία πρέπει να εγγυάται τη συνέπεια της βάσης Κατά τη διάρκεια εκτέλεσης της δοσοληψίας η βάση μπορεί να είναι προσωρινά ασυνεπής Όταν η δοσοληψία ολοκληρωθεί, η βάση πρέπει να είναι συνεπής Μετά την ολοκλήρωση μίας δοσοληψίας, οι αλλαγές που έγιναν παραμένουν στη βάση ακόμα και αν αυτή «πέσει» Πολλές δοσοληψίες μπορούν να εκτελεσθούν «παράλληλα» Δύο κύρια θέματα: Αποτυχίες υλικού, αποτυχίες συστημάτων κτλ. Παράλληλη εκτέλεση πολλών δοσοληψιών
5
Βασικές Λειτουργίες Δοσοληψιών Πράξεις Ανάγνωσης και Εγγραφής: read(X): 1. Εύρεση της διέυθυνσης του μπλοκ που περιέχει το Χ 2. Αντιγραφή αυτού του μπλοκ σε μία ενδιάμεση μνήμη (buffer) – αν δεν είναι ήδη εκεί 3. Αντιγραφή του στοιχείου Χ από το buffer στη μεταβλητή με όνομα Χ write(X): 1. Εύρεση της διέυθυνσης του μπλοκ που περιέχει το Χ 2. Αντιγραφή αυτού του μπλοκ σε μία ενδιάμεση μνήμη (buffer) – αν δεν είναι ήδη εκεί 3. Αντιγραφή του στοιχείου Χ από τη μεταβλητή στην κατάλληλη θέση μέσα στο buffer 4. Αποθήκευση του αλλαγμένου μπλοκ από το Buffer στο δίσκο (άμεσα ή αργότερα)
6
ACID Ιδιότητες Δοσοληψιών Ατομικότητα (Atomicity): Μία δοσοληψία είτε εκτελείται εξ ολοκλήρου ή καθόλου Διατήρηση Συνέπειας (Consistency): Η εκτέλεση μίας δοσοληψίας διατηρεί τη συνέπεια της βάσης Απομόνωση (Isolation): Η εκτέλεση μιας δοσοληψίας δεν πρέπει να εμπλέκεται σε οποιαδήποτε άλλη δοσοληψία που εκτελείται ταυτόχρονα. Διάρκεια (Durability): Οι αλλαγές σε μία βάση από μία δοσοληψία που ολοκληρώθηκε παραμένουν ακόμα και αν το σύστημα «πέσει»
7
Παράδειγμα (1) Δοσοληψία για μεταφορά 50 ευρώ από το λογαριασμό Α στο Β: 1.read(A) 2.A := A – 50 3.write(A) 4.read(B) 5.B := B + 50 6.write(B) Ατομικότητα — αν η δοσοληψία αποτύχει μετά το βήμα 3 και πριν το βήμα 6, το σύστημα θα πρέπει να εξασφαλίσει ότι οι αλλαγές δεν έχουν γίνει στη βάση αλλιώς θα προκληθεί ασυνέπεια στη βάση Συνέπεια – το άθροισμα των Α και Β θα πρέπει να παραμείνει ίδιο μετά την εκτέλεση της συναλλαγής
8
Παράδειγμα (2) Απομόνωση — αν μεταξύ των βημάτων 3 και 6, κάποια άλλη δοσοληψία επιτρεπόταν να προσπελάσει την μερικώς ενημερωμένη βάση θα διαχειριζόταν μία ασυνεπής βάση (το άθροισμα Α+Β θα ήταν λιγότερο από ότι πρέπει) Η απομόνωση μπορεί να εξασφαλισθεί εκτελώντας τις δοσοληψίες σειριακά, την μία μετά την άλλη Η σειριακή εκτέλεση έχει πολλά μειονεκτήματα σε σχέση με την παράλληλη εκτέλεση Διάρκεια — από τη στιγμή που ο χρήστης ειδοποιείται ότι η δοσοληψία έχει ολοκληρωθεί οι αλλαγές στη βάση θα πρέπει να είναι μόνιμες
9
Κατάσταση Δοσοληψίας Ενεργός – η αρχική κατάσταση; η δοσοληψία παραμένει σε αυτή τη κατάσταση όσο εκτελείται Μερικώς Επικυρωμένη – έπειτα από την τελευταία εντολή της δοσοληψίας Αποτυχία – έπειτα από τη διαπίστωση ότι δεν μπορεί να συνεχιστεί η κανονική εκτέλεση της δοσοληψίας Επικυρωμένη – η δοσοληψία έχει εκτελεστεί και οι αλλαγές έχουν περαστεί στη βάση Τερματισμός – η δοσοληψία τερματίζει. Δύο επιλογές μετά από αποτυχία: Επανεκκίνηση της δοσοληψίας- μόνο αν το λάθος δεν είναι από εσωτερικό λογικό λάθος της δοσοληψίας Η δοσοληψία τερματίζεται ολοκληρωτικά
10
Κατάσταση Δοσοληψίας Ενεργός Μερικώς Επικυρωμένη Ακύρωση Αποτυχία Επικυρωμένη Τερματισμός Επικύρωση
11
Έλεγχος Συνδρομικότητας - Γιατί; Το πρόβλημα της απώλειας ενημερώσεων Όταν δύο δοσοληψίες προσπελαύνουν και ενημερώνουν τα ίδια στοιχεία της βάσης έτσι ώστε η τιμή κάποιου από αυτά τα στοιχεία να είναι λανθασμένη Το πρόβλημα της προσωρινής ενημέρωσης Όταν μία δοσοληψία ενημερώνει ένα στοιχείο της βάσης και η δοσοληψία αποτυγχάνει ενώ μία άλλη δοσοληψία προσπελαύνει το συγκεκριμένο στοιχείο πριν πάρει την αρχική του τιμή Το πρόβλημα της λανθασμένης συνάθροισης Αν κάποια δοσοληψία υπολογίζει μία συναθροιστική συνάρτηση σε ένα πλήθος από στοιχεία ενώ άλλες δοσοληψίες ενημερώνουν αυτά τα στοιχεία τότε η συνάρτηση αυτή θα υπολογίσει το αποτέλεσμα για τις τιμές των στοιχείων είτε πριν την ενημέρωση ή μετά
12
Απώλεια Ενημερώσεων T 1 read(X) X:=X-N write(X) read(Y) Y:=Y+N write(Y) T 2 read(X) X:=X+M write(X) Χρόνος Το στοιχείο Χ έχει λανθασμένη τιμή μιας και η ενημέρωση από το Τ 1 χάνεται
13
Προσωρινή Ενημέρωση T1 read(X) X:=X-N write(X) read(Y) T 2 read(X) X:=X+M write(X) Χρόνος Η δοσοληψία Τ 1 αποτυγχάνει και πρέπει να επαναφέρει το Χ στην παλιά του τιμή; εντωμεταξύ η Τ 2 έχει διαβάσει την «προσωρινή» λανθασμένη τιμή του Χ
14
Λανθασμένη Συνάθροιση T1 read(X) X:=X-N write(X) read(Y) Y:=Y+N write(Y) T 2 sum:=0 read(A) sum:=sum+A. read(X) sum:=sum+X read(Y) sum:=sum+Y Χρόνος H T 2 διαβάζει το Χ αφού έχει μειωθεί κατά Ν και διαβάζει το Υ πριν προστεθεί το Ν; λάθος άθροισμα
15
Ανάκαμψη - Γιατί; Αποτυχία Υπολογιστικού Συστήματος Λάθος στη δοσοληψία (διαίρεση με μηδέν, διακοπή από χρήστη, λογικό λάθος) Τοπικά λάθη ή εξαιρέσεις (δεν υπάρχει αρκετό υπόλοιπο σε λογαριασμό, το στοιχείο που ζητείται δεν υπάρχει στη βάση) Έλεγχος συνδρομικότητας (όταν κάποια κριτήρια δεν ικανοποιούνται) Αποτυχία σκληρού δίσκου Οποιαδήποτε φυσική καταστροφή
16
Το Ημερολόγιο Συστήματος Το ημερολόγιο συστήματος αποθηκεύει τις πράξεις των δοσοληψιών που μεταβάλλουν τις τιμές στη βάση. Αυτή η πληροφορία χρειάζεται ώστε να επιτραπεί η ανάκαμψη από αποτυχίες δοσοληψιών.
17
Ανάκαμψη με το Ημερολόγιο Συστήματος (Περισσότερα στο μεθεπόμενο μάθημα) Όταν μία δοσοληψία επικυρωθεί πρέπει να εισαχθεί η κατάλληλη εγγραφή στο ημερολόγιο. Από τη στιγμή που γίνει αυτή η εισαγωγή και το ημερολόγιο γραφεί στο δίσκο η δοσοληψία έχει τερματιστεί επιτυχώς. Οι εγγραφές που αφορούν επικυρωμένες δοσοληψίες μπορούν να χρησιμοποιηθούν για αρχικοποίηση της βάσης σε περίπτωση αποτυχίας της. Αφού το ημερολόγιο περιέχει μία εγγραφή για κάθε πράξη εγγραφής που αλλάζει την τιμή ενός στοιχείου της βάσης μπορούμε να αναιρέσουμε το αποτέλεσμα αυτών των πράξεων μίας δοσοληψίας απλά σαρώνοντας το ημερολόγιο και επαναφέροντας τα στοιχεία στις αρχικές τους τιμές. Για να γίνει η ανάκληση της δοσοληψίας δεν θα πρέπει να έχει επικυρωθεί στο ημερολόγιο.
18
Χρονοπρογράμματα Χρονοπρόγραμμα ή χρονικό – μία ακολουθία από πράξεις που καθορίζουν τη χρονολογική σειρά με την οποία οι πράξεις συνδρομικών δοσοληψιών θα εκτελεστούν ένα χρονικό για ένα σύνολο δοσοληψιών πρέπει να αποτελείται από όλες τις πράξεις αυτών των δοσοληψιών ένα χρονικό πρέπει να διατηρεί τη σειρά με την οποία οι πράξεις εμφανίζονται σε κάθε δοσοληψία
19
Χρονοπρογράμματα με Ανάκαμψη Χρονοπρόγραμμα που επιτρέπει ανάκαμψη — αν μία δοσοληψία T j διαβάζει ένα στοιχείο που έχει ήδη ενημερωθεί από τη δοσοληψία T i, τότε η επικύρωση της T i εμφανίζεται πριν την επικύρωση της T j. Το ακόλουθο χρονοπρόγραμμα δεν είναι ανακάμψιμο αν η T 9 επικυρώνεται αμέσως μετά την πράξη ανάγνωσης Αν η T 8 αποτύχει, τότε η T 9 θα διάβαζε (και πιθανόν να έδειχνε και στο χρήστη) μία ασυνεπής κατάσταση της βάσης. Επομένως θα πρέπει να εγγυηθούμε ότι τα χρονοπρογράμματα είναι ανακάμψιμα. Ανάκαμψη στην περίπτωση όπου επιτρέπεται η συνδρομικότητα
20
Διαδιδόμενες Ανακλήσεις Διαδιδόμενες Ανακλήσεις – η αποτυχία μίας δοσοληψίας προκαλεί αλυσιδωτές ανακλήσεις δοσοληψιών. Υποθέστε ότι καμία από τις δοσοληψίες δεν έχει επικυρωθεί (επομένως είναι ανακάμψιμες) Αν η T 10 αποτύχει, τότε οι T 11 και T 12 θα πρέπει να ανακληθούν Οδηγεί σε αύξηση του κόστους
21
Χρονοπρογράμματα με αποφυγή διάδοσης ανάκλησης Αποφυγή διάδοσης ανάκλησης — η διάδοση ανάκλησης δεν μπορεί να συμβεί: για κάθε ζευγάρι δοσοληψιών T i and T j έτσι ώστε η T j να διαβάζει ένα στοιχείο που ενημερώθηκε πριν από την T i, η πράξη επικύρωσης της T i εμφανίζεται πριν από την πράξη ανάγνωσης της T j. Κάθε τέτοιο χρονικό είναι ανακάμψιμο Commit(10) Commit(11)
22
Συνδρομικότητα. Γιατί; Βελτιωμένη απόδοση και χρήση πόρων (όσο γίνεται ένα Ι/Ο μία άλλη δοσοληψία χρησιμοποιεί τη CPU) Περιορισμένος χρόνος αναμονής (μία μεγάλη δοσοληψία δεν αργοπορεί τις μικρότερες)
23
Παράδειγμα Χρονικού (1) Έστω ότι η T 1 μεταφέρει 50 ευρώ από το λογαριασμό A στον B, και η T 2 μεταφέρει 10% του υπολοίπου του Α στον Β. Ένα σειριακό χρονικό όπου η T 1 ακολουθείται από την T 2 :
24
Ένα σειριακό χρονικό όπου το T 2 ακολουθείται από το T 1 (δεν έχουν ίδιο αποτέλεσμα): Παράδειγμα Χρονικού (2)
25
Έστω T 1 και T 2 οι προηγούμενες δοσοληψίες. Το ακόλουθο είναι ένα μη σειριακό χρονικό αλλά είναι ισοδύναμο με το χρονικό 1. Στα χρονοπρογράμματα 1, 2 και 3, το άθροισμα A + B διατηρείται. Παράδειγμα Χρονικού (3)
26
Το ακόλουθο χρονικό δεν διατηρεί το άθροισμα A + B. Γιατί; Παράδειγμα Χρονικού (4)
27
Σειριοποιησιμότητα Βασική Υπόθεση – Κάθε δοσοληψία εγγυάται τη συνέπεια της βάσης. Επομένως η σειριακή εκτέλεση ενός συνόλου δοσοληψιών εγγυάται τη συνέπεια της βάσης. Ένα συνδρομικό χρονοπρόγραμμα είναι σειριοποιήσιμο αν είναι ισοδύναμο με ένα σειριακό χρονοπρόγραμμα. Διαφορετικές μορφές ισοδυναμίας οδηγούν σε: σειριοποιησιμότητα αντιθέσεων σειριοποιησιμότητα όψεων
28
Οι ισοδυναμίες θα εκφρασθούν ως συνάρτηση των πράξεων ανάγνωσης και εγγραφής. Όλες οι άλλες πράξεις είναι «άσχετες». Θα δούμε μετά ότι οι υπόλοιπες πράξεις δεν είναι τελικά και τόσο «άσχετες» Εγγραφές - Αναγνώσεις
29
Αντίθετες Πράξεις Οι πράξεις l i και l j των δοσοληψιών T i και T j αντίστοιχα είναι αντίθετες αν και μόνο αν υπάρχει ένα στοιχείο Q που προσπελαύνεται από τις l i και l j, και τουλάχιστον μία από τις δύο έκανε εγγραφή του Q. 1. l i = read(Q), l j = read(Q). δεν είναι αντίθετες 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 ήταν συνεχόμενες σε ένα χρονικό και δεν ήταν αντίθετες, τότε το αποτέλεσμα θα ήταν το ίδιο ακόμα και αν είχαμε αλλάξει τη σειρά τους στο χρονικό.
30
Σειριοποιησιμότητα Αντιθέσεων Αν ένα χρονικό S μπορεί να αλλάξει σε ένα χρονικό S´ μέσω μίας ακολουθίας από αντιμεταθέσεις πράξεων που δεν είναι αντίθετες, λέμε ότι τα S και S´ είναι ισοδύναμα αντιθέσεων. Λέμε ότι ένα χρονικό S είναι σειριοποιήσιμο αντιθέσεων αν είναι ισοδύναμο αντιθέσεων με κάποιο σειριακό χρονικό.
31
Το χρονικό 3 μπορεί να μεταμορφωθεί στο χρονικό 6, με μία σειρά αντιμεταθέσεων. Άρα το χρονικό 3 είναι σειριοποιήσιμο αντιθέσεων. Χρονικό 3Χρονικό 6 Σειριοποιησιμότητα Αντιθέσεων Παράδειγμα(1)
32
Παράδειγμα χρονικού που δεν είναι σειριοποιήσιμο αντιθέσεων: Δεν μπορούμε να αντιμεταθέσουμε τις πράξεις ώστε να δημιουργήσουμε το σειριακό χρόνικό, ή το σειριακό χρονικό. Σειριοποιησιμότητα Αντιθέσεων Παράδειγμα(2)
33
Σειριοποιησιμότητα Βάσει Όψης Έστω S και S´ δύο χρονικά με το ίδιο σύνολο δοσοληψιών. Τα S και S´ είναι ισοδύναμα όψεων αν ισχύουν τα εξής: 1.Για κάθε στοιχείο Q, αν η δοσοληψία T i διαβάζει την αρχική τιμή του Q στο S, τότε η δοσοληψία T i στο S´ πρέπει επίσης να διαβάζει την αρχική τιμή του Q. 2.Για κάθε στοιχείο Q αν η δοσοληψία T i εκτελεί read(Q) στο S, και η τιμή είχε παραχθεί από τη δοσοληψία T j (αν υπάρχει), τότε η δοσοληψία T i στο S´ θα πρέπει επίσης να διαβάζει την τιμή Q που παρήχθηκε από την T j. 3.Για κάθε στοιχείο Q, η δοσοληψία (αν υπάρχει) που εκτελεί την τελική write(Q) πράξη στο S πρέπει να εκτελεί την τελική write(Q) πράξη στο S´.
34
Διαίσθηση Κάθε πράξη ανάγνωσης διαβάζει το αποτέλεσμα της ίδιας πράξης εγγραφής και στα δύο χρονοπρογράμματα. Οι πράξεις ανάγνωσης βλέπουν την ίδια όψη και στα δύο χρονοπρογράμματα
35
Το χρονικό S είναι σειριοποιήσιμο βάσει όψης αν είναι ισοδύναμο όψης με ένα σειριακό χρονικό Σειριοποιησιμότητα Βάσει Όψης – Παράδειγμα(1)
36
Κάθε σειριοποιήσιμο αντιθέσεων είναι σειριοποιήσιμο βάσει όψης Παρακάτω ακολουθεί ένα χρονικό που είναι σειριοποιήσιμο βάσει όψης αλλά όχι σειριοποιήσιμο αντιθέσεων Ποιο είναι το ισοδύναμο σειριακό χρονικό; Κάθε σειριοποιήσιμο βάσει όψης χρονικό που δεν είναι σειριοποιήσιμο αντιθέσεων περιέχει τυφλές εγγραφές. Σειριοποιησιμότητα Βάσει Όψης – Παράδειγμα(2)
37
Έλεγχος Σειριοποιησιμότητας με αντίθεση Έστω ένα χρονικό ενός συνόλου δοσοληψιών T 1, T 2,..., T n Γράφος Προήγησης — ένας κατευθυνόμενος γράφος όπου οι κορυφές είναι οι δοσοληψίες Υπάρχει ακμή από την T i στην T j αν οι δύο δοσοληψίες είναι αντίθετες (κάποια από τις πράξεις τους), και η T i προσπέλασε το στοιχείο στο οποίο υπάρχει η αντίθεση νωρίτερα.
38
Παράδειγμα – Χρονικό Α T 1 T 2 T 3 T 4 T 5 read(X) read(Y) read(Z) read(V) read(W) read(W) read(Y) write(Y) write(Z) read(U) read(Y) write(Y) read(Z) write(Z) read(U) write(U) T3T3 T4T4 T1T1 T2T2 Τ5Τ5
39
Παράδειγμα – Χρονικό Β T 1 T 2 T 3 T 4 T 5 read(X) read(Y) read(Z) read(V) read(W) read(W) read(Y) write(Y) write(Z) read(U) write(Y) read(Y) write(Y) read(Z) write(Z) read(U) write(U) T3T3 T4T4 T1T1 T2T2 Τ5Τ5
40
Έλεγχος για σειριοποιησιμότητα Αντιθέσεων Ένα χρονικό είναι σειριοποιήσιμο αντιθέσεων αν και μόνο αν ο γράφος πρόηγησης δεν έχει κύκλο. Αλγόριθμοι εύρεσης κύκλου υπάρχουν με πολυπλόκοτητα n 2 (ή n+e, όπου e είναι ο αριθμός των ακμών), όπου n είναι ο αριθμός των κορυφών του γράφου. Αν ένας γράφος προήγησης δεν έχει κύκλο, τότε η ακολουθία σειριοποίησης προκύπτει από μία τοπολογική διάταξη του. Για παράδειγμα, μία ακολουθία σειριοποίησης για το χρονικό Α θα ήταν T 5 T 1 T 3 T 2 T 4 Υπάρχουν άλλες;
41
Άλλες Σειριοποιήσεις (δοσοληψίες χρέωσης – πίστωσης) Το διπλανό χρονικό παράγει το ίδιο αποτέλεσμα με το σειριακό. Παρόλα αυτά δεν είναι ούτε ισοδύναμο αντιθέσεων ούτε ισοδύναμο όψης. Ο καθορισμός αυτής της ισοδυναμίας προϋποθέτει ανάλυση και άλλων πράξεων εκτός της read και write. Στην προκειμένη περίπτωση οι πράξεις + και – μπορούν να εκτελεστούν με οποιαδήποτε σειρά.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.