Sobes.tech
Middle

Ποιοι είναι οι τύποι απομόνωσης των συναλλαγών;

sobes.tech AI

Απάντηση από AI

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

Το πρότυπο SQL ορίζει τέσσερα επίπεδα απομόνωσης:

  1. Read Uncommitted (Ανεπιβεβαίωτη ανάγνωση): Το χαμηλότερο επίπεδο. Μια συναλλαγή μπορεί να διαβάσει μη επιβεβαιωμένες αλλαγές άλλων συναλλαγών (βρώμικη ανάγνωση).
  2. Read Committed (Επιβεβαιωμένη ανάγνωση): Η συναλλαγή μπορεί να διαβάσει μόνο δεδομένα που έχουν επιβεβαιωθεί από άλλες συναλλαγές. Αποφεύγει τη "βρώμικη" ανάγνωση.
  3. Repeatable Read (Επαναλαμβανόμενη ανάγνωση): Η συναλλαγή διασφαλίζει ότι τα δεδομένα που διαβάζονται κατά τη διάρκεια της συναλλαγής δεν θα αλλάξουν σε επαναληπτικές αναγνώσεις. Αποφεύγει τη "βρώμικη" και τη "μη επαναλαμβανόμενη" ανάγνωση. Μπορούν να εμφανιστούν "φαντάσματα".
  4. Serializable (Α serialization): Το υψηλότερο επίπεδο απομόνωσης. Διασφαλίζει ότι οι παράλληλες συναλλαγές εκτελούνται σαν να ήταν σειριακές. Αποφεύγει όλα τα ανεπιθύμητα φαινόμενα: "βρώμικη" ανάγνωση, "μη επαναλαμβανόμενη" ανάγνωση και "φαντάσματα".

Ανεπιθύμητα φαινόμενα κατά την παράλληλη εκτέλεση συναλλαγών:

  • Dirty Read (Βρώμικη ανάγνωση): Η συναλλαγή A διαβάζει δεδομένα που έχουν τροποποιηθεί από τη συναλλαγή B, αλλά δεν έχουν ακόμη επιβεβαιωθεί. Αν η συναλλαγή B αναιρέσει τις αλλαγές, η συναλλαγή A θα εργαστεί με λανθασμένα δεδομένα.
  • Non-repeatable Read (Μη επαναλαμβανόμενη ανάγνωση): Η συναλλαγή A διαβάζει τα ίδια δεδομένα δύο φορές, αλλά μεταξύ των αναγνώσεων, η συναλλαγή B επιβεβαιώνει μια αλλαγή σε αυτά τα δεδομένα. Ως αποτέλεσμα, η συναλλαγή A λαμβάνει διαφορετικές τιμές.
  • Phantom Read (Φάντασμα ανάγνωση): Η συναλλαγή A εκτελεί ένα ερώτημα που επιστρέφει ένα σύνολο γραμμών. Η συναλλαγή B επιβεβαιώνει την εισαγωγή ή διαγραφή γραμμών που ταιριάζουν με τα κριτήρια του ερωτήματος A. Όταν επαναλαμβάνει το ίδιο ερώτημα, η συναλλαγή A λαμβάνει διαφορετικό σύνολο γραμμών.

Πίνακας συνοψίζοντας τα ανεπιθύμητα φαινόμενα ανά επίπεδο απομόνωσης:

Επίπεδο απομόνωσης Βρώμικη ανάγνωση Μη επαναλαμβανόμενη ανάγνωση Φάντασμα
Read Uncommitted Ναι Ναι Ναι
Read Committed Όχι Ναι Ναι
Repeatable Read Όχι Όχι Ναι
Serializable Όχι Όχι Όχι

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