Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τι εννοείται με το φαινόμενο της φανταστικής ανάγνωσης στο πλαίσιο των συναλλαγών;

sobes.tech AI

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

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

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

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

Παράδειγμα:

-- Συναλλαγή 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- επέστρεψε 5 εγγραφές
-- Η συναλλαγή 2 προσθέτει παράλληλα μια νέα εγγραφή με status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- τώρα θα επιστρέψει 6 εγγραφές
COMMIT;