Middle
Ποιοι είναι οι τύποι απομόνωσης των συναλλαγών;
sobes.tech AI
Απάντηση από AI
Ο διαχωρισμός των συναλλαγών καθορίζει σε ποιο βαθμό μια συναλλαγή μπορεί να δει τις ενδιάμεσες αλλαγές άλλων συναλλαγών που εκτελούνται παράλληλα.
Το πρότυπο SQL ορίζει τέσσερα επίπεδα απομόνωσης:
- Read Uncommitted (Ανεπιβεβαίωτη ανάγνωση): Το χαμηλότερο επίπεδο. Μια συναλλαγή μπορεί να διαβάσει μη επιβεβαιωμένες αλλαγές άλλων συναλλαγών (βρώμικη ανάγνωση).
- Read Committed (Επιβεβαιωμένη ανάγνωση): Η συναλλαγή μπορεί να διαβάσει μόνο δεδομένα που έχουν επιβεβαιωθεί από άλλες συναλλαγές. Αποφεύγει τη "βρώμικη" ανάγνωση.
- Repeatable Read (Επαναλαμβανόμενη ανάγνωση): Η συναλλαγή διασφαλίζει ότι τα δεδομένα που διαβάζονται κατά τη διάρκεια της συναλλαγής δεν θα αλλάξουν σε επαναληπτικές αναγνώσεις. Αποφεύγει τη "βρώμικη" και τη "μη επαναλαμβανόμενη" ανάγνωση. Μπορούν να εμφανιστούν "φαντάσματα".
- 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 | Όχι | Όχι | Όχι |
Η επιλογή του επιπέδου απομόνωσης επηρεάζει την απόδοση και την ορθότητα της εφαρμογής. Όσο υψηλότερο είναι το επίπεδο απομόνωσης, τόσο μεγαλύτερο είναι το πρόσθετο κόστος.