Ποια επίπεδα απομόνωσης συναλλαγών PostgreSQL γνωρίζετε;
sobes.tech AI
Απάντηση από AI
Στο PostgreSQL, υπάρχουν τέσσερα επίπεδα απομόνωσης συναλλαγών που ορίζονται από το πρότυπο SQL:
-
Read Uncommitted — το χαμηλότερο επίπεδο απομόνωσης. Επιτρέπει την ανάγνωση δεδομένων που δεν έχουν ακόμη επιβεβαιωθεί (dirty reads). Στο PostgreSQL, στην πράξη, συμπεριφέρεται όπως το Read Committed, καθώς δεν υποστηρίζονται dirty reads.
-
Read Committed — το προεπιλεγμένο επίπεδο. Η συναλλαγή βλέπει μόνο τα δεδομένα που έχουν επιβεβαιωθεί τη στιγμή κάθε μεμονωμένης ερώτησης. Μπορούν να εμφανιστούν αλλαγές από άλλες συναλλαγές μεταξύ των ερωτήσεων μέσα στη ίδια συναλλαγή.
-
Repeatable Read — η συναλλαγή βλέπει ένα στιγμιότυπο των δεδομένων κατά την έναρξή της. Όλες οι ερωτήσεις μέσα στη συναλλαγή βλέπουν τα ίδια δεδομένα, ακόμα και αν άλλες συναλλαγές τα αλλάζουν και τα επιβεβαιώνουν. Προλαμβάνει τις μη επαναλαμβανόμενες αναγνώσεις (non-repeatable read), αλλά επιτρέπει τις φανταστικές αναγνώσεις.
-
Serializable — το πιο αυστηρό επίπεδο απομόνωσης. Διασφαλίζει πλήρη σειριοποίηση των συναλλαγών, αποτρέπει τις φανταστικές αναγνώσεις και εξασφαλίζει συμπεριφορά που είναι ισοδύναμη με την ακολουθιακή εκτέλεση.
Παράδειγμα ρύθμισης του επιπέδου απομόνωσης:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Λειτουργίες SQL
COMMIT;