Κλείδωμα δύο Φάσεων: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Χωρίς σύνοψη επεξεργασίας
Γραμμή 107:
Τα κλειδώματα μπλοκάρουν ενέργειες που έχουν να κάνουν με πρόσβαση αντικειμένων. Το αμοιβαίο μπλοκάρισμα μεταξύ συναλλαγών είναι ένα αδιέξοδο και η εκτέλεση αυτών των συναλλαγών σταματήσει και δεν υπάρχει περάτωση. Έτσι τα αδιέξοδα πρέπει να επιλυθούν για να ολοκληρωθούν αυτές οι συναλλαγές και να απελευθερώσουν τους πόρους του συστήματος. Ένα αδιέξοδο είναι ένας πιθανός κύκλος στο [[Γράφος Σειριοποιησιμότητας|γράφο σειριοποιησιμότητας]] ο οποίος μπορεί να προκύψει χωρίς μπλοκάρισμα όταν πραγματοποιηθούν οι συγκρούσεις. Ένα αδιέξοδο μπορεί να επιλυθεί κάνοντας abort την συναλλαγή η οποία μπορεί να οδηγήσει σε κύκλο. Αυτή η συναλλαγή εντοπίζεται χρησιμοποιώντας ένα γράφο αναμονής (ένας γράφος συγκρούσεως οι οποίες μπλοκάρονται από κλειδώματα – πρόκειται για έναν κατευθυνόμενο γράφο ο οποίος χρησιμοποιείται για την αποφυγή αδιεξόδων), ο οποίος υποδεικνύει ποιες συναλλαγές είναι έτοιμες να ελευθερώσουν το κλείδωμα τους και ποιες θέλουν να αναλάβουν το αντικείμενο και όταν υπάρχει κύκλος έχουμε αδιέξοδο. Κάνοντας abort μια συναλλαγή σε ένα κύκλο τότε απαλείφεται ο κύκλος. Συναλλαγές οι οποίες έχουν γίνει abort για επίλυση αδιεξόδων κάνουν επανεκκίνηση και εκτελούνται αμέσως.
 
Σε κατανεμημένα περιβάλλοντα απαιτείται ένα πρωτόκολλο ατομικής δέσμευσης (atomic commitment) για [[ACID|ατομικότητα]] (συνήθως το [http://en.wikipedia.org/wiki/Two-phase_commit_protocol 2PC]). Όταν ανακτημένα δεδομένα κατανέμονται μεταξύ συναλλαγών που χρησιμοποιούν το [http://en.wikipedia.org/wiki/Two-phase_commit_protocol 2PC] και έπειτα κατανέμονται καθολικά αδιέξοδα (δηλαδή αδιέξοδα τα οποία εμπλέκουν δυο συναλλαγές στο [http://en.wikipedia.org/wiki/Two-phase_commit_protocol 2PC]) τα οποία λύνονται αυτομάτως.
 
Όταν το SS2PL χρησιμοποιείται σε κατανεμημένο περιβάλλον τότε τα καθολικά αδιέξοδα για να κλειδώσουν δημιουργούν voting-deadlocks στο 2PC και επιλύονται αυτόματα από το 2PC (βλέπε commitment ordering). Γενικά στο 2PL τα καθολικά αδιέξοδα επιλύονται παρομοίως από το πρωτόκολλο σημείο συγχρονισμού στο τέλος της φάσης – 1 σε μια κατανεμημένη συναλλαγή (το σημείο συγχρονισμού επιτυγχάνεται με «voting» (το οποίο σημειώνεται το τέλος της φάσης - 1) και διαδίδεται στα μέρη της συναλλαγής όπως σε μια κατανεμημένη συναλλαγή με τον ίδιο τρόπο σαν ένα σημείο απόφασης στην ατομική δέσμευση (atomic commitment). Κατ’ αναλογία με το σημείο απόφασης στο CO μια συγκρουόμενη ενέργεια στο 2PL δεν μπορεί να συμβεί πριν το τέλος της φάσης – 1 στο σημείο συγχρονισμού, και αυτό έχει το ίδιο αποτέλεσμα με το voting-deadlock για περιπτώσεις αδιεξόδων καθολικής πρόσβασης δεδομένων. Το voting-deadlock λύνεται αυτόματα από το πρωτόκολλο κάνοντας abort μερικές συναλλαγές που εμπλέκονται σε αυτό, χάνοντας ένα vote, χρησιμοποιώντας timeout).
Γραμμή 115:
:* Για το 2PL γενικά η αυτόματη επίλυση από το πρωτόκολλο σημείου συγχρονισμού στο τέλος της φάσης – 1 (η οποία έχει τον ίδιο μηχανισμό voting με το πρωτόκολλο ατομικής δέσμευσης, και το φαινόμενο της «vote που αγνοείται» στο voting-deadlock καταλήγει σε επίλυση καθολικού αδιεξόδου) δεν αναφέρεται μέχρι το 2009. Πρακτικά χρησιμοποιείται μόνο το SS2PL και δεν χρειάζεται ούτε συγχρονισμός στο τέλος της φάσης – 1 ούτε και πρωτόκολλο ατομικής δέσμευσης.
 
Σε κατανεμημένα περιβάλλοντα όπου τα ανακτήσιμα δεδομένα δεν διαμοιράζονται ανάμεσα στα μέλη του [http://en.wikipedia.org/wiki/Two-phase_commit_protocol 2PC] χρειάζονται ειδικές τεχνικές για να επιλύσουν τα καθολικά αδιέξοδα.
 
 
==Αναφορές==