ΤΕΧΝΙΚΕΣ ΤΑΥΤΟΧΡΟΝΙΣΜΟΥ ΓΕΩΡΓΙΑ ΓΚΑΡΑΝΗ ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΡΙΑ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΛΑΡΙΣΑΣ garani@teilar.gr
Σειροποιησιμότητα 2 Ησειροποιησιμότητα αποτελεί το γενικά αποδεκτό κριτήριο γα τον έλεγχο των συναλλαγών. Έτσι, μια δεδομένη πλεκτή εκτέλεση ενός συνόλου συναλλαγών θεωρείται σωστή αν είναι σειροποιήσιμη, δηλ. αν παράγει το ίδιο αποτέλεσμα με κάποια σειριακή εκτέλεση των ίδιων συναλλαγών, όπου εκτελούνται μία μία. 1. Οι μεμονωμένες συναλλαγές θεωρούνται σωστές δηλ. θεωρείται ότι μετατρέπουν μια συνεπή κατάσταση της βάσης δεδομένωνσεμιαάλλησυνεπήκατάσταση. 2. Ηεκτέλεση των συναλλαγών μίας προς μίας, με οποιαδήποτε σειρά, είναι επομένως σωστή επίσης, -λέμε «με οποιαδήποτε σειρά» επειδή θεωρούμε ότι οι μεμονωμένες συναλλαγές είναιανεξάρτητεςμεταξύτους. 3. Μια πλεκτή εκτέλεση είναι λοιπόν σωστή αν είναι ισοδύναμη μεκάποιασειριακήανάλυση, δηλ. ανείναισειροποιήσιμη.
Χρονοδιάγραμμα 3 Με δεδομένο ένα σύνολο συναλλαγών, οποιαδήποτε εκτέλεση αυτών των συναλλαγών (πλεκτή ή όχι) ονομάζεται χρονοδιάγραμμα (schedule). Η εκτέλεση των συναλλαγών μίας προς μία, χωρίς διαπλοκήαποτελείένα σειριακό χρονοδιάγραμμα. Ένα χρονοδιάγραμμα που δεν είναι σειριακό είναι ένα πλεκτό χρονοδιάγραμμα. Δύο χρονοδιαγράμματα λέγονται ισοδύναμα αν είναι εγγυημένο ότι δίνουν το ίδιο αποτέλεσμα, ανεξάρτητα από την αρχική κατάσταση της βάσης δεδομένων. Έτσι, ένα χρονοδιάγραμμα είναι σωστό (δηλ. σειροποιήσιμο) αν είναιισοδύναμο μεκάποιοσειριακόχρονοδιάγραμμα.
Θεώρημα του κλειδώματος δύο φάσεων 4 Αν όλες οι συναλλαγές υπακούουν στο «πρωτόκολλο κλειδώματος δύο φάσεων», τότε όλα τα δυνατά πλεκτά χρονοδιαγράμματα είναι σειροποιήσιμα. Το πρωτόκολλοκλειδώματοςδύο φάσεων ορίζεταιως εξής: Πριν επενεργήσει σε οποιοδήποτε αντικείμενο (π.χ. σε μια συστοιχία βάσης δεδομένων), μια συναλλαγή πρέπει να αποκτήσει ένακλείδωμασεαυτότοαντικείμενο. Αφού απελευθερώσει ένα κλείδωμα, μία συναλλαγή δεν πρέπει ποτέ ναπροχωρήσειστηναπόκτησηκαιάλλωνκλειδωμάτων. Μια συναλλαγή που υπακούει σε αυτό το πρωτόκολλο έχει λοιπόν δύο φάσεις, μία φάση απόκτησης κλειδώματος και μία φάση απελευθέρωσης κλειδώματος που ενσωματώνεται συνήθως στην πράξηcommit ή ROLLBACK στοτέλος της συναλλαγής.
Παρατηρήσεις στα χρονοδιαγράμματα 5 Δύο διαφορετικά σειριακά χρονοδιαγράμματα που περιλαμβάνουν το ίδιο σύνολο συναλλαγών θα μπορούσαν να δίνουν διαφορετικά αποτελέσματα και επομένως, δύο διαφορετικά πλεκτά χρονοδιαγράμματα που περιλαμβάνουν αυτές τις συναλλαγές μπορεί επίσης να δίνουν διαφορετικό αποτέλεσμα και, παρόλα αυτά, να θεωρούνται και τα δύο σωστά. Παράδειγμα: Ας υποθέσουμε ότι η συναλλαγή Α είναι της μορφής «Να προστεθεί 1 στο x» και η συναλλαγή Β της μορφής «Να διπλασιαστεί το x» (όπου x κάποιο στοιχείο στη βάση δεδομένων). Υποθέστεεπίσης, ότιηαρχική τιμή του x είναι 10. Τότε, το σειριακό χρονοδιάγραμμα «πρώτα ηακαι μετά ηβ» δίνει x=22, ενώ τοσειριακό χρονοδιάγραμμα «πρώτα ηβκαι μετά ηα» δίνει x=21. Αυτά τα δύο χρονοδιαγράμματα είναι και τα δύο σωστά και οποιοδήποτε χρονοδιάγραμμα που είναι εγγυημένα ισοδύναμο είτε με το ένα είτε με το άλλο είναι επίσης σωστό.
Παρατηρήσεις στα χρονοδιαγράμματα (συν.) 6 Έστω Εένα πλεκτό χρονοδιάγραμμα που περιλαμβάνει ένα σύνολο συναλλαγών Τ1, Τ2,, Τn. Αν το Ε είναι σειροποιήσιμο, τότε υπάρχει κάποιο σειριακό χρονοδιάγραμμα S που περιλαμβάνει τις Τ1, Τ2,, Τn, έτσιώστετοεναείναιισοδύναμομετο S. Λέμεότιτο S είναι μια σειροποίηση του Ε (το S δεν είναι απαραίτητα μοναδικό). Έστω ότι Τi και Tj δύο οποιεσδήποτεσυναλλαγέςαπότοσύνολο Τ1, Τ2,, Τn. Θεωρούμε ότι η Τi προηγείται της Tj στη σειροποίηση S. Στο πλεκτό διάγραμμα Ε,το αποτέλεσμα πρέπει να είναι σαν να εκτελείται πραγματικά η Ti πριν από την Tj. Με άλλα λόγια, αν οι Α και Β είναι δύο συναλλαγές που περιλαμβάνονται σε κάποιο χρονοδιάγραμμα σειροποίησης, τότε ήηαπροηγείται λογικά της Β ήηβπροηγείται λογικά της Ασε αυτό τοχρονοδιάγραμμα, δηλ. ήη Ββλέπει τηνέξοδο της ΑήηΑβλέπει την έξοδο της Β.Αντίθετα, αν τοαποτέλεσμα δενείναι ούτεσαννα εκτελέστηκεηαπριναπότηβ ούτε σαν να εκτελέστηκε η Β πριν από την Α, τότε το χρονοδιάγραμμα δεν είναι σειροποιήσιμο και, επομένως, δεν είναι σωστό.
Επίπεδα απομόνωσης 7 Οόρος επίπεδο απομόνωσης χρησιμοποιείται για να υποδηλώσει τον βαθμό παρεμβολής που μπορεί να ανεχθεί μια δεδομένη συναλλαγή όσον αφορά τις ταυτόχρονεςσυναλλαγές. Μπορούν να οριστούν πολλά διαφορετικά επίπεδα απομόνωσης. Όσο υψηλότερο το επίπεδο απομόνωσης, τόσο μικρότερες είναι οι παρεμβολές (καιτόσοχαμηλότεροςοταυτοχρονισμός).
Επίπεδα απομόνωσης (DB2) 8 To DB2 υποστηρίζει δύο επίπεδα απομόνωσης, τη σταθερότητα δρομέα (cursor stability, CS) και την επαναλήψιμη ανάγνωση (repeatable read, RR). Ηεπαναλήψιμη ανάγνωση είναι το υψηλότερο επίπεδο, αν όλες οι συναλλαγές λειτουργούν σε αυτό το επίπεδο, τότε όλα τα χρονοδιαγράμματαείναισειροποιήσιμα. Αντίθετα, μετησταθερότηταδρομέα: αν μια συναλλαγή Τ1 αποκτήσει δυνατότητα προσπέλασης κάποιας συστοιχίας p θέτοντας ένα δρομέα που δείχνει σε αυτή τησυστοιχίακαιεπομένως αποκτήσειένακλείδωμαστην p καιέπειτα παραιτηθεί από τη δυνατότητά της για προσπέλαση της συστοιχίας p χωρίς να την ενημερώσει, και επομένως δενπροάγειτοκλείδωμάτηςσεεπίπεδοχ,τότε αυτό το κλείδωμα μπορεί να απελευθερωθεί χωρίς να χρειάζεταιναπεριμένειγιατοτέλοςτηςσυναλλαγής.
Επίπεδα απομόνωσης (DB2) 9 Κάποια άλλη συναλλαγή Τ2 μπορεί τώρα να ενημερώσει τη συστοιχία p και να επικυρώσει τη μεταβολή. Αν τώρα η συναλλαγή Τ1 επανέλθει και κοιτάξει πάλι τη συστοιχία p,θα δει αυτή τη μεταβολή και έτσι μπορεί να διαπιστώσει μια ασυνεπή κατάστασητηςβάσηςδεδομένων. Αντίθετα, στο επίπεδο της επαναλήψιμης ανάγνωσης, όλα τα κλειδώματα συστοιχιών (όχι μόνο τα κλειδώματα Χ) διατηρούνται μέχρι το τέλος της συναλλαγής και επομένως το πρόβλημα που περιγράψαμεεδώδεμπορείναπροκύψει.
S Κλειδώματα Χ και S 10 Η Τ ανέχεται ταυτόχρονες αναγνώσεις, αλλά όχι ταυτόχρονες ενημερώσεις της R. Η ίδια η Τ δεν ενημερώνεισυστοιχίεςτης R. Χ ΗΤδεν ανέχεται καμία απολύτως προσπέλαση της R. Ηίδια ητμπορεί να ενημερώνει ήνα μην ενημερώνει μεμονωμένεςσυστοιχίεςτης R.
Προτιθέμενο κλείδωμα 11 Κλειδώματα μπορούν να εφαρμόζονται σε μεμονωμένες συστοιχίες, σε ολόκληρες σχέσεις ήκαι σε ολόκληρη τη βάση δεδομένων ήακόμη και σε μια συγκεκριμένη τιμή γνωρίσματος μέσασεμιασυγκεκριμένησυστοιχία. Αυτό ονομάζεται μικροδομήτου κλειδώματος. Όσο πιο λεπτή είναι ημικροδομή, τόσο μεγαλύτερος είναι ο ταυτοχρονισμός, όσο πιο χοντρή είναι η μικροδομή, τόσο λιγότερα κλειδώματα χρειάζεται να τίθενται και να ελέγχονται καιτόσοχαμηλότερηείναιηεπιβάρυνση. Παράδειγμα: Αν μια συναλλαγή έχει ένα κλείδωμα Χπάνω σε μια ολόκληρη σχέση, δεν είναι ανάγκη να τίθενται κλειδώματα Χ σε μεμονωμένες συστοιχίες μέσα σε αυτή τη σχέση, πράγμα που προφανώς μειώνει το συνολικό αριθμό των κλειδωμάτων. Από την άλλη, καμία ταυτόχρονη συναλλαγή δε θα μπορεί να αποκτήσει κανένα κλείδωμα σε αυτή τη σχέση ήτις συστοιχίες αυτήςτηςσχέσης.
Προτιθέμενο κλείδωμα (συν.) 12 Έστωότικάποια συναλλαγήτζητάει ένα κλείδωμα Χσε μία σχέση R. Μόλις πάρει την αίτηση της Τα, το σύστημα πρέπει να έχει τη δυνατότητα να διαπιστώσει αν οποιαδήποτε άλλη συναλλαγή κατέχει ήδη ένα κλείδωμα σε οποιαδήποτε συστοιχία της R γιατί αν συμβαίνει αυτό, η αίτηση της Τ δεν μπορεί να ικανοποιηθεί τη συγκεκριμένηστιγμή. Πώς μπορεί το σύστημα να εντοπίσει μια τέτοια σύγκρουση; Προφανώςδενείναιεπιθυμητόναεξετάζεικάθεσυστοιχίατηςσχέσης R για να δει αν οποιαδήποτε συστοιχία είναι κλειδωμένη από οποιαδήποτε άλλη συναλλαγή ήνα εξετάζει κάθε υπάρχον κλείδωμα γιαναδει ανκάποιοαπόαυτάαφοράμιασυστοιχίατης R. Γι αυτό, εισάγουμε ένα άλλο πρωτόκολλο, το πρωτόκολλο προτιθέμενου κλειδώματος, σύμφωνα με το οποίο καμία συναλλαγή δεν επιτρέπεται να αποκτήσει ένα κλείδωμα σε συστοιχία ανδεναποκτήσειπρώταένακλείδωμα τοοποίομπορεί ναείναι προτιθέμενο κλείδωμα στη σχέση που την περιέχει. Οεντοπισμός της σύγκρουσης γίνεται τότε ένα σχετικά απλό ζήτημα, αρκεί να διαπιστωθεί αν οποιαδήποτε συναλλαγή έχει κάποιο συγκρουόμενο κλείδωμασεεπίπεδοσχέσης.
Προτιθέμενο κλείδωμα (συν.) 13 Εισάγουμε τρία νέα είδη κλειδωμάτων, που ονομάζονται προτιθέμενα κλειδώματα, τα οποία έχουν νόημα και γιαολόκληρεςσχέσειςκαιγιαμεμονωμένεςσυστοιχίες: 1.Προτιθέμενομεριζόμενο κλείδωμα (IS) 2.Προτιθέμενοαποκλειστικόκλείδωμα (IX) 3.Μεριζόμενο και προτιθέμενο αποκλειστικό κλείδωμα (SIX)
1.Προτιθέμενο μεριζόμενο κλείδωμα (IS) 14 Η συναλλαγή Τ σκοπεύει να θέσει κλειδώματα S σε μεμονωμένες συστοιχίες της R, για να εξασφαλιστεί η σταθερότητα αυτών των συστοιχιών ενώ γίνεται η επεξεργασίατους.
2.Προτιθέμενο αποκλειστικό κλείδωμα (IX) 15 Το ίδιο με το IS και επιπλέον η Τ μπορεί να χρειαστεί να ενημερώνει μεμονωμένες συστοιχίες της R, γι αυτό θέτεικλειδώματαχσεαυτέςτιςσυστοιχίες.
3.Μεριζόμενο και προτιθέμενο αποκλειστικό κλείδωμα (SIX) 16 Συνδυάζει τα S και IX, δηλ. η Τ ανέχεται ταυτόχρονες αναγνώσεις, αλλά όχι ταυτόχρονες ενημερώσεις της R, και επιπλέον η Τ μπορεί να χρειαστεί να ενημερώνει μεμονωμένες συστοιχίες της R, γι αυτό θέτεικλειδώματα X σεαυτέςτιςσυστοιχίες.
Μητρώο συμβατότητας 17 X SIX IX S IS - X O O O O O N SIX O O O O N N IX O O N O N N S O O O N N N IS O N N N N N - N N N N N N
Πρωτόκολλο προτιθέμενου κλειδώματος 18 1. Για να μπορέσει μια δεδομένη συναλλαγή να αποκτήσει ένα κλείδωμα S σε μια δεδομένη συστοιχία, πρέπει πρώτα να αποκτήσει ένα κλείδωμα IS πάνω στη σχέση που περιέχει αυτή τη συστοιχία. 2. Για να μπορέσει μια δεδομένη συναλλαγή να αποκτήσει ένα κλείδωμα Χ σε μια δεδομένη συστοιχία, πρέπει πρώτα να αποκτήσει ένα κλείδωμα IX πάνω στη σχέση που περιέχει αυτή τη συστοιχία.
Γράφημα προτεραιότητας Λέμε ότι ο τύπος κλειδώματος L2 είναι ισχυρότερος δηλ. πιο ψηλά στο γράφημα- από τον τύπο κλειδώματος L1 αν και μόνο αν, όποτε υπάρχει ένα «Ο» (μια σύγκρουση) στη στήλη του L1 στο μητρώο συμβατότητας σε μια δεδομένη γραμμή, υπάρχει επίσης ένα «Ο» στη στήλη του L2 σε αυτή την ίδια γραμμή. 19 S Χ SIX IX Σημείωση: Μια αίτηση κλειδώματος που αποτυγχάνει για ένα δεδομένο τύπο κλειδώματος σίγουρα θα αποτύχει και για έναν ισχυρότερο τύπο κλειδώματος. IS
Κλιμάκωση κλειδωμάτων 20 Όταν το σύστημα φτάσει σε κάποιο προκαθορισμένο κατώφλι, αντικαθιστά αυτόματα ένα σύνολο κλειδωμάτων λεπτής μικροδομής με ένα μόνο κλείδωμα χονδρής μικροδομής για παράδειγμα, καταργώντας ένα σύνολο μεμονωμένων κλειδωμάτων S σε επίπεδο συστοιχίας και μετατρέποντας το κλείδωμα IS της περιέχουσαςσχέσης σε κλείδωμα S.
Υποστήριξη από την SQL 21 Η SQL δεν παρέχει δυνατότητα για δυνατότητα για ρητά κλειδώματα. Απαιτεί όμως από την υλοποίηση να παρέχει τις συνηθισμένες εγγυήσεις για τις παρεμβολές ήμάλλον για την απουσία τους, μεταξύ συναλλαγών που εκτελούνταιταυτόχρονα. Ειδικότερα, απαιτεί οι ενημερώσεις που πραγματοποιούνται από μια δεδομένη συναλλαγή Τ1να μη γίνονται ορατές σε οποιαδήποτε άλλη συναλλαγή Τ2, παρά μόνο αν και όταν η συναλλαγή Τ1 τερματιστεί με επικύρωση (COMMIT). Ο τερματισμός με επικύρωση κάνει όλες τις ενημερώσεις που πραγματοποιήθηκαν από τη συναλλαγή να γίνουν ορατές στις άλλες συναλλαγές. Ο τερματισμός με ανασκευή (ROLLBACK) κάνει όλες τις ενημερώσεις που πραγματοποιήθηκαναπότησυναλλαγήναακυρωθούν.
Επίπεδα απομόνωσης στην SQL 22 SET TRANSACTION: χρησιμοποιείται για τον ορισμό κάποιων χαρακτηριστικών της επόμενης συναλλαγής που θα ξεκινήσει Ένα από αυτά τα χαρακτηριστικά είναι απομόνωσηςπουείναιένααπόταπαρακάτω: το επίπεδο READ UNCOMMITED ανάγνωση ανεπικύρωτων READ COMMITTED ανάγνωση επικυρωμένων REPEATABLE READ επαναλήψιμη ανάγνωση SERIALIZABLE σειροποιήσιμο Η προεπιλογή είναι SERIALIZABLE. Αν καθοριστεί οποιοδήποτε από τα άλλα τρία επίπεδα, η υλοποίηση έχει την ελευθερία να επιλέξει κάποιο ανώτερο επίπεδο, όπουτο «ανώτερο» ορίζεται μεβάσητηδιάταξη: SERIALIZABLE >REPEATABLE READ> READ COMMITTED > READ UNCOMMITED
Επίπεδα απομόνωσης στην SQL(συν.) 23 Αν όλες οι συναλλαγές εκτελούνται στο επίπεδο απομόνωσης SERIALIZABLE, τότε ηπλεκτή εκτέλεση οποιουδήποτε συνόλου συναλλαγών είναι εγγυημένα σειροποιήσιμη. Αν όμως οποιαδήποτε συναλλαγή εκτελείται σε κατώτερο επίπεδο απομόνωσης, τότε η σειροποιησιμότητα μπορεί να παραβιαστεί με πολλούς διαφορετικούςτρόπους. Το πρότυπο ορίζει τρεις συγκεκριμένους τρόπους με τους οποίους θα μπορούσε να παραβιαστεί η σειροποιησιμότητα, που είναι η αναξιόπιστη ανάγνωση, η μη επαναλήψιμη ανάγνωση και τα φαντάσματα.
Αναξιόπιστη ανάγνωση 24 Υποθέστε ότι μια συναλλαγή T1 κάνει μια ενημέρωση σε κάποια γραμμή, μετά η συναλλαγή Τ2 ανακαλεί αυτή τη συναλλαγή και μετά η συναλλαγή Τ1 τερματίζεται με ανασκευή. Τότε, ησυναλλαγή Τ2έχει δει μια γραμμή που δεν υπάρχει πια και κατά μια έννοια, δεν υπήρξε ποτέ (επειδή η συναλλαγή Τ1 ουσιαστικάδενεκτελέστηκεποτέ).
Μη επαναλήψιμη ανάγνωση 25 Υποθέστε ότιησυναλλαγή T1 ανακαλείμια γραμμή, μετά ησυναλλαγή Τ2ενημερώνει αυτή τη γραμμή και μετά η συναλλαγή Τ1 ανακαλεί πάλι την «ίδια» γραμμή. Ησυναλλαγή Τ1έχει ανακαλέσει τώρα την «ίδια» γραμμή δύο φορές, αλλά βλέπει δύο διαφορετικέςτιμές.
Φαντάσματα 26 Υποθέστε ότι η συναλλαγή T1 ανακαλεί το σύνολο όλωντωνγραμμώνπουικανοποιούνκάποιασυνθήκη. Υποθέστε ότι στη συνέχεια ησυναλλαγή Τ2εισάγει μια νέα γραμμήπουικανοποιείαυτή τηνίδια συνθήκη. Αν τώρα η συναλλαγή Τ1 επαναλάβει την αίτηση ανάκλησης, θα δει μια γραμμή που δεν υπήρχε πριν ένα «φάντασμα».
Επιτρεπόμενες παραβιάσεις 27 Τα διάφορα επίπεδα απομόνωσης ορίζονται με βάση ποιες από τις προηγούμενες παραβιάσεις της σειροποιησιμότητας επιτρέπουν. Επίπεδοαπομόνωσης Αναξιόπιστη ανάγνωση Μηεπαναλήψιμη ανάγνωση Φάντασμα READ UNCOMMITTED Ν Ν Ν READCOMMITTED Ο Ν Ν REPEATABLE READ Ο Ο Ν SERIALIZABLE Ο Ο Ο Πώς μπορεί το σύστημα να εμποδίσει να εμφανίζονται «φαντάσματα»;