Γιατί ένα γρήγορο VPN εξακολουθεί να επιβραδύνει μια σύγχρονη δέσμευση SQL
Η δέσμευση φεύγει από το κτίριο προς ένα σύγχρονο αντίγραφο. Ακολουθήστε από τον τύπο αναμονής στις ουρές αποστολής και redo και μετά αποφασίστε αν το ασύγχρονο είναι η σωστή ανταλλαγή.
Ανοίξτε μια συνεδρία ερωτήματος στον κύριο και δείτε τι περιμένει μια απλή εγγραφή. Αν η βάση δεδομένων ανήκει σε ομάδα διαθεσιμότητας με σύγχρονη δέσμευση και το δευτερεύον είναι συνδεδεμένο, μέρος αυτής της αναμονής φεύγει από το κτίριο: οι εγγραφές του αρχείου καταγραφής ταξιδεύουν στο αντίγραφο, σκληρύνονται εκεί, και η είδηση αυτής της σκλήρυνσης επιστρέφει πριν ολοκληρωθεί η δέσμευση. Το εύρος ζώνης δεν συντομεύει αυτό το ταξίδι μετ' επιστροφής. Η περιήγηση παρακάτω ακολουθεί την επιβεβαίωση από την οθόνη στον απομακρυσμένο δίσκο και πίσω.
Ξεκινήστε από τον τύπο αναμονής στον κύριο
Μια εγγραφή που περιμένει στο απομακρυσμένο αντίγραφο εμφανίζεται ως αναμονή σχετική με το αρχείο καταγραφής και όχι ως αναμονή CPU ή κλειδώματος, και η διάρκεια της συναλλαγής ακολουθεί το ταξίδι μετ' επιστροφής αντί για τον αριθμό των γραμμών. Πολλές μικρές δεσμεύσεις το κάνουν προφανές, γιατί καθεμία πληρώνει το ταξίδι ξεχωριστά. Μια μόνο μαζική λειτουργία κρύβει το ίδιο κόστος μέσα σε μια μεγαλύτερη επιβεβαίωση.
Ταξινομήστε τον φόρτο εργασίας κατά συχνότητα δέσμευσης πριν συμπεράνετε οτιδήποτε για τη ζεύξη.
Διαβάστε την κατάσταση του αντιγράφου πριν διαβάσετε το δίκτυο. Οι μετρητές που μετρούν είναι η ουρά αποστολής, η ουρά redo και η κατάσταση συγχρονισμού, και μαζί δείχνουν αν το δευτερεύον προλαβαίνει ή μένει πίσω. Μια αυξανόμενη ουρά αποστολής δείχνει τη μεταφορά, ενώ μια αυξανόμενη ουρά redo δείχνει τη δική του εργασία ή αποθήκευση του δευτερεύοντος. Πρόκειται για διαφορετικές επισκευές και καμία δεν βελτιώνεται με προσθήκη εύρους ζώνης.
Ακολουθήστε την επιβεβαίωση ως το δευτερεύον
Με σύγχρονη δέσμευση ο κύριος περιμένει επιβεβαίωση ότι το σχετικό αρχείο καταγραφής έχει σκληρυνθεί στο δευτερεύον πριν αναφέρει τη δέσμευση ως ολοκληρωμένη. Σκληρυμένο σημαίνει ανθεκτικό στο αρχείο καταγραφής, όχι επανεκτελεσμένο στις σελίδες δεδομένων. Ακριβώς αυτή η διάκριση εξηγεί γιατί ένα σύγχρονο δευτερεύον μπορεί να μένει πίσω στο redo ενώ ακόμη επιβεβαιώνει τη σκλήρυνση.
Περπατήστε τη διαδρομή με σειρά και μετρήστε κάθε στάδιο αντί για το σύνολο. Οι εγγραφές καταγραφής περνούν από τη μεταφορά, το δευτερεύον τις γράφει και τις εκπλένει, και η επιβεβαίωση επιστρέφει από την ίδια διαδρομή. Η καθυστέρηση μεταφοράς, ο προγραμματισμός του δευτερεύοντος και η λανθάνουσα κατάσταση του δίσκου καταγραφής του δευτερεύοντος καταλήγουν όλα στο σύνολο, και μόνο το πρώτο ανήκει στον ιδιοκτήτη του δικτύου. Ένα δευτερεύον του οποίου ο όγκος καταγραφής είναι κορεσμένος από κάτι άλλο μπορεί να τεντώσει κάθε δέσμευση όσο η ζεύξη κάθεται άεργη.
SELECT ag.name AS ag_name, drs.database_id, drs.synchronization_state_desc,
drs.log_send_queue_size, drs.redo_queue_size
FROM sys.dm_hadr_database_replica_states AS drs
JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id;Πάρτε αυτό το στιγμιότυπο πριν και μετά από μια αντιπροσωπευτική εγγραφή αντί μία φορά σε ένα ήσυχο απόγευμα. Η διαφορά είναι αυτό που σας λέει ποια ουρά κινήθηκε όσο η δέσμευση περίμενε.
Μετρήστε τη διαδρομή, όχι τη ζεύξη
Μια δοκιμή ρυθμαπόδοσης μετρά χωρητικότητα μεταξύ δύο σημείων που δεν είναι τα αντίγραφά σας, υπό φορτίο που δεν είναι ο φόρτος εργασίας σας. Ζητήστε από τον ιδιοκτήτη του δικτύου καθυστέρηση και απώλεια κατά μήκος της πραγματικής διαδρομής του αντιγράφου όσο κινείται πραγματική κίνηση, και στις δύο κατευθύνσεις. Η απώλεια μετρά περισσότερο από τη χωρητικότητα εδώ, γιατί ένα χαμένο τμήμα κοστίζει μια επαναμετάδοση και κάθε δέσμευση περιμένει μία επιβεβαίωση. Μια ζεύξη που φαίνεται εξαιρετική σε δοκιμή λήψης μπορεί ακόμη να είναι κακή για ένα πολύ ομιλητικό μοτίβο δεσμεύσεων.
Διατηρήστε άθικτη την ασφάλεια μεταφοράς της βάσης δεδομένων και τους ελέγχους πρόσβασης κατά τη μέτρηση. Η μέτρηση μιας διαδρομής δεν είναι ποτέ λόγος να τα παρακάμψετε.
Συσχετίστε τους χρόνους με τους μετρητές αντί με τη διαίσθηση. Αν η ουρά αποστολής μένει κενή και η δέσμευση ακόμη περιμένει, η καθυστέρηση είναι στην επιβεβαίωση ή στο ξέπλυμα του δευτερεύοντος. Αν η ουρά αποστολής μεγαλώνει σταθερά, ο περιορισμός είναι η μεταφορά ή η χωρητικότητα. Καταγράψτε ποια παρατήρηση στήριξε το συμπέρασμα, ώστε ο επόμενος να επαναλάβει τη μέτρηση αντί για τη διαφωνία.
Τι αλλάζει πραγματικά η ασύγχρονη λειτουργία
Η ασύγχρονη δέσμευση αφαιρεί την αναμονή για την επιβεβαίωση σκλήρυνσης του δευτερεύοντος, γι' αυτό οι εγγραφές γίνονται ταχύτερες και γι' αυτό αλλάζει η θέση ανθεκτικότητάς σας. Ο κύριος επιβεβαιώνει τη συναλλαγή χωρίς αυτή την απομακρυσμένη επιβεβαίωση. Στη συνέχεια επιτρέπεται στο δευτερεύον να μείνει πίσω, και αυτή η υστέρηση είναι η έκθεση.
Αν ο κύριος χαθεί πριν το αρχείο καταγραφής φτάσει σε ένα χρησιμοποιήσιμο στόχο μεταβίβασης, η εξαναγκασμένη μεταφορά της υπηρεσίας σε αυτό το αντίγραφο πετάει συναλλαγές που η εφαρμογή είχε ήδη ενημερωθεί ότι δεσμεύτηκαν.
Πρόκειται για απόφαση σημείου ανάκτησης και ανήκει στον ιδιοκτήτη της βάσης δεδομένων, όχι σε μια ανασκόπηση απόδοσης. Ορίστε πρώτα το ανεκτό παράθυρο απώλειας δεδομένων, επιλέξτε τη λειτουργία που το ικανοποιεί, και μετά βελτιστοποιήστε μέσα σε αυτό το όριο. Επιλογές που διατηρούν τη σύγχρονη προστασία περιλαμβάνουν την αφαίρεση περιττών ταξιδιών δέσμευσης όπου η εφαρμογή το επιτρέπει, τη διόρθωση ενός μετρημένου σημείου συμφόρησης στη μεταφορά ή την αποθήκευση, και τη μετακίνηση του αντιγράφου ώστε η επιβεβαίωση να διανύει μικρότερη απόσταση. Ζυγίστε τα απέναντι στην απαίτηση ανθεκτικότητας με την οποία ξεκινήσατε, η οποία δεν έχει αλλάξει.