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

Άποψη: 12282|Απάντηση: 0

[Πηγή] Ο SQL Server ορίζει το επίπεδο απομόνωσης συναλλαγών

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 5/2/2021 11:53:34 π.μ. | | | |
Entity Framework Query Optimization WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

Κλειδαριές βάσης δεδομένων NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX
https://www.itsvse.com/thread-9519-1-1.html
Το επίπεδο απομόνωσης των συναλλαγών στον SQL Server και η σχέση τους με βρώμικες αναγνώσεις, μη επαναλαμβανόμενες αναγνώσεις, φανταστικές αναγνώσεις κ.λπ.

Κατανοώντας αυτά τα προβλήματα που μπορεί να προκύψουν στην περίπτωση ταυτόχρονης πρόσβασης στη βάση δεδομένων, μπορούμε να συνεχίσουμε να κατανοούμε την έννοια του επιπέδου απομόνωσης της βάσης δεδομένων, με απλούς όρους: πώς θέλετε να απομονώσετε τις ταυτόχρονες συναλλαγές και σε ποιο βαθμό; Για παράδειγμα, εάν οι βρώμικες αναγνώσεις μπορούν να γίνουν ανεκτές ή εάν δεν θέλετε οι ταυτόχρονες συναλλαγές να έχουν βρώμικες αναγνώσεις, τότε αυτές μπορούν να ρυθμιστούν στο επίπεδο απομόνωσης για να κάνουν την απομόνωση μεταξύ ταυτόχρονων συναλλαγών χαλαρή ή σοβαρή.

Όσο υψηλότερο είναι το επίπεδο απομόνωσης, τόσο λιγότερες πιθανότητες ανάγνωσης βρώμικων δεδομένων ή ελλιπών δεδομένων, αλλά τόσο πιο σοβαρή είναι η υποβάθμιση της απόδοσης σε συστήματα υψηλής ταυτόχρονης χρήσης. Όσο χαμηλότερο είναι το επίπεδο απομόνωσης, τόσο μεγαλύτερη είναι η βελτίωση της απόδοσης στο ταυτόχρονο σύστημα, αλλά τα ίδια τα δεδομένα μπορεί να είναι ελλιπή.

Στον SQL Server 2012, μπορείτε να ορίσετε το επίπεδο απομόνωσης μιας συναλλαγής (από χαμηλό σε υψηλό) χρησιμοποιώντας αυτήν τη σύνταξη:

ΟΡΙΣΜΌΣ ΕΠΙΠΈΔΟΥ ΑΠΟΜΌΝΩΣΗΣ ΣΥΝΑΛΛΑΓΏΝ
    { ΔΙΑΒΑΣΤΕ ΑΔΕΣΜΕΥΤΕΣ
    | ΔΙΑΒΑΣΤΕ ΔΕΣΜΕΥΜΕΝΟΙ
    | ΕΠΑΝΑΛΑΜΒΑΝΟΜΕΝΗ ΑΝΑΓΝΩΣΗ
    | ΣΤΙΓΜΙΟΤΥΠΟ
    | ΣΕΙΡΙΑΖΟΣ
    }
[ ; ]
Αρχικά, δημιουργήστε ένα νέο σενάριο δοκιμής, δημιουργήστε μια βάση δεδομένων και εισαγάγετε δεδομένα δοκιμής, ως εξής:



Δημιουργία νέου παραθύρου A, ανοίξτε μια συναλλαγή, εκτελέστε τη λειτουργία ενημέρωσης και περιμένετε 10 δευτερόλεπτα πριν δεσμευτείτε, ο κωδικός έχει ως εξής:

Δημιουργία νέου παραθύρου B, ορίστε τη συναλλαγή READ UNCOMMITTED (μη δεσμευμένη ανάγνωση, το χαμηλότερο επίπεδο, το εύκολο πρόβλημα είναι η βρώμικη ανάγνωση, επειδή μπορεί να διαβάσει τα δεδομένα που έχουν τροποποιηθεί από άλλες συναλλαγές αλλά δεν έχουν δεσμευτεί.) Κάνει το ίδιο πράγμα με τη ρύθμιση (NOLOCK) στον πίνακα αντικειμένων δήλωσης SELECT σε μια συναλλαγή. Ζητήστε τα δεδομένα, ο κώδικας έχει ως εξής:

Δημιουργήστε ένα νέο παράθυρο C, υποβάλετε απευθείας ερωτήματα στα δεδομένα, ως εξής:

Με τη σειρά του,Εκτελέστε τα παράθυρα A, B και C και βρείτε ότι κατά την ενημέρωση δεδομένων, το παράθυρο B μπορεί να επιστρέψει αμέσως δεδομένα (Είναι πιθανό η ανάγνωση να είναι βρώμικα δεδομένα), το παράθυρο C πρέπει να περιμένει μέχρι να ολοκληρωθεί η εκτέλεση του παραθύρου Aθα επιστρέψει τα δεδομένα, όπως φαίνεται στο παρακάτω σχήμα:


(Παράθυρο Β)


(Παράθυρο Γ)

(Τέλος)





Προηγούμενος:Διαφορά επιμονής Redis μεταξύ RDB και AOF
Επόμενος:Η MySQL εξάγει τα αποτελέσματα του ερωτήματος σε ένα αρχείο
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com