Sobes.tech
Middle

Ποιοι τύποι αποκλεισμών υπάρχουν στο SQL;

sobes.tech AI

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

Τύποι κλειδώματος σε SQL:

  • Σε επίπεδο:

    • Κλειδώματα πίνακα (Table Locks): Κλειδώνει ολόκληρο τον πίνακα. Εύκολο στην υλοποίηση, αλλά μπορεί να μειώσει σημαντικά το παράλληλο. Κατάλληλο για λειτουργίες που τροποποιούν ολόκληρο τον πίνακα (π.χ., ALTER TABLE).
    • Κλειδώματα γραμμών (Row Locks): Κλειδώνει μεμονωμένες γραμμές. Παρέχει υψηλό παράλληλο, αλλά απαιτεί περισσότερους πόρους για διαχείριση. Χρησιμοποιείται από προεπιλογή στα περισσότερα SGBD για INSERT, UPDATE, DELETE.
  • Σε τύπο πρόσβασης:

    • Κοινόχρηστο κλείδωμα (Shared Lock - S Lock): Επιτρέπει σε πολλαπλές συναλλαγές να διαβάζουν δεδομένα ταυτόχρονα, αλλά απαγορεύει την εγγραφή από άλλες.
    • Αποκλειστικό κλείδωμα (Exclusive Lock - X Lock): Επιτρέπει μόνο σε μία συναλλαγή να έχει πρόσβαση στα δεδομένα (ανάγνωση και εγγραφή) και μπλοκάρει τις άλλες.
    • Κλείδωμα πρόθεσης (Intention Lock): Δείχνει στο SGBD ότι οι συναλλαγές σκοπεύουν να θέσουν κλείδωμα σε χαμηλότερο επίπεδο (γραμμές ή πίνακες). Για παράδειγμα, IS (Intention Shared), IX (Intention Exclusive). Βοηθά το SGBD να ελέγξει γρηγορότερα τη συμβατότητα των κλειδώσεων.
  • Άλλοι τύποι:

    • Κλείδωμα εύρους (Range Lock): Κλειδώνει ένα εύρος γραμμών σε έναν δείκτη. Χρησιμοποιείται για την αποτροπή φανταστικών αναγνώσεων.
    • Κλείδωμα μεταδεδομένων (Metadata Lock): Κλειδώνει τα μεταδεδομένα του αντικειμένου (πίνακας, προβολή κ.λπ.). Χρησιμοποιείται κατά την εκτέλεση DDL λειτουργιών.

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

Τύπος κλειδώματος S X IS IX
S Ναι Όχι Ναι Όχι
X Όχι Όχι Όχι Όχι
IS Ναι Όχι Ναι Ναι
IX Όχι Όχι Ναι Ναι