Έλεγχος συγχρονισμού DBMS: Πρωτόκολλα χρονικής σφραγίδας και κλειδώματος

Τι είναι ο Έλεγχος Συγχρονισμού;

Έλεγχος Συγχρονισμού στο Σύστημα Διαχείρισης Βάσεων Δεδομένων είναι μια διαδικασία διαχείρισης ταυτόχρονων λειτουργιών χωρίς συγκρούσεις μεταξύ τους. Διασφαλίζει ότι οι συναλλαγές της βάσης δεδομένων εκτελούνται ταυτόχρονα και με ακρίβεια για να παράγουν σωστά αποτελέσματα χωρίς να παραβιάζεται η ακεραιότητα των δεδομένων της αντίστοιχης Βάσης Δεδομένων.

Η ταυτόχρονη πρόσβαση είναι αρκετά εύκολη εάν όλοι οι χρήστες απλώς διαβάζουν δεδομένα. Δεν υπάρχει περίπτωση να παρεμβαίνουν ο ένας στον άλλον. Αν και για οποιαδήποτε πρακτική βάση δεδομένων, θα είχε έναν συνδυασμό λειτουργιών READ και WRITE και ως εκ τούτου η ταυτόχρονη χρήση είναι μια πρόκληση.

Το DBMS Concurrency Control χρησιμοποιείται για την αντιμετώπιση τέτοιων διενέξεων, οι οποίες εμφανίζονται κυρίως σε ένα σύστημα πολλών χρηστών. Επομένως, ο Έλεγχος Συγχρονισμού είναι το πιο σημαντικό στοιχείο για τη σωστή λειτουργία ενός Συστήματος Διαχείρισης Βάσεων Δεδομένων όπου δύο ή περισσότερες συναλλαγές βάσης δεδομένων εκτελούνται ταυτόχρονα, οι οποίες απαιτούν πρόσβαση στα ίδια δεδομένα.

Πιθανά προβλήματα Συγχρονισμού

Ακολουθούν ορισμένα ζητήματα που πιθανόν να αντιμετωπίσετε κατά τη χρήση της μεθόδου ελέγχου συγχρονισμού DBMS:

  • Χαμένες ενημερώσεις συμβαίνουν όταν πολλές συναλλαγές επιλέγουν την ίδια σειρά και ενημερώνουν τη σειρά με βάση την επιλεγμένη τιμή
  • Προκύπτουν ζητήματα μη δεσμευμένης εξάρτησης όταν η δεύτερη συναλλαγή επιλέγει μια σειρά που ενημερώνεται από μια άλλη συναλλαγή (βρώμικη ανάγνωση)
  • Μη επαναλαμβανόμενη ανάγνωση συμβαίνει όταν μια δεύτερη συναλλαγή προσπαθεί να αποκτήσει πρόσβαση στην ίδια σειρά πολλές φορές και διαβάζει διαφορετικά δεδομένα κάθε φορά.
  • Λανθασμένο ζήτημα περίληψης συμβαίνει όταν μια συναλλαγή συνοψίζει την τιμή όλων των περιπτώσεων ενός επαναλαμβανόμενου στοιχείου δεδομένων και η δεύτερη συναλλαγή ενημερώνει λίγες περιπτώσεις αυτού του συγκεκριμένου στοιχείου δεδομένων. Σε αυτήν την περίπτωση, η προκύπτουσα σύνοψη δεν αντικατοπτρίζει ένα σωστό αποτέλεσμα.

Γιατί να χρησιμοποιήσετε τη μέθοδο Concurrency;

Λόγοι για τη χρήση της μεθόδου ελέγχου συγχρονισμού είναι το DBMS:

  • Να εφαρμοστεί η απομόνωση μέσω αμοιβαίου αποκλεισμού μεταξύ αντικρουόμενων συναλλαγών
  • Για την επίλυση ζητημάτων διένεξης ανάγνωσης-εγγραφής και εγγραφής-εγγραφής
  • Για τη διατήρηση της συνέπειας της βάσης δεδομένων μέσω της συνεχούς διατήρησης εμποδίων εκτέλεσης
  • Το σύστημα πρέπει να ελέγχει την αλληλεπίδραση μεταξύ των ταυτόχρονων συναλλαγών. Αυτός ο έλεγχος επιτυγχάνεται με τη χρήση σχημάτων ταυτόχρονου ελέγχου.
  • Ο έλεγχος ταυτόχρονης χρήσης βοηθά στη διασφάλιση της σειριοποίησης

Παράδειγμα

Ας υποθέσουμε ότι δύο άτομα που πηγαίνουν σε ηλεκτρονικά περίπτερα την ίδια στιγμή για να αγοράσουν εισιτήριο κινηματογράφου για την ίδια ταινία και την ίδια ώρα προβολής.

Ωστόσο, απομένει μόνο μία θέση για την προβολή της ταινίας στο συγκεκριμένο θέατρο. Χωρίς έλεγχο συγχρονισμού στο DBMS, είναι πιθανό και οι δύο κινηματογραφόφιλοι να καταλήξουν να αγοράσουν ένα εισιτήριο. Ωστόσο, η μέθοδος ελέγχου συγχρονισμού δεν επιτρέπει κάτι τέτοιο. Και οι δύο κινηματογραφόφιλοι εξακολουθούν να έχουν πρόσβαση σε πληροφορίες που είναι γραμμένες στη βάση δεδομένων θέσεων ταινιών. Αλλά ο έλεγχος ταυτόχρονης παροχής παρέχει ένα εισιτήριο μόνο στον αγοραστή που ολοκλήρωσε πρώτος τη διαδικασία συναλλαγής.

Πρωτόκολλα ελέγχου συγχρονισμού

Διαφορετικά πρωτόκολλα ελέγχου συγχρονισμού προσφέρουν διαφορετικά πλεονεκτήματα μεταξύ του ποσού του συγχρονισμού που επιτρέπουν και του ποσού των γενικών εξόδων που επιβάλλουν. Ακολουθούν οι τεχνικές Concurrency Control στο DBMS:

  • Πρωτόκολλα που βασίζονται στο κλείδωμα
  • Πρωτόκολλο κλειδώματος δύο φάσεων
  • Πρωτόκολλα που βασίζονται σε χρονοσήμανση
  • Πρωτόκολλα που βασίζονται σε επικύρωση

Πρωτόκολλα που βασίζονται σε κλείδωμα

Πρωτόκολλα με βάση το κλείδωμα στο DBMS είναι ένας μηχανισμός στον οποίο μια συναλλαγή δεν μπορεί να διαβάσει ή να γράψει τα δεδομένα μέχρι να αποκτήσει ένα κατάλληλο κλείδωμα. Τα πρωτόκολλα που βασίζονται στο κλείδωμα βοηθούν στην εξάλειψη του προβλήματος ταυτόχρονης λειτουργίας στο DBMS για ταυτόχρονες συναλλαγές κλειδώνοντας ή απομονώνοντας μια συγκεκριμένη συναλλαγή σε έναν μόνο χρήστη.

Το κλείδωμα είναι μια μεταβλητή δεδομένων που σχετίζεται με ένα στοιχείο δεδομένων. Αυτό το κλείδωμα υποδηλώνει ότι οι λειτουργίες που μπορούν να εκτελεστούν στο στοιχείο δεδομένων. Οι κλειδαριές στο DBMS βοηθούν στο συγχρονισμό της πρόσβασης στα στοιχεία της βάσης δεδομένων με ταυτόχρονες συναλλαγές.

Όλα τα αιτήματα κλειδώματος υποβάλλονται στον διαχειριστή ελέγχου συγχρονισμού. Οι συναλλαγές προχωρούν μόνο μετά την αποδοχή του αιτήματος κλειδώματος.

Δυαδικές κλειδαριές: Ένα δυαδικό κλείδωμα σε ένα στοιχείο δεδομένων μπορεί είτε να κλειδώσει είτε να ξεκλειδώσει καταστάσεις.

Κοινόχρηστο/αποκλειστικό: Αυτός ο τύπος μηχανισμού κλειδώματος διαχωρίζει τις κλειδαριές στο DBMS με βάση τις χρήσεις τους. Εάν αποκτηθεί ένα κλείδωμα σε ένα στοιχείο δεδομένων για την εκτέλεση μιας λειτουργίας εγγραφής, ονομάζεται αποκλειστικό κλείδωμα.

1. Κοινόχρηστο κλείδωμα (S):

Μια κοινόχρηστη κλειδαριά ονομάζεται επίσης κλειδαριά μόνο για ανάγνωση. Με το κοινόχρηστο κλείδωμα, το στοιχείο δεδομένων μπορεί να κοινοποιηθεί μεταξύ των συναλλαγών. Αυτό συμβαίνει επειδή δεν θα έχετε ποτέ άδεια ενημέρωσης δεδομένων στο στοιχείο δεδομένων.

Για παράδειγμα, εξετάστε μια περίπτωση όπου δύο συναλλαγές διαβάζουν το υπόλοιπο λογαριασμού ενός ατόμου. ο βάσεις δεδομένων θα τους αφήσει να διαβάσουν τοποθετώντας μια κοινόχρηστη κλειδαριά. Ωστόσο, εάν μια άλλη συναλλαγή θέλει να ενημερώσει το υπόλοιπο αυτού του λογαριασμού, το κοινόχρηστο κλείδωμα την αποτρέπει μέχρι να ολοκληρωθεί η διαδικασία ανάγνωσης.

2. Αποκλειστική κλειδαριά (X):

Με το αποκλειστικό κλείδωμα, ένα στοιχείο δεδομένων μπορεί να διαβαστεί αλλά και να γραφτεί. Αυτό είναι αποκλειστικό και δεν μπορεί να διατηρηθεί ταυτόχρονα στο ίδιο στοιχείο δεδομένων. Το X-lock ζητείται χρησιμοποιώντας την εντολή lock-x. Οι συναλλαγές ενδέχεται να ξεκλειδώσουν το στοιχείο δεδομένων μετά την ολοκλήρωση της λειτουργίας «εγγραφής».

Για παράδειγμα, όταν μια συναλλαγή χρειάζεται να ενημερώσει το υπόλοιπο λογαριασμού ενός ατόμου. Μπορείτε να επιτρέψετε αυτήν τη συναλλαγή τοποθετώντας κλείδωμα X σε αυτήν. Επομένως, όταν η δεύτερη συναλλαγή θέλει να διαβάσει ή να γράψει, το αποκλειστικό κλείδωμα αποτρέπει αυτήν τη λειτουργία.

3. Simplistic Lock Protocol

Αυτός ο τύπος πρωτοκόλλων που βασίζονται σε κλείδωμα επιτρέπει στις συναλλαγές να αποκτούν ένα κλείδωμα σε κάθε αντικείμενο πριν από την έναρξη λειτουργίας. Οι συναλλαγές ενδέχεται να ξεκλειδώσουν το στοιχείο δεδομένων μετά την ολοκλήρωση της λειτουργίας «εγγραφής».

4. Κλείδωμα εκ των προτέρων

Το πρωτόκολλο κλειδώματος προ-αξίωσης βοηθά στην αξιολόγηση των λειτουργιών και στη δημιουργία μιας λίστας απαιτούμενων στοιχείων δεδομένων που απαιτούνται για την έναρξη μιας διαδικασίας εκτέλεσης. Στην περίπτωση που παραχωρούνται όλα τα λουκέτα, η συναλλαγή εκτελείται. Μετά από αυτό, όλες οι κλειδαριές απελευθερώνονται όταν τελειώσουν όλες οι λειτουργίες του.

Η λιμοκτονία

Η πείνα είναι η κατάσταση κατά την οποία μια συναλλαγή χρειάζεται να περιμένει αόριστο χρονικό διάστημα για να αποκτήσει λουκέτο.

Ακολουθούν οι λόγοι της πείνας:

  • Όταν το σχήμα αναμονής για κλειδωμένα στοιχεία δεν διαχειρίζεται σωστά
  • Σε περίπτωση διαρροής πόρων
  • Η ίδια συναλλαγή επιλέγεται ως θύμα επανειλημμένα

Αδιέξοδο

Το αδιέξοδο αναφέρεται σε μια συγκεκριμένη κατάσταση όπου δύο ή περισσότερες διεργασίες περιμένουν η μία την άλλη να απελευθερώσει έναν πόρο ή περισσότερες από δύο διεργασίες περιμένουν τον πόρο σε μια κυκλική αλυσίδα.

Πρωτόκολλο κλειδώματος δύο φάσεων

Πρωτόκολλο κλειδώματος δύο φάσεων γνωστό και ως πρωτόκολλο 2PL είναι μια μέθοδος ελέγχου συγχρονισμού στο DBMS που διασφαλίζει τη σειριοποίηση εφαρμόζοντας ένα κλείδωμα στα δεδομένα συναλλαγής που εμποδίζει άλλες συναλλαγές να έχουν πρόσβαση στα ίδια δεδομένα ταυτόχρονα. Το πρωτόκολλο κλειδώματος δύο φάσεων βοηθά στην εξάλειψη του προβλήματος συγχρονισμού στο DBMS.

Αυτό το πρωτόκολλο κλειδώματος χωρίζει τη φάση εκτέλεσης μιας συναλλαγής σε τρία διαφορετικά μέρη.

  • Στην πρώτη φάση, όταν η συναλλαγή αρχίζει να εκτελείται, απαιτεί άδεια για τις κλειδαριές που χρειάζεται.
  • Το δεύτερο μέρος είναι όπου η συναλλαγή αποκτά όλα τα λουκέτα. Όταν μια συναλλαγή απελευθερώνει το πρώτο της κλείδωμα, ξεκινά η τρίτη φάση.
  • Σε αυτήν την τρίτη φάση, η συναλλαγή δεν μπορεί να απαιτήσει νέα κλειδώματα. Αντίθετα, απελευθερώνει μόνο τις αποκτημένες κλειδαριές.

Πρωτόκολλο κλειδώματος δύο φάσεων

Το πρωτόκολλο κλειδώματος δύο φάσεων επιτρέπει σε κάθε συναλλαγή να υποβάλει αίτημα κλειδώματος ή ξεκλειδώματος σε δύο βήματα:

  • Φάση Ανάπτυξης: Σε αυτή τη φάση η συναλλαγή μπορεί να αποκτήσει κλειδαριές, αλλά δεν μπορεί να απελευθερώσει καμία κλειδαριά.
  • Φάση συρρίκνωσης: Σε αυτή τη φάση, μια συναλλαγή μπορεί να απελευθερώσει κλειδαριές αλλά να μην αποκτήσει νέο κλείδωμα

Είναι αλήθεια ότι το πρωτόκολλο 2PL προσφέρει δυνατότητα σειριοποίησης. Ωστόσο, δεν διασφαλίζει ότι δεν θα συμβούν αδιέξοδα.

Στο παραπάνω διάγραμμα, μπορείτε να δείτε ότι οι τοπικοί και οι παγκόσμιοι ανιχνευτές αδιεξόδου αναζητούν αδιέξοδα και τα επιλύουν με την επανάληψη των συναλλαγών στην αρχική τους κατάσταση.

Αυστηρή μέθοδος κλειδώματος δύο φάσεων

Το σύστημα ασφάλισης δύο φάσεων είναι σχεδόν παρόμοιο με το 2PL. Η μόνη διαφορά είναι ότι το Strict-2PL δεν απελευθερώνει ποτέ κλειδαριά μετά τη χρήση του. Κρατάει όλες τις κλειδαριές μέχρι το σημείο δέσμευσης και απελευθερώνει όλες τις κλειδαριές με τη μία όταν τελειώσει η διαδικασία.

Κεντρικό 2PL

Στο Centralized 2 PL, ένας μόνο ιστότοπος είναι υπεύθυνος για τη διαδικασία διαχείρισης κλειδώματος. Διαθέτει μόνο έναν διαχειριστή κλειδώματος για ολόκληρο το DBMS.

Κύριο αντίγραφο 2PL

Κύριος μηχανισμός αντιγραφής 2PL, πολλοί διαχειριστές κλειδαριών διανέμονται σε διαφορετικούς ιστότοπους. Μετά από αυτό, ένας συγκεκριμένος διαχειριστής κλειδαριών είναι υπεύθυνος για τη διαχείριση της κλειδαριάς για ένα σύνολο στοιχείων δεδομένων. Όταν το πρωτεύον αντίγραφο έχει ενημερωθεί, η αλλαγή μεταδίδεται στους slaves.

Διανεμήθηκε 2PL

Σε αυτό το είδος μηχανισμού κλειδώματος δύο φάσεων, οι διαχειριστές κλειδώματος διανέμονται σε όλες τις τοποθεσίες. Είναι υπεύθυνοι για τη διαχείριση κλειδαριών για δεδομένα σε αυτόν τον ιστότοπο. Εάν δεν αντιγραφούν δεδομένα, αυτό ισοδυναμεί με το πρωτεύον αντίγραφο 2PL. Το κόστος επικοινωνίας του Distributed 2PL είναι αρκετά υψηλότερο από το αρχικό αντίγραφο 2PL

Πρωτόκολλα που βασίζονται σε χρονοσήμανση

Πρωτόκολλο βάσει χρονικής σφραγίδας στο DBMS είναι ένας αλγόριθμος που χρησιμοποιεί τον Χρόνο συστήματος ή τον Λογικό Μετρητή ως χρονική σήμανση για τη σειριοποίηση της εκτέλεσης ταυτόχρονων συναλλαγών. Το πρωτόκολλο που βασίζεται σε χρονική σήμανση διασφαλίζει ότι κάθε διένεξη λειτουργία ανάγνωσης και εγγραφής εκτελείται με σειρά χρονικής σήμανσης.

Η παλαιότερη συναλλαγή έχει πάντα προτεραιότητα σε αυτήν τη μέθοδο. Χρησιμοποιεί το χρόνο συστήματος για να καθορίσει τη χρονική σήμανση της συναλλαγής. Αυτό είναι το πιο συχνά χρησιμοποιούμενο πρωτόκολλο συγχρονισμού.

Τα πρωτόκολλα που βασίζονται σε κλείδωμα σάς βοηθούν να διαχειριστείτε τη σειρά μεταξύ των συγκρουόμενων συναλλαγών όταν θα εκτελεστούν. Τα πρωτόκολλα που βασίζονται σε χρονική σήμανση διαχειρίζονται τις διενέξεις αμέσως μόλις δημιουργηθεί μια λειτουργία.

Παράδειγμα:

Suppose there are there transactions T1, T2, and T3. 
T1 has entered the system at time 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Πλεονεκτήματα:

  • Τα χρονοδιαγράμματα είναι σειριοποιήσιμα όπως τα πρωτόκολλα 2PL
  • Καμία αναμονή για τη συναλλαγή, που εξαλείφει την πιθανότητα αδιεξόδου!

Μειονεκτήματα:

Η ασιτία είναι δυνατή εάν η ίδια συναλλαγή επανεκκινηθεί και ακυρωθεί συνεχώς

Πρωτόκολλο βάσει επικύρωσης

Πρωτόκολλο που βασίζεται σε επικύρωση στο ΣΔΒΔ, γνωστή και ως Optimistic Concurrency Control Technique είναι μια μέθοδος για την αποφυγή του ταυτόχρονου συναλλαγών. Σε αυτό το πρωτόκολλο, τα τοπικά αντίγραφα των δεδομένων συναλλαγής ενημερώνονται και όχι τα ίδια τα δεδομένα, γεγονός που οδηγεί σε λιγότερες παρεμβολές κατά την εκτέλεση της συναλλαγής.

Το πρωτόκολλο που βασίζεται στην επικύρωση εκτελείται στις ακόλουθες τρεις φάσεις:

  1. Διαβάστε τη φάση
  2. Φάση επικύρωσης
  3. Γράψτε Φάση

Διαβάστε τη φάση

Στη φάση ανάγνωσης, οι τιμές δεδομένων από τη βάση δεδομένων μπορούν να διαβαστούν από μια συναλλαγή, αλλά η λειτουργία εγγραφής ή οι ενημερώσεις εφαρμόζονται μόνο στα τοπικά αντίγραφα δεδομένων και όχι στην πραγματική βάση δεδομένων.

Φάση επικύρωσης

Στη φάση επικύρωσης, τα δεδομένα ελέγχονται για να διασφαλιστεί ότι δεν υπάρχει παραβίαση της σειριοποίησης κατά την εφαρμογή των ενημερώσεων συναλλαγής στη βάση δεδομένων.

Γράψτε Φάση

Στη φάση εγγραφής, οι ενημερώσεις εφαρμόζονται στη βάση δεδομένων εάν η επικύρωση είναι επιτυχής, διαφορετικά. οι ενημερώσεις δεν εφαρμόζονται και η συναλλαγή επαναφέρεται.

Χαρακτηριστικά Πρωτοκόλλου Καλού Συγχρονισμού

Ένας ιδανικός μηχανισμός DBMS ελέγχου συγχρονισμού έχει τους ακόλουθους στόχους:

  • Πρέπει να είναι ανθεκτικό σε αστοχίες τοποθεσίας και επικοινωνίας.
  • Επιτρέπει την παράλληλη εκτέλεση συναλλαγών για την επίτευξη της μέγιστης ταυτότητος.
  • Οι μηχανισμοί αποθήκευσης και οι υπολογιστικές του μέθοδοι θα πρέπει να είναι μέτριοι για να ελαχιστοποιούνται τα γενικά έξοδα.
  • Πρέπει να επιβάλλει ορισμένους περιορισμούς στη δομή των ατομικών ενεργειών των συναλλαγών.

Περίληψη

  • Ο έλεγχος συγχρονισμού είναι η διαδικασία στο DBMS για τη διαχείριση ταυτόχρονων λειτουργιών χωρίς να έρχονται σε σύγκρουση μεταξύ τους.
  • Οι χαμένες ενημερώσεις, η βρώμικη ανάγνωση, η μη επαναλαμβανόμενη ανάγνωση και το ζήτημα εσφαλμένης σύνοψης είναι προβλήματα που αντιμετωπίζονται λόγω έλλειψης ελέγχου ταυτόχρονης χρήσης.
  • Βάσει κλειδώματος, δύο φάσεων, βάσει χρονικής σφραγίδας, βάσει επικύρωσης είναι τύποι πρωτοκόλλων χειρισμού ταυτόχρονης
  • Η κλειδαριά μπορεί να είναι Shared (S) ή Exclusive (X)
  • Το πρωτόκολλο κλειδώματος δύο φάσεων, το οποίο είναι επίσης γνωστό ως συναλλαγή για τις ανάγκες του πρωτοκόλλου 2PL, θα πρέπει να αποκτήσει κλειδαριά αφού απελευθερώσει ένα από τα κλειδώματα του. Έχει 2 φάσεις ανάπτυξης και συρρίκνωσης.
  • Ο αλγόριθμος που βασίζεται σε χρονική σήμανση χρησιμοποιεί μια χρονική σήμανση για τη σειριοποίηση της εκτέλεσης ταυτόχρονων συναλλαγών. Το πρωτόκολλο χρησιμοποιεί το Χρόνος συστήματος ή Λογική μέτρηση ως μια χρονική σήμανση.