Sobes.tech
Middle+

Τι συμβαίνει με το Xmin και το Xmax κατά τη διάρκεια ενημέρωσης;

sobes.tech AI

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

Στο PostgreSQL, κατά την εκτέλεση μιας ενέργειας UPDATE, δεν τροποποιείται απλώς η γραμμή, αλλά δημιουργείται στην πραγματικότητα μια νέα έκδοση της γραμμής (MVCC — έλεγχος πολλαπλών εκδόσεων).

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

Κατά την ενημέρωση:

  1. Η παλιά έκδοση της γραμμής λαμβάνει στο πεδίο Xmax τον αναγνωριστικό αριθμό της τρέχουσας συναλλαγής που πραγματοποιεί την ενημέρωση — αυτό σημαίνει ότι αυτή η έκδοση θεωρείται πλέον διαγραμμένη για νέες συναλλαγές.
  2. Δημιουργείται μια νέα έκδοση της γραμμής με νέο Xmin — τον αναγνωριστικό αριθμό της τρέχουσας συναλλαγής, και κενό Xmax.

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