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

Άποψη: 11079|Απάντηση: 1

[Πηγή] MSSQL ΜΕ (NOLOCK) βρώμικη ανάγνωση

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2020-4-3 10:06:04 | | |
Μειονεκτήματα:

1. Θα παράγει βρώμικη ανάγνωση

2. Ισχύει μόνο για επιλεγμένες δηλώσεις ερωτημάτων

Πλεονεκτήματα:

1. Ορισμένα αρχεία λένε ότι η αποτελεσματικότητα του ερωτήματος SQL με WITH (NOLOCK) μπορεί να αυξηθεί κατά 33%.

2. Μπορεί να χρησιμοποιηθεί για δηλώσεις εσωτερικής σύνδεσης

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

Λεπτομέριες:

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

Ωστόσο, ένα πράγμα που πρέπει να σημειωθεί είναι ότι το SQL SELECT με (NOLOCK) μπορεί να προκαλέσει Dirty Read.

Για παράδειγμα:

Εκτός από το απλό SELECT, μπορείτε επίσης να χρησιμοποιήσετε τη σύνταξη SELECT με το JOIN. Αλλά οι εντολές DELETE, INSERT, UPDATE και άλλες εντολές που απαιτούν συναλλαγές δεν είναι καλές...


Ορισμένα αρχεία λένε ότι η αποτελεσματικότητα των ερωτημάτων SQL μπορεί να αυξηθεί κατά 33% με το WITH (NOLOCK).
Η προσθήκη WITH (NOLOCK) λέει στον SQL Server ότι η εντολή SELECT δεν χρειάζεται να λαμβάνει υπόψη την κατάσταση κλειδώματος συναλλαγών του τρέχοντος πίνακα, επομένως η απόδοση θα βελτιωθεί σημαντικά και το φαινόμενο κλειδώματος του συστήματος βάσης δεδομένων θα μειωθεί σημαντικά (συμπεριλαμβανομένου του dead lock).

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

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

Εάν δεν χρειάζεται να λάβετε υπόψη τις συναλλαγές, το WITH (NOLOCK) μπορεί να είναι μια χρήσιμη αναφορά.

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

Σημείωση 2: Το WITH (NOLOCK) ισοδυναμεί με το READ UNCOMMITTED





Προηγούμενος:Η καθυστέρηση master-slave της βάσης δεδομένων οδηγεί σε ανακριβή ανάλυση ερωτημάτων
Επόμενος:Επιλύθηκε το πρόβλημα ότι ο βιολιστής δεν μπορούσε να ανιχνεύσει τον τοπικό τοπικό κεντρικό υπολογιστή, τις αιτήσεις δικτύου 127.0.0.1
Δημοσιεύτηκε στις 2020-4-5 14:21:36 |
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com