Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 19946|Απάντηση: 3

[Πηγή] Κλειδαριές βάσης δεδομένων NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 14/1/2021 3:23:14 μ.μ. | | | |
ΝΟΛΟΚ
Όταν είναι ενεργοποιημένη αυτή η επιλογή, ο SQL Server διαβάζει ή τροποποιεί δεδομένα χωρίς κλειδώματα. Σε αυτήν την περίπτωση, ο χρήστης μπορεί να διαβάσει δεδομένα από μια Μη Δεσμευμένη Συναλλαγή ή Επαναφορά, γνωστά ως «βρώμικα δεδομένα».

ΚΛΕΙΔΩΜΑ ΚΡΑΤΗΣΗΣ
Όταν είναι ενεργοποιημένη αυτή η επιλογή, ο SQL Server διατηρεί αυτό το κοινόχρηστο κλείδωμα μέχρι το τέλος ολόκληρης της συναλλαγής χωρίς να το απελευθερώσει καθ' οδόν.

ΕΝΗΜΕΡΩΣΗ
Όταν είναι ενεργοποιημένη αυτή η επιλογή, ο SQL Server χρησιμοποιεί ένα κλείδωμα τροποποίησης αντί για ένα κοινόχρηστο κλείδωμα κατά την ανάγνωση δεδομένων και διατηρεί αυτό το κλείδωμα μέχρι το τέλος ολόκληρης της συναλλαγής ή της εντολής. Αυτή η επιλογή εξασφαλίζει ότι πολλές διεργασίες μπορούν να διαβάσουν δεδομένα ταυτόχρονα, αλλά μόνο αυτή η διαδικασία μπορεί να τροποποιήσει τα δεδομένα.

ΤΑΜΠΛΌΚ
Όταν είναι ενεργοποιημένη αυτή η επιλογή, ο SQL Server θα τοποθετήσει ένα κοινόχρηστο κλείδωμα σε ολόκληρο τον πίνακα μέχρι να λήξει η εντολή. Αυτή η επιλογή διασφαλίζει ότι άλλες διεργασίες μπορούν μόνο να διαβάσουν και όχι να τροποποιήσουν τα δεδομένα.

ΠΑΓΛΟΚ
Αυτή η επιλογή είναι η προεπιλεγμένη επιλογή και, όταν είναι ενεργοποιημένη, ο SQL Server χρησιμοποιεί ένα κοινόχρηστο κλείδωμα σελίδας.

TABLOCKX (Αποκλειστική κλειδαριά τραπεζιού)
Όταν είναι ενεργοποιημένη αυτή η επιλογή, ο SQL Server θα τοποθετήσει ένα κλείδωμα σε ολόκληρο τον πίνακα μέχρι να λήξει η εντολή ή η συναλλαγή. Αυτό θα αποτρέψει άλλες διεργασίες από την ανάγνωση ή την τροποποίηση των δεδομένων στον πίνακα.

Το HOLDLOCK διατηρεί το κοινόχρηστο κλείδωμα μέχρι να ολοκληρωθεί ολόκληρη η συναλλαγή και θα πρέπει να αποδεσμευτεί μόλις δεν χρειάζεται το κλειδωμένο αντικείμενο, ίσο με το επίπεδο απομόνωσης συναλλαγής SERIALIZABLE

Η δήλωση NOLOCK εκτελείται χωρίς την έκδοση κοινόχρηστου κλειδώματος, επιτρέποντας βρώμικες αναγνώσεις, το οποίο ισούται με το επίπεδο απομόνωσης συναλλαγής READ UNCOMMITTED

Το PAGLOCK χρησιμοποιεί πολλαπλά κλειδώματα σελίδων όπου χρησιμοποιείται ένα κλείδωμα πίνακα

Το READPAST επιτρέπει στον sql server να παραλείπει τυχόν κλειδωμένες γραμμές και να εκτελεί συναλλαγές και για τα επίπεδα απομόνωσης συναλλαγών READ UNMITTED, να παραλείπει μόνο τα κλειδώματα RID και όχι τα κλειδώματα σελίδας, ζώνης και πίνακα

