Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεDennis Petrakis Τροποποιήθηκε πριν 9 χρόνια
1
1 Βάσεις Δεδομένων ΙII Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ tmanavis@ist.edu.gr Διαχείριση συναλλαγών Transaction Management T Manavis
2
Διαχείριση Συναλλαγών (Transaction Management) Ορισμός της συναλλαγής Καταστάσεις μιας συναλλαγής Υλοποίηση της Ατομικότητας και της Μονιμότητας – Atomicity and Durability Ταυτοχρονικές εκτελέσεις - Concurrency Σειριοποιησιμότητα - Serializability Δυνατότητα Επαναφοράς (ή ανάκαμψης) - Recoverability Υλοποίηση της Απομόνωσης - Isolation Ορισμός των συναλλαγών στην SQL Έλεγχος για σειριοποιησιμότητα Πηγή: Silberschatz et al., “Database System Concepts”, 4 th ed. (Chapter 15) Μετάφραση στα Ελληνικά: © Γιάννης Θεοδωρίδης, 2002-03
3
Ορισμός της συναλλαγής Μια συναλλαγή (transaction) είναι ένα τμήμα της εκτέλεσης προγράμματος, που προσπελαύνει και πιθανόν ενημερώνει διάφορα αντικείμενα δεδομένων. Μια συναλλαγή πρέπει να βλέπει μια συνεπή βάση και όταν επικυρωθεί η συναλλαγή, η βάση δεδομένων πρέπει να είναι πάλι συνεπής. Κατά τη διάρκεια της συναλλαγής η βάση μπορεί να είναι ασυνεπής. Δυο βασικά θέματα πρέπει να αντιμετωπιστούν: Διαφόρων ειδών αποτυχίες, όπως αποτυχίες υλικού και πτώσεις συστήματος (crash) Η ταυτόχρονη εκτέλεση πολλαπλών συναλλαγών.
4
Ιδιότητες ACID Για να προστατέψουμε την ακεραιότητα των δεδομένων, το σύστημα της βάσης δεδομένων πρέπει να εγγυάται: Ατομικότητα (Atomicity). Είτε όλες οι πράξεις της συναλλαγής ανακλώνται στη βάση δεδομένων είτε καμία. Συνέπεια (Consistency). Η εκτέλεση της συναλλαγής σε απομόνωση προστατεύει τη συνέπεια της βάσης δεδομένων. Απομόνωση (Isolation). Μολονότι πολλαπλές συναλλαγές μπορεί να εκτελούνται ταυτόχρονα, κάθε συναλλαγή πρέπει να αγνοεί τις υπόλοιπες ταυτοχρονικές συναλλαγές. Τα ενδιάμεσα αποτελέσματα μιας συναλλαγής πρέπει να «κρύβονται» από άλλες συναλλαγές που εκτελούνται ταυτοχρονικά. Δηλαδή, για κάθε ζεύγος συναλλαγών T i και T j, η T i θα νομίζει ότι είτε η T j, ολοκληρώθηκε πριν ξεκινήσει η T i ή ότι η T j ξεκίνησε αφού ολοκληρώθηκε η T i. Μονιμότητα (Durability). Αφού μια συναλλαγή ολοκληρωθεί επιτυχώς, οι αλλαγές που έχει κάνει στη βάση δεδομένων υπάρχουν, ακόμα και αν προκύψουν αποτυχίες του συστήματος.
5
Παράδειγμα μεταφοράς κεφαλαίου (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, το σύστημα πρέπει να διαβεβαιώσει ότι οι αλλαγές που έγιναν δεν αντανακλώνται στη βάση, αλλιώς θα οδηγηθούμε σε ασυνεπή βάση δεδομένων.
6
Παράδειγμα μεταφοράς κεφαλαίου (2) Απαίτηση διάρκειας: μόλις ο χρήστης ενημερωθεί ότι η συναλλαγή έχει ολοκληρωθεί (δηλ, έχει γίνει η μεταφορά των $50), οι αλλαγές στη βάση δεδομένων πρέπει να παραμείνουν παρά τις οποιεσδήποτε αποτυχίες. Απαίτηση απομόνωσης: εάν μεταξύ των βημάτων 3 και 6, επιτραπεί σε μια άλλη συναλλαγή να προσπελάσει τη μερικώς ενημερωμένη βάση, εκείνη θα δει μια ασυνεπή βάση δεδομένων (το άθροισμα A + B θα είναι μικρότερο από όσο θα έπρεπε να είναι). Μπορούμε να εγγυηθούμε για την απομόνωση, αν τρέξουμε τις συναλλαγές σειριακά, δηλαδή τη μια μετά την άλλη. Παρ’ όλα αυτά, η ταυτοχρονική εκτέλεση πολλαπλών συναλλαγών έχει σημαντικά πλεονεκτήματα, όπως θα δούμε.
7
Καταστάσεις μιας συναλλαγής (1) Ενεργή (Active), η αρχική κατάσταση. Η συναλλαγή παραμένει σε αυτήν την κατάσταση όσο εκτελείται. Μερικώς επικυρωμένη (Partially committed), μετά την εκτέλεση και της τελευταίας εντολής. Αποτυχημένη (Failed), μετά τη διαπίστωση ότι δε μπορεί να προχωρήσει η κανονική εκτέλεση. Ακυρωμένη (Aborted), αφού έχει υποχωρήσει η συναλλαγή (rollback) και η βάση έχει επιστρέψει στην κατάσταση που ήταν πριν την έναρξη της συναλλαγής. Υπάρχουν τώρα δυο δυνατότητες: Επανέναρξη της συναλλαγής – μόνο αν δεν υπάρχει κάποιο εσωτερικό λογικό λάθος «Σκότωμα» της συναλλαγής. Επικυρωμένη ή ολοκληρωμένη (Committed), μετά την επιτυχή ολοκλήρωση.
8
Καταστάσεις μιας συναλλαγής (2)
9
Υλοποίηση της ατομικότητας και της μονιμότητας (1) Το τμήμα διαχείρισης επαναφοράς (recovery manager) ενός συστήματος βάσης δεδομένων υλοποιεί την υποστήριξη της ατομικότητας και της μονιμότητας. Το σχήμα shadow-database: Υποθέτει ότι μόνο μια συναλλαγή είναι ενεργή μια χρονική στιγμή. Ένας δείκτης που ονομάζεται db_pointer δείχνει συνεχώς στο τρέχον συνεπές αντίγραφο της βάσης. Όλες οι ενημερώσεις γίνονται στο αντίγραφο-σκιά (shadow copy) της βάσης και ο db_pointer ετοιμάζεται ώστε να δείχνει στο ενημερωμένο αντίγραφο-σκιά μόνο αφού η συναλλαγή μερικώς επικυρωθεί και όλες οι ενημερωμένες σελίδες αντανακλαστούν στο δίσκο. Στην περίπτωση αποτυχίας της συναλλαγής, μπορεί να χρησιμοποιηθεί το παλιό συνεπές αντίγραφο που δείχνεται από τον db_pointer και το αντίγραφο–σκιά μπορεί να διαγραφεί.
10
Υλοποίηση της ατομικότητας και της μονιμότητας (2) Υποθέτει ότι οι δίσκοι δεν αποτυγχάνουν Είναι χρήσιμο για κειμενογράφους (text editors), αλλά ΔΕΝ είναι αποδοτικό για μεγάλες βάσεις δεδομένων: η εκτέλεση μιας απλής συναλλαγής απαιτεί την αντιγραφή ολόκληρης της βάσης δεδομένων. (Θα δούμε καλύτερα σχήματα στο κεφάλαιο «Σύστημα Επαναφοράς») Το shadow-database σχήμα:
11
Ταυτοχρονικές εκτελέσεις Πολλαπλές συναλλαγές μπορούν να τρέχουν ταυτοχρονικά στο σύστημα. Τα πλεονεκτήματα που προκύπτουν είναι: Αύξηση της εκμετάλλευσης του επεξεργαστή και του δίσκου, που οδηγεί σε καλύτερη ρυθμαπόδοση (throughput) της συναλλαγής: μια συναλλαγή μπορεί να χρησιμοποιεί τη CPU την ώρα που μια άλλη διαβάζει από ή γράφει στο δίσκο. Μείωση του μέσου χρόνου απόκρισης (response time) για συναλλαγές: μικρές συναλλαγές δε χρειάζεται να περιμένουν να τελειώσουν μεγάλες συναλλαγές. Σχήματα ελέγχου ταυτοχρονισμού – μηχανισμοί για την επίτευξη απομόνωσης, δηλ, μηχανισμοί ελέγχου της αλληλεπίδρασης μεταξύ των ταυτοχρονικών συναλλαγών με στόχο την αποφυγή της καταστροφής της συνέπειας της βάσης δεδομένων. (Θα τα μελετήσουμε στο κεφάλαιο «Έλεγχος ταυτοχρονισμού»)
12
Χρονοπρογράμματα (Schedules) Χρονοπρογράμματα (Schedules): ακολουθίες που δηλώνουν τη χρονολογική σειρά με την οποία εκτελούνται εντολές από ταυτοχρονικές συναλλαγές Ένα χρονοπρόγραμμα για ένα σύνολο από συναλλαγές πρέπει: να αποτελείται από το σύνολο των εντολών αυτών των συναλλαγών να διατηρεί τη σειρά με την οποία εμφανίζονται οι εντολές σε κάθε συναλλαγή ξεχωριστά.
13
Παράδειγμα χρονοπρογράμματος (1) Έστω η T 1 μεταφέρει $50 από το A στο B, και η T 2 αφαιρεί το 10% του A και το μεταφέρει στο B. Το ακόλουθο είναι ένα σειριακό χρονοπρόγραμμα (Χρονοπρόγραμμα 1), στο οποίο η T 1 ακολουθείται από την T 2. S1S1
14
Παράδειγμα χρονοπρογράμματος (2) Έστω T 1 και T 2 οι συναλλαγές που ορίστηκαν προηγουμένως. Το ακόλουθο χρονοπρόγραμμα (Χρονο-πρόγραμμα 2) δεν είναι σειριακό χρονοπρόγραμμα, αλλά είναι ισοδύναμο με το Χρονοπρόγραμμα 1. Και στα δυο χρονοπρογράμματα 1 και 2, διατηρείται το άθροισμα A + B. S2S2
15
Παράδειγμα χρονοπρογράμματος (3) Το ακόλουθο ταυτοχρονικό χρονοπρόγραμμα (Χρονο- πρόγραμμα 3) δε διατηρεί την τιμή του αθροίσματος A + B. S3S3
16
Σειριοποιησιμότητα (Serializability) Βασική προϋπόθεση – Κάθε συναλλαγή διατηρεί τη συνέπεια της βάσης δεδομένων. Συνεπώς, η σειριακή εκτέλεση ενός συνόλου συναλλαγών διατηρεί τη συνέπεια της βάσης δεδομένων. Ένα (πιθανώς ταυτοχρονικό) χρονοπρόγραμμα είναι σειριοποιήσιμο (serializable) εάν είναι ισοδύναμο με ένα σειριακό χρονοπρόγραμμα. Λόγω των διαφορετικών μορφών ισοδυναμίας χρονοπρογραμμάτων, διακρίνουμε: 1.Σειριοποιησιμότητα βάσει συγκρούσεων (conflict serializability) 2. Σειριοποιησιμότητα βάσει όψεων (view serializability) Δε θεωρούμε λειτουργίες διαφορετικές από τις read και write εντολές και υποθέτουμε ότι οι συναλλαγές μπορούν να κάνουν αυθαίρετους υπολογισμούς σε δεδομένα σε τοπικούς καταχωρητές μεταξύ των εντολών ανάγνωσης και εγγραφής. Τα απλά χρονοπρογράμματα που θα παρουσιάσουμε στη συνέχεια αποτελούνται μόνο από εντολές read και write.
17
Σειριοποιησιμότητα βάσει συγκρούσεων (1) - Conflict serializability Οι εντολές l i και l j των συναλλαγών T i και T j αντιστοίχως, συγκρούονται εάν και μόνο αν υπάρχει κάποιο αντικείμενο Q που προσπελαύνεται και από την l i και από την l j, και τουλάχιστον μια από αυτές τις εντολές έγραψε (write) στο 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 είναι συνεχόμενες σε ένα χρονοπρόγραμμα και δε συγκρούονται, τα αποτελέσματά τους θα παρέμεναν τα ίδια ακόμα κι αν είχαν ανταλλάξει θέσεις στο χρονοπρόγραμμα.
18
Σειριοποιησιμότητα βάσει συγκρούσεων (2) Εάν ένα χρονοπρόγραμμα S μπορεί να μετασχηματιστεί σε ένα χρονοπρόγραμμα S´ με μια σειρά από αντιμεταθέσεις (swaps) μη συγκρουόμενων εντολών, λέμε ότι τα S και S´ είναι ισοδύναμα βάσει συγκρούσεων (conflict equivalent). Λέμε ότι ένα χρονοπρόγραμμα S είναι σειριοποιήσιμο βάσει συγκρούσεων (conflict serializable), εάν είναι ισοδύναμο βάσει συγκρούσεων με ένα σειριακό χρονοπρόγραμμα. Παράδειγμα χρονοπρογράμματος που δεν είναι σειριοποιήσιμο βάσει συγκρούσεων: T 3 T 4 read(Q) write(Q) write(Q) Δε μπορούμε να αντιμεταθέσουμε τις εντολές στο παραπάνω χρονοπρόγραμμα για να πετύχουμε είτε το σειριακό χρονοπρόγραμμα, είτε το σειριακό χρονοπρόγραμμα.
19
Σειριοποιησιμότητα βάσει συγκρούσεων (3) Το Χρονοπρόγραμμα 2 (βλ. προηγουμένως) μπορεί να μετασχηματιστεί στο Χρονοπρόγραμμα 1, ένα σειριακό χρονοπρόγραμμα όπου η T 2 ακολουθεί την T 1, με μια σειρά από αντιμεταθέσεις μη συγκρουόμενων εντολών. Επομένως, το Χρονοπρόγραμμα 2 είναι σειριοποιήσιμο βάσει συγκρούσεων.
20
Σειριοποιησιμότητα βάσει όψεων (1) – View serializability Έστω S και S´ δυο χρονοπρογράμματα με το ίδιο σύνολο από συναλλαγές. Τα S και S´ είναι ισοδύναμα βάσει όψεων (view equivalent) εάν ισχύουν οι τρεις παρακάτω συνθήκες: 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´.
21
Σειριοποιησιμότητα βάσει όψεων (2) Ένα χρονοπρόγραμμα S είναι σειριοποιήσιμο βάσει όψεων (view serializable), εάν είναι ισοδύναμο βάσει όψεων με ένα σειριακό χρονοπρόγραμμα. Κάθε χρονοπρόγραμμα που είναι σειριοποιήσιμο βάσει όψεων είναι και σειριοποιήσιμο βάσει όψεων. Χρονοπρόγραμμα 4 — ένα χρονοπρόγραμμα που είναι σειριοποιήσιμο βάσει όψεων αλλά μη σειριοποιήσιμο βάσει συγκρούσεων. Κάθε χρονοπρόγραμμα που είναι σειριοποιήσιμο βάσει όψεων αλλά μη σειριοποιήσιμο βάσει συγκρούσεων έχει blind writes. S4S4
22
Άλλες μορφές σειριοποιησιμότητας Το Χρονοπρόγραμμα 5 που δίδεται παρακάτω παράγει το ίδιο αποτέλεσμα όπως το σειριακό χρονοπρόγραμμα. Παρόλα αυτά δεν είναι ισοδύναμο με αυτό ούτε βάσει συγκρούσεων ούτε βάσει όψεων. Ο καθορισμός τέτοιων ισοδυναμιών απαιτεί την ανάλυση και άλλων λειτουργιών πλην των read και write. S5S5
23
Δυνατότητα επαναφοράς (1) - Recoverability Το Χρονοπρόγραμμα 6) είναι μη επαναφέρσιμο εάν η T 9 επικυρωθεί αμέσως μετά την ανάγνωση. Εάν η T 8 ακυρωθεί, η T 9 θα έχει διαβάσει (και πιθανότατα θα έχει παρουσιάσει στο χρήστη) μια μη συνεπή κατάσταση της βάσης. Γι’ αυτό και οι βάσεις δεδομένων πρέπει να εξασφαλίζουν ότι τα χρονοπρογράμματα είναι επαναφέρσιμα. Ανάγκη αντιμετώπισης της επίδρασης των αποτυχιών των συναλλαγών στην περίπτωση ταυτοχρονικών συναλλαγών. Επαναφέρσιμο χρονοπρόγραμμα — εάν μια συναλλαγή Tj διαβάζει ένα αντικείμενο δεδομένων που έχει προηγουμένως γραφτεί από μια συναλλαγή Ti, η λειτουργία επικύρωσης (commit) της Ti εμφανίζεται πριν τη λειτουργία επικύρωσης της Tj. S6S6
24
Δυνατότητα επαναφοράς (2) Διαδοχικές υποχωρήσεις (Cascading rollbacks) – η αποτυχία μίας συναλλαγής οδηγεί σε μια σειρά από υποχωρήσεις (rollbacks) και άλλων συναλλαγών. Ας θεωρήσουμε το ακόλουθο χρονοπρόγραμμα όπου καμιά συναλλαγή δεν έχει ακόμα επικυρωθεί (συνεπώς το χρονοπρόγραμμα είναι επαναφέρσιμο). Εάν η T10 αποτύχει, οι T11 και T12 πρέπει επίσης να κάνουν rollback. Τέτοιου είδους σενάρια, μπορεί να οδηγήσουν στην ακύρωση μιας μεγάλης ποσότητας δουλειάς που ήδη έχει γίνει. S7S7
25
Δυνατότητα επαναφοράς (3) Χρονοπρογράμματα χωρίς υποχωρήσεις (Cascadeless) — δε μπορούν να συμβούν cascading rollbacks. Για κάθε ζευγάρι από συναλλαγές T i and T j στο οποίο η T j διαβάζει ένα αντικείμενο δεδομένων που γράφτηκε προηγουμένως από την T i, η λειτουργία επικύρωσης της T i εμφανίζεται πριν τη λειτουργία ανάγνωσης της T j. Κάθε cascadeless χρονοπρόγραμμα είναι επίσης επαναφέρσιμο. Είναι επιθυμητό να περιορίσουμε τα χρονοπρογράμματα που είναι cascadeless.
26
Υλοποίηση της απομόνωσης (Isolation) Τα χρονοπρογράμματα πρέπει να είναι σειριοποιήσιμα βάσει συγκρούσεων ή όψεων και επαναφέρσιμα για τη διατήρηση της συνέπειας της βάσης. Επίσης προτιμούμε να είναι και cascadeless. Μια πολιτική στην οποία μπορεί να εκτελεστεί μόνο μια συναλλαγή τη φορά, δημιουργεί σειριακά χρονοπρογράμματα, αλλά παρέχει χαμηλό βαθμό ταυτοχρονισμού. Τα σχήματα ελέγχου ταυτοχρονισμού εξασφαλίζουν μια ισορροπία (tradeoff) μεταξύ του βαθμού ταυτοχρονισμού που επιτρέπουν και του ποσού του overhead που επιφέρουν. Μερικά σχήματα επιτρέπουν μόνο σειριοποιήσιμα βάσει συγκρούσεων χρονοπρογράμματα, ενώ κάποια άλλα επιτρέπουν μόνο σειριοποιήσιμα βάσει όψεων χρονοπρογράμματα, που όμως δεν είναι σειριοποιήσιμα βάσει συγκρούσεων.
27
Ορισμός συναλλαγών στην SQL Η γλώσσα διαχείρισης δεδομένων πρέπει να περιλαμβάνει έναν τρόπο προσδιορισμού του συνόλου των ενεργειών που περιέχονται σε μια συναλλαγή. Στην SQL, μια συναλλαγή ξεκινά έμμεσα (χωρίς δηλαδή συγκεκριμένη εντολή). Μια συναλλαγή στην SQL τελειώνει με: Λειτουργία επικύρωσης (Commit work) επικυρώνει την τρέχουσα διαδικασία και ξεκινά μια νέα. Λειτουργία ακύρωσης (Rollback work) προκαλεί την ακύρωση της τρέχουσας διαδικασίας. Επίπεδα συνέπειας που ορίζονται από την SQL-92: Serializable — προκαθορισμένο Repeatable read Read committed Read uncommitted
28
Επίπεδα συνέπειας στην SQL-92 Serializable — προκαθορισμένο Repeatable read — μπορούν να διαβαστούν μόνο επικυρωμένες εγγραφές και επαναλαμβανόμενες αναγνώσεις της ίδιας εγγραφής πρέπει να επιστρέφουν την ίδια τιμή. Παρ’ όλα αυτά, μια συναλλαγή μπορεί να μην είναι σειριοποιήσιμη – μπορεί να βρει κάποιες εγγραφές που εισήχθησαν από μια συναλλαγή αλλά να μη βρει άλλες. Read committed — μπορούν να διαβαστούν μόνο επικυρωμένες εγγραφές, αλλά επιτυχείς αναγνώσεις εγγραφών μπορεί να επιστρέψουν διαφορετικές (αλλά επικυρωμένες) τιμές. Read uncommitted — μπορούν να διαβαστούν ακόμα και μη επικυρωμένες εγγραφές. Χαμηλότεροι βαθμοί συνέπειας είναι χρήσιμοι για τη συλλογή προσεγγιστικής πληροφορίας για τη βάση, π.χ., στατιστικά για τον βελτιστοποιητή ερωτήσεων.
29
Έλεγχος σειριοποιησιμότητας Θεωρήστε ένα χρονοπρόγραμμα ενός συνόλου συναλλαγών T 1, T 2,..., T n Γράφος προτεραιότητας (precedence graph) — ένας κατευθυνόμενος γράφος όπου οι κορυφές είναι οι συναλλαγές (ονόματα). Σχεδιάζουμε μια ακμή από την T i στην T j εάν οι δυο συναλλαγές συγκρούονται και η T i προσπέλασε το αντικείμενο δεδομένων στο οποίο συγκρούονται νωρίτερα. Μπορεί να προσθέτουμε μια ετικέτα στην ακμή με το όνομα του αντικειμένου που προσπελάστηκε. Παράδειγμα 1 y x
30
Παράδειγμα (Χρονοπρόγραμμα A) 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 Γράφος προτεραιότητας για το Χρονοπρόγραμμα Α
31
Έλεγχος για σειριοποιησιμότητα βάσει συγκρούσεων Ένα χρονοπρόγραμμα είναι σειριοποιήσιμο βάσει συγκρούσεων αν και μόνο αν ο αντίστοιχος γράφος προτεραιότητας είναι ακυκλικός. Υπάρχουν αλγόριθμοι εντοπισμού κύκλων που απαιτούν χρόνο τάξης n 2, όπου n είναι ο αριθμός των κορυφών του γράφου. (Καλύτεροι αλγόριθμοι απαιτούν χρόνο τάξης n + e όπου e είναι ο αριθμός των ακμών.) Εάν ο γράφος προτεραιότητας είναι ακυκλικός, η σειρά σειριοποιησιμότητας μπορεί να βρεθεί με μια τοπολογική ταξινόμηση (topological sort) του γράφου. Για παράδειγμα μια σειρά σειριοποιησιμότητας για το χρονοπρόγραμμα Α θα ήταν: T 5 T 1 T 3 T 2 T 4.
32
Παράδειγμα τοπολογικής ταξινόμησης γράφου Ο διπλανός γράφος προτεραιότητας είναι ακυκλικός και έχει δύο εναλλακτικές μορφές τοπολογικής ταξινόμησης Άλλο παράδειγμα?
33
Έλεγχος για σειριοποιησιμότητα βάσει όψεων Ο έλεγχος του γράφου προτεραιότητας για σειριοποιησιμότητα βάσει συγκρούσεων πρέπει να τροποποιηθεί για να εφαρμοστεί στην περίπτωση ελέγχου για σειριοποιησιμότητα βάσει όψεων. Το πρόβλημα ελέγχου εάν ένα χρονοπρόγραμμα είναι σειριοποιήσιμο βάσει όψεων ανήκει στην κλάση των NP- complete προβλημάτων. Συνεπώς, είναι απίθανο να υπάρχει αποδοτικός (δηλ. πολυωνυμικού χρόνου) αλγόριθμος. Παρ’ όλα αυτά, μπορούν να χρησιμοποιηθούν πρακτικοί αλγόριθμοι που απλώς ελέγχουν κάποιες επαρκείς συνθήκες για σειριοποιησιμότητα βάσει όψεων.
34
Έλεγχοι ταυτοχρονισμού έναντι ελέγχων σειριοποιησιμότητας Ο έλεγχος ενός χρονοπρογράμματος για σειριοποιησιμότητα αφού έχει εκτελεστεί δεν έχει νόημα! Στόχος: η ανάπτυξη πρωτοκόλλων ελέγχου ταυτοχρονισμού που θα εγγυώνται τη σειριοποιησιμότητα. Δε θα εξετάζουν το γράφο προτεραιότητας, αλλά θα επιβάλλουν ένα είδος πειθαρχίας για την αποφυγή μη σειριοποιήσιμων χρονοπρογραμμάτων. (Θα μελετήσουμε τέτοια πρωτόκολλα στο κεφάλαιο «Έλεγχος ταυτοχρονισμού») Οι έλεγχοι για σειριοποιησιμότητα βοηθούν στην κατανόηση γιατί ένα πρωτόκολλο ελέγχου ταυτοχρονισμού είναι σωστό.
35
Πηγές Tμήμα Διοικητικής Επιστήμης & Τεχνολογίας Σχολή Διοίκησης Επιχειρήσεων - Οικονομικό Πανεπιστήμιο Αθηνών www.dmst.aueb.gr/damianos/db2/Transactions.ppt
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.