Middle
Ποιοι τύποι αποκλεισμών υπάρχουν στο SQL;
sobes.tech AI
Απάντηση από AI
Τύποι κλειδώματος σε SQL:
-
Σε επίπεδο:
- Κλειδώματα πίνακα (Table Locks): Κλειδώνει ολόκληρο τον πίνακα. Εύκολο στην υλοποίηση, αλλά μπορεί να μειώσει σημαντικά το παράλληλο. Κατάλληλο για λειτουργίες που τροποποιούν ολόκληρο τον πίνακα (π.χ.,
ALTER TABLE). - Κλειδώματα γραμμών (Row Locks): Κλειδώνει μεμονωμένες γραμμές. Παρέχει υψηλό παράλληλο, αλλά απαιτεί περισσότερους πόρους για διαχείριση. Χρησιμοποιείται από προεπιλογή στα περισσότερα SGBD για
INSERT,UPDATE,DELETE.
- Κλειδώματα πίνακα (Table Locks): Κλειδώνει ολόκληρο τον πίνακα. Εύκολο στην υλοποίηση, αλλά μπορεί να μειώσει σημαντικά το παράλληλο. Κατάλληλο για λειτουργίες που τροποποιούν ολόκληρο τον πίνακα (π.χ.,
-
Σε τύπο πρόσβασης:
- Κοινόχρηστο κλείδωμα (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 | Όχι | Όχι | Ναι | Ναι |