Το ROWLOCK επιβάλλει τη χρήση κλειδαριών σειρών

Το TABLOCKX επιβάλλει τη χρήση ενός αποκλειστικού κλειδώματος σε επίπεδο πίνακα, το οποίο εμποδίζει οποιαδήποτε άλλη συναλλαγή να χρησιμοποιήσει τον πίνακα κατά τη διάρκεια της συναλλαγής

Το UPLOCK επιβάλλει τη χρήση ενημερώσεων κατά την ανάγνωση ενός πίνακα χωρίς κοινόχρηστο κλείδωμα

Σημείωση: Η διαφορά μεταξύ του κλειδώματος ενός πίνακα σε μια βάση δεδομένων
ΕΠΙΛΟΓΗ * ΑΠΟ πίνακα ΜΕ (HOLDLOCK) Άλλες συναλλαγές μπορούν να διαβάσουν τον πίνακα, αλλά δεν μπορούν να ενημερώσουν ή να διαγράψουν
ΕΠΙΛΟΓΗ * ΑΠΟ πίνακα ΜΕ (TABLOCKX) Άλλες συναλλαγές δεν μπορούν να διαβάσουν, να ενημερώσουν και να διαγράψουν πίνακες




Προηγούμενος:Οθόνη διπλής οθόνης απομακρυσμένης επιφάνειας εργασίας Win10
Επόμενος:.NET/C# Δημιουργία λογαριασμού πορτοφολιού ETH και κωδικού επαλήθευσης με βάση το Nethereum [με πηγαίο κώδικα]
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 14/1/2021 4:53:24 μ.μ. |
Δοκιμάστε την κλειδαριά TABLOCKX

Η δοκιμαστική sql έχει ως εξής:


Δοκιμή του κωδικού C#:


Ανακάλυψη,Ολόκληρος ο πίνακας είναι κλειδωμένος και τα δεδομένα μπορούν να αναζητηθούν μόνο όταν εκτελεστεί η συναλλαγή, όπως φαίνεται στο παρακάτω σχήμα:



Διαγράψτε το WITH(TABLOCKX) και ενημερώστε μόνο τα δεδομένα με το ID 1, η δοκιμή έχει ως εξής:



Δεδομένου ότι η Εργασία 2 και η Εργασία 4 δεν περιλαμβάνουν δεδομένα με αναγνωριστικό 1, το ερώτημα είναι πολύ γρήγορο και τα 3 και 4 πρέπει να περιμένουν να ολοκληρωθεί η συναλλαγή πριν από την υποβολή ερωτήματος.

Συμπεριφορά κατά την τροποποίηση δεδομένων

Σε μια δεσμευμένη συναλλαγή ανάγνωσης που χρησιμοποιεί διαχείριση εκδόσεων γραμμών, επιλέξτε τις γραμμές που θα ενημερωθούν χρησιμοποιώντας μια σάρωση αποκλεισμού, όπου εφαρμόζεται ένα κλείδωμα ενημέρωσης (U-lock) στη γραμμή δεδομένων κατά την ανάγνωση της τιμής δεδομένων. Αυτό είναι το ίδιο με μια δεσμευμένη συναλλαγή ανάγνωσης που δεν χρησιμοποιεί διαχείριση εκδόσεων γραμμής. Εάν μια γραμμή δεδομένων δεν πληροί τα κριτήρια ενημέρωσης, απελευθερώνεται ένα κλείδωμα ενημέρωσης σε αυτήν τη γραμμή και η επόμενη γραμμή κλειδώνεται και σαρώνεται.

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

Η σύνδεση με υπερσύνδεσμο είναι ορατή.

 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 28/1/2021 5:30:51 μ.μ. |
Ζήτημα:

udpate a
Ορισμός στήλης1 = 1
όπου idx = 1
Όταν ο sqlserver εκτελεί την πρόταση ενημέρωσης, κλειδώνει ολόκληρο τον πίνακα

Ανάλυση:

δομή ρολογιού,Χωρίς πρωτεύον κλειδί, δεν μπορείτε να κλειδώσετε μόνο τις σειρές
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2/5/2023 11:47:24 π.μ. |
Entity Framework Query Optimization WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com