Περιγραφή των αλγορίθμων αποθήκευσης καταγραφής και δεδομένα που επεκτείνουν την αξιοπιστία των δεδομένων στον SQL Server

ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο έχει μεταφραστεί χρησιμοποιώντας λογισμικό μηχανικής μετάφρασης της Microsoft και μπορείτε να το διορθώσετε χρησιμοποιώντας την τεχνολογία Community Translation Framework (CTF) (Πλαίσιο μετάφρασης κοινότητας). Η Microsoft παρέχει μηχανική μετάφραση, επεξεργασία μετά τη μηχανική μετάφραση από την κοινότητα και άρθρα μεταφρασμένα από επαγγελματίες προκειμένου να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής βάσης σε πολλές γλώσσες. Τα άρθρα μηχανικής μετάφρασης και αυτά που επεξεργάζονται ύστερα από μηχανική μετάφραση ενδέχεται να περιέχουν σφάλματα στο λεξιλόγιο, στη σύνταξη ή/και στη γραμματική. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες μας. Για περισσότερες πληροφορίες σχετικά με το CTF, μεταβείτε στην τοποθεσία http://support.microsoft.com/gp/machine-translation-corrections/el.

Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη: 230785
Περίληψη
Αυτό το άρθρο περιγράφει τον τρόπο επεκτείνετε αλγόριθμοι καταγραφή και δεδομένων του Microsoft SQL Server, αξιοπιστία των δεδομένων και την ακεραιότητα.

Για να μάθετε περισσότερα σχετικά με τις βασικές έννοιες των κινητήρων και ARIES (αλγόριθμος για αποκατάσταση και απομόνωση εκμετάλλευση σημασιολογία), δείτε τις ακόλουθες συναλλαγές ACM στο έγγραφο συστήματα βάσεων δεδομένων (στην ενότητα "όγκος 17, αριθμός 1, Μαρτίου 1992):

Το πρόγραμμα εγγραφής του υποψήφιο πελάτη αυτού του εγγράφου είναι γ. Mohan. Το έγγραφο αντιμετωπίζει τις τεχνικές του SQL Server για να επεκτείνετε την αξιοπιστία των δεδομένων και την ακεραιότητα που σχετίζεται με αποτυχίες.

Συνιστάται να διαβάσετε τα παρακάτω άρθρα στη Γνωσιακή βάση της Microsoft για περισσότερες πληροφορίες σχετικά με την προσωρινή αποθήκευση και εναλλακτικές αποτυχία λειτουργίας συζητήσεων:
86903 Περιγραφή της προσωρινής αποθήκευσης ελεγκτές δίσκου στον SQL Server
234656 Πληροφορίες σχετικά με τη χρήση της μνήμης cache του δίσκου με τον SQL Server που πρέπει να γνωρίζετε κάθε διαχειριστή της βάσης δεδομένων
Περισσότερες πληροφορίες
Πριν ξεκινά η λεπτομερής ανάλυση, μερικούς από τους όρους που χρησιμοποιούνται σε αυτό το άρθρο καθορίζονται στον ακόλουθο πίνακα.
ΌροςΟρισμός
Με υποστήριξη μπαταρίαςΜπαταρία ξεχωριστά και μεταφρασμένες αντιγράφων ασφαλείας λιμενικής εγκατάστασης άμεσα διαθέσιμες και ελεγχόμενη από το μηχανισμό προσωρινής αποθήκευσης για να αποτρέψετε την απώλεια δεδομένων.
Σημείωση Δεν πρόκειται για αδιάλειπτη παροχή ενέργειας (UPS). Μια συσκευή UPS δεν εγγυάται οποιεσδήποτε δραστηριότητες εγγραφής και να μπορεί να αποσυνδέεται από τη συσκευή προσωρινής αποθήκευσης.
Μνήμη cacheΜηχανισμός ενδιάμεση περιοχή αποθήκευσης που χρησιμοποιείται για τη βελτιστοποίηση των φυσικών λειτουργιών εισόδου/εξόδου και τη βελτίωση των επιδόσεων.
Τροποποιημένο σελίδαςΗ σελίδα που περιέχει τροποποιήσεις δεδομένων που πρέπει να εκκαθαριστούν στο σταθερό χώρο αποθήκευσης. Για περισσότερες πληροφορίες σχετικά με τα buffer προβληματικό σελίδας, ανατρέξτε στο θέμα της "Δημιουργία σελίδων"το θέμα στο SQL Server Books Online.
Σημείωση Το περιεχόμενο αυτό ισχύει επίσης για το 2012 του Microsoft SQL Server και οι νεότερες εκδόσεις.
ΑποτυχίαΟτιδήποτε μπορεί να προκαλέσει μια μη αναμενόμενη διακοπή ρεύματος της διαδικασίας του SQL Server. Τα παραδείγματα περιλαμβάνουν: ενέργειας διακοπή ρεύματος, επαναφορά υπολογιστή, σφάλματα μνήμης, άλλα ζητήματα υλικού, κατεστραμμένους τομείς, διακοπές λειτουργίας της μονάδας δίσκου, αποτυχίες του συστήματος, και ούτω καθεξής.
ΕκκαθάρισηΕπιβολή της μνήμης cache του buffer στο σταθερό χώρο αποθήκευσης.
ΑσφάλισηΑντικείμενο συγχρονισμού που χρησιμοποιείται για την προστασία της φυσικής συνέπειας ενός πόρου.
Σταθερή αποθήκευσηςΟποιοδήποτε μέσο που παραμένει διαθέσιμο σε αποτυχίες του συστήματος.
Καρφιτσωμένα σελίδαςΣελίδα που παραμένει στα δεδομένα της μνήμης προσωρινής αποθήκευσης και δεν είναι δυνατό να εκκαθαριστούν στο σταθερό χώρο αποθήκευσης μέχρι να είναι ασφαλείς όλες τις εγγραφές συσχετισμένο αρχείο καταγραφής σε ένα χώρο αποθήκευσης σταθερή.
Σταθερή αποθήκευσηςΊδια με σταθερή αποθήκευσης.
Μεταβλητό χώρο αποθήκευσηςΟποιοδήποτε μέσο που δεν θα παραμείνει ανέπαφη σε αποτυχίες.

Πρωτόκολλο έναρξης επόμενης εργασίας εγγραφής καταγραφή (WAL)

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

Το έγγραφο ARIES ορίζει το WAL ως εξής:
Το πρωτόκολλο WAL διεκδικήσεις ότι οι εγγραφές καταγραφής που αντιπροσωπεύει τις αλλαγές σε ορισμένα δεδομένα ήδη πρέπει να είναι στο σταθερό χώρο αποθήκευσης, πριν να επιτραπεί να αντικαταστήσετε την προηγούμενη έκδοση των δεδομένων σε σταθερή αποθήκευσης στα τροποποιημένα δεδομένα. Αυτό σημαίνει ότι το σύστημα δεν επιτρέπεται να γράψετε μια ενημερωμένη σελίδα στην έκδοση σταθερή αποθήκευσης της σελίδας μέχρι τουλάχιστον τα τμήματα Αναίρεση τις εγγραφές καταγραφής που περιγράφουν τις ενημερωμένες εκδόσεις στη σελίδα έχουν εγγραφεί στο σταθερό χώρο αποθήκευσης.
Για περισσότερες πληροφορίες σχετικά με την καταγραφή έναρξης επόμενης εργασίας εγγραφής, δείτε την Αρχείο καταγραφής συναλλαγών έναρξης επόμενης εργασίας εγγραφής θέμα στο SQL Server Books Online.

SQL Server και το WAL

Ο SQL Server χρησιμοποιεί το πρωτόκολλο WAL. Για να βεβαιωθείτε ότι μια συναλλαγή δεσμεύεται σωστά, όλες οι εγγραφές καταγραφής που σχετίζεται με τη συναλλαγή πρέπει να στερεώνεται στο σταθερό χώρο αποθήκευσης.

Για να διευκρινισθεί η κατάσταση, προσέξτε το ακόλουθο παράδειγμα συγκεκριμένα.

Σημείωση Αυτό το παράδειγμα, υποθέστε ότι υπάρχει ευρετήριο και ότι η σελίδα που επηρεάζονται είναι σελίδα 150.
BEGIN TRANSACTION   INSERT INTO tblTest VALUES (1)COMMIT TRANSACTION				
Στη συνέχεια, αναλύστε τη δραστηριότητα σε βήματα simplistic καταγραφής, όπως περιγράφεται στον παρακάτω πίνακα.
ΔήλωσηΕνέργειες που εκτελούνται
ΈΝΑΡΞΗ ΤΗΣ ΣΥΝΑΛΛΑΓΉΣΗ εγγραφή στην περιοχή μνήμης cache του αρχείου καταγραφής. Ωστόσο, δεν είναι αναγκαία για να κάνετε εκκαθάριση στο σταθερό χώρο αποθήκευσης, επειδή ο SQL Server δεν έχει κάνει φυσική αλλαγές.
INSERT INTO tblTest
  1. Σελίδα 150 τα δεδομένα ανακτώνται σε cache δεδομένων SQL Server, αν δεν είναι ήδη διαθέσιμη.
  2. Η σελίδα είναι μανδαλωμένη, καρφιτσωμένα, και επισημανθεί ως προβληματικός, και λαμβάνονται κατάλληλα κλειδώματα.
  3. Μια καρτέλα Εισαγωγή αρχείου καταγραφής είναι ενσωματωμένα και να προστεθεί στο χώρο προσωρινής αποθήκευσης του αρχείου καταγραφής.
  4. Μια νέα γραμμή προστίθεται στη σελίδα δεδομένων.
  5. Απελευθερώνεται το κλείθρο.
  6. Οι εγγραφές καταγραφής που σχετίζεται με τη συναλλαγή ή η σελίδα δεν έχει να καταγραφούν σε αυτό το σημείο, επειδή όλες οι αλλαγές που παραμένουν στο μεταβλητό χώρο αποθήκευσης.
ΟΛΟΚΛΉΡΩΣΗ ΣΥΝΑΛΛΑΓΉΣ
  1. Διαμορφώνεται μια εγγραφή καταγραφής ολοκλήρωσης και οι εγγραφές καταγραφής που σχετίζεται με τη συναλλαγή πρέπει να εγγραφεί στο σταθερό χώρο αποθήκευσης. Η συναλλαγή δεν θεωρείται δεσμευθεί μέχρι τις εγγραφές καταγραφής αντιστοιχίζονται σωστά στο σταθερό χώρο αποθήκευσης.
  2. Δεδομένα σελίδα 150 παραμένει στο χώρο προσωρινής αποθήκευσης δεδομένων του SQL Server και δεν καταγράφονται αμέσως στο σταθερό χώρο αποθήκευσης. Όταν οι εγγραφές του αρχείου καταγραφής είναι καλές, αποκατάστασης να επαναλάβετε τη λειτουργία, εάν είναι απαραίτητο.
  3. Έχουν κυκλοφορήσει συναλλαγών κλειδώματα.
Δεν να συγχέονται με τους όρους "Κλείδωμα" και τις "Καταγραφή". Παρότι είναι σημαντικές, κλείδωμα και καταγραφή είναι ξεχωριστά ζητήματα όταν ασχολείστε με το WAL. Στο προηγούμενο παράδειγμα, SQL Server γενικά διατηρεί το κλείθρο στη σελίδα 150 για το χρονικό διάστημα είναι απαραίτητο για να εκτελέσετε τις αλλαγές φυσική εισαγωγή στη σελίδα, δεν όλη τη διάρκεια της συναλλαγής. Τον τύπο κλειδώματος κατάλληλα καθορίζεται για την προστασία των γραμμών, περιοχής, σελίδα ή πίνακα όπως είναι απαραίτητο. Ανατρέξτε στις ενότητες κλειδώματος SQL Server Books Online για περισσότερες λεπτομέρειες σχετικά με τους τύπους κλειδώματος.

Εξετάζοντας το παράδειγμα με περισσότερες λεπτομέρειες, θα μπορεί να ρωτήσετε τι συμβαίνει όταν εκτελέσετε τις διεργασίες LazyWriter ή σημείων ελέγχου. SQL Server 7 θέματα όλα κατάλληλα Εκκαθαρίσεις στο σταθερό χώρο αποθήκευσης για εγγραφές καταγραφής συναλλαγών που σχετίζονται με τη σελίδα προβληματικό και καρφιτσωμένων. Αυτό εξασφαλίζει ότι η σελίδα δεδομένων πρωτοκόλλου WAL, ποτέ μπορεί να εγγραφεί στο σταθερό χώρο αποθήκευσης μέχρι τις εγγραφές συσχετισμένο αρχείο καταγραφής συναλλαγών που έχουν εκκαθαριστεί.

SQL Server και σταθερή αποθήκευσης

SQL Server επαυξάνει λειτουργίες σελίδα αρχείο καταγραφής και δεδομένων, καθώς και η γνώση του μεγέθη τομέα δίσκου (συνήθως 4.096 ή 512 byte).

Για να διατηρήσετε τις ιδιότητες ACID μιας συναλλαγής, SQL Server πρέπει να λάβετε υπόψη σημεία αποτυχία. Κατά τη διάρκεια μιας αποτυχίας πολλές μονάδες δίσκου προδιαγραφές εγγυάται μόνο ένα περιορισμένο ποσό των λειτουργιών εγγραφής τομέα. Οι περισσότερες προδιαγραφές εγγυάται την ολοκλήρωση της εγγραφής μονού τομέα όταν προκύπτει σφάλμα.

SQL Server χρησιμοποιεί σελίδες 8 KB δεδομένων και το αρχείο καταγραφής (εάν εκκαθάριση) σε πολλαπλάσια του μεγέθους τομέα. (Οι περισσότερες μονάδες δίσκου Χρησιμοποιήστε 512 byte ως το προεπιλεγμένο μέγεθος τομέα.) Σε περίπτωση αποτυχίας, SQL Server μπορεί να αιτιολογήσει λειτουργίες εγγραφής μεγαλύτερο από έναν τομέα με την απασχόληση αμειβόμενου καταγραφής ισοτιμίας και τεχνικές Σκισμένες εγγραφής.

Ανίχνευση σχισμένης σελίδας

Αυτή η επιλογή σας επιτρέπει να εντοπίσει τις ημιτελείς λειτουργίες εισόδου/εξόδου που οφείλονται σε διακοπές ρεύματος ή άλλες διακοπές λειτουργίας SQL Server. Όταν είναι αληθής, προκαλεί ένα bit να εμφανίζονται ανεστραμμένες για κάθε τομέα 512 byte σε μια σελίδα 8 kilobyte (KB) βάση δεδομένων κάθε φορά που η σελίδα είναι γραμμένο σε δίσκο. Εάν λίγο σε εσφαλμένη κατάσταση όταν η σελίδα είναι μεταγενέστερη διαβάζεται από τον SQL Server, στη συνέχεια, στη σελίδα ήταν εσφαλμένη σύνταξη; Εντοπίστηκε μια Ανίχνευση σχισμένης σελίδας. Σκισμένες σελίδες ανιχνεύονται συνήθως κατά την αποκατάσταση, επειδή κάθε σελίδα που έχει γραφτεί λανθασμένα είναι πιθανό να διαβαστεί από αποκατάστασης.

Παρόλο που οι σελίδες βάσης δεδομένων SQL Server είναι 8 KB, δίσκους εκτελεί λειτουργίες εισόδου/εξόδου, χρησιμοποιώντας έναν τομέα 512 byte. Επομένως, 16 τομείς καταγράφονται ανά σελίδα της βάσης δεδομένων. Μια Ανίχνευση σχισμένης σελίδας μπορεί να προκύψει εάν το σύστημα αποτύχει (για παράδειγμα, λόγω διακοπής ρεύματος) μεταξύ του χρόνου που το λειτουργικό σύστημα εγγράφει τον πρώτο τομέα 512 byte στο δίσκο και την ολοκλήρωση της λειτουργίας εισόδου/εξόδου 8 KB. Εάν ο πρώτος τομέας της σελίδας βάσης δεδομένων είναι γραμμένο με επιτυχία πριν από την αποτυχία, η σελίδα της βάσης δεδομένων στο δίσκο θα εμφανίζεται ως ενημέρωση, παρόλο που δεν μπορεί να είχαν επιτύχει.

Με τη χρήση μνήμης cache ελεγκτή δίσκου με υποστήριξη μπαταρίας, μπορείτε να βεβαιωθείτε ότι η επιτυχής εγγραφή δεδομένων στο δίσκο ή δεν εγγράφονται καθόλου. Σε αυτήν την περίπτωση, μην ορίζετε εντοπισμού Ανίχνευση σχισμένης σελίδας σε "true", επειδή αυτό δεν είναι απαραίτητο.

Σημείωση Ανίχνευση σχισμένης σελίδας δεν είναι ενεργοποιημένη από προεπιλογή στον SQL Server. Για περισσότερες πληροφορίες, ανατρέξτε την ακόλουθη τοποθεσία MSDN στο Web:

Αρχείο καταγραφής ισοτιμίας

Έλεγχος ισοτιμίας καταγραφής είναι παρόμοια με την Ανίχνευση σχισμένης σελίδας. Κάθε τομέας 512-byte περιέχει bit ισοτιμίας. Αυτά τα bit ισοτιμίας πάντα γράφονται με την εγγραφή καταγραφής και αξιολογούνται κατά την εγγραφή καταγραφής ανακτάται. Επιβάλλοντας εγγραφές του αρχείου καταγραφής σε ένα όριο 512-byte, SQL Server να βεβαιωθείτε ότι ότι committal λειτουργίες εγγράφονται πλήρως στους τομείς φυσικού δίσκου.

Εκδόσεις του SQL Server που είναι παλαιότερες από το 7.0

Προηγούμενες εκδόσεις του SQL Server από 7.0 δεν παρείχε καταγραφής ισοτιμίας ή εγκαταστάσεις εντοπισμού Σκισμένες bit. Στην πραγματικότητα, αυτές τις εκδόσεις να συντάξετε την ίδια σελίδα καταγραφής πολλές φορές μέχρι τις εγγραφές καταγραφής γεμίσουν τη σελίδα καταγραφής 2 KB. Αυτό μπορεί να εκθέσει συναλλαγές που έχουν ολοκληρωθεί με επιτυχία. Εάν η σελίδα καταγραφής ξαναγράφεται κάποιο σφάλμα, έναν τομέα με τη δεσμευμένη συναλλαγή ίσως δεν λάβετε επανεγγραφή σωστά.

Επιπτώσεις στην απόδοση

Όλες τις εκδόσεις του SQL Server, ανοίξτε τα αρχεία καταγραφής και τα δεδομένα, χρησιμοποιώντας τη συνάρτηση Win32CreateFile . Το μέλος dwFlagsAndAttributes περιλαμβάνει την επιλογή FILE_FLAG_WRITE_THROUGHόταν ανοίγονται από τον SQL Server.
FILE_FLAG_WRITE_THROUGH
Δίνει οδηγία στο σύστημα να γράψετε μέσω κάθε ενδιάμεση cache και να μεταβείτε απευθείας στο δίσκο. Το σύστημα εξακολουθεί να μπορεί να αποθηκεύσει προσωρινά λειτουργίες εγγραφής, αλλά δεν είναι δυνατό να αμέριμνα εκκαθάριση.

Η επιλογή FILE_FLAG_WRITE_THROUGH εξασφαλίζει ότι όταν μια λειτουργία εγγραφής επιστρέφει μια επιτυχημένη ολοκλήρωση, τα δεδομένα σωστά αποθηκεύονται στο σταθερό χώρο αποθήκευσης. Αυτό ευθυγραμμίζεται με το πρωτόκολλο WAL που διασφαλίζει τα δεδομένα.
Πολλές μονάδες δίσκου (SCSI και IDE) περιέχουν ενσωματωμένη μνημών cache 512 KB, 1 MB, ή μεγαλύτερο. Ωστόσο, η μονάδα μνήμης cache συνήθως βασίζονται σε πυκνωτές και όχι μια λύση με υποστήριξη μπαταρίας. Αυτά προσωρινή αποθήκευση μηχανισμούς δεν μπορεί να εγγυηθεί εγγραφές σε μια δύναμη του κύκλου ή παρόμοια αποτυχία σημείο. Μόνο εγγυώνται την ολοκλήρωση των λειτουργιών εγγραφής τομέα. Συγκεκριμένα, αυτό συμβαίνει γιατί το σκισμένο εγγραφής και εντοπισμού ισοτιμίας καταγραφής έχουν δομηθεί σε SQL Server 7.0 και νεότερες εκδόσεις. Καθώς οι μονάδες δίσκου θα συνεχίσει να αυξάνεται σε μέγεθος, τις μνήμες cache να μεγαλώσει και μπορούν να εκθέσουν τις μεγαλύτερες ποσότητες δεδομένων κατά την αποτυχία.

Πολλοί προμηθευτές υλικού παρέχουν λύσεις ελεγκτή δίσκου με υποστήριξη μπαταρίας. Αυτών των προσωρινών μνημών cache ελεγκτή μπορείτε να διατηρήσετε τα δεδομένα στη μνήμη cache για μερικές ημέρες και ακόμη και να επιτρέψετε την προσωρινή αποθήκευση υλικού μπορούν να τοποθετηθούν σε έναν δεύτερο υπολογιστή. Όταν η ενέργεια επανέλθει σωστά, τα δεδομένα unwritten πλήρως εκκαθαρίζεται πριν επιτραπεί η περαιτέρω πρόσβαση στα δεδομένα. Πολλά από τα οποία επιτρέπουν ποσοστό της ανάγνωσης σε σχέση με την εγγραφή στη μνήμη cache που θα καθοριστούν για βέλτιστες επιδόσεις. Ορισμένα περιέχουν μνήμη χώρων αποθήκευσης. Στην πραγματικότητα, για ένα πολύ συγκεκριμένο τμήμα της αγοράς, ορισμένοι προμηθευτές υλικού παρέχουν υψηλής ποιότητας δίσκο με υποστήριξη μπαταρίας προσωρινή αποθήκευση ελεγκτή συστήματα με 6 GB της μνήμης cache. Αυτές μπορεί να βελτιώσει σημαντικά την απόδοση της βάσης δεδομένων.

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

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

Ταξινόμηση του τομέα

Μια κοινή τεχνική που χρησιμοποιείται για να αυξήσετε τις επιδόσεις I/O είναι τομέα παραγγελίας. Για να αποφύγετε τη μηχανική κίνηση κεντρικά τις αιτήσεις ανάγνωσης/εγγραφής έχουν ταξινομηθεί, επιτρέποντας μια πιο συνεπή κίνηση της κεφαλής του για να ανακτήσετε ή να αποθηκεύσετε δεδομένα.

Η μνήμη cache μπορεί να διατηρήσει πολλές καταγραφής και δεδομένα εγγραφής αιτήσεις ταυτόχρονα. Το πρωτόκολλο WAL και την εφαρμογή του SQL Server του πρωτοκόλλου WAL απαιτούν την καταγραφή του αρχείου καταγραφής εγγράφει στο σταθερό χώρο αποθήκευσης πριν από την εγγραφή της σελίδας μπορεί να εκδοθεί. Ωστόσο, η χρήση της μνήμης cache μπορεί να επιστρέψει επιτυχία από μια αίτηση εγγραφής καταγραφής χωρίς τα δεδομένα που εγγράφονται στην τρέχουσα μονάδα δίσκου (δηλαδή, εγγράφεται στο σταθερό χώρο αποθήκευσης). Αυτό μπορεί να οδηγήσει σε SQL Server έκδοση αίτησης εγγραφής δεδομένων.

Με τη συμμετοχή του χώρου προσωρινής αποθήκευσης εγγραφής, τα δεδομένα εξακολουθούν να θεωρείται σε μεταβλητό χώρο αποθήκευσης. Ωστόσο, από την κλήση του Win32 API WriteFile, ακριβώς πώς SQL Server βλέπει τη δραστηριότητα, μια επιτυχημένη κωδικός επιστροφής αποκτήθηκε. SQL Server ή οποιαδήποτε διαδικασία που χρησιμοποιεί την κλήσηWriteFileAPI μπορούν να καθορίσουν την onlythat τα δεδομένα σωστά απέκτησε σταθερό χώρο αποθήκευσης.

Για σκοπούς συζήτησης, προϋποθέτουν ότι όλοι οι τομείς της σελίδας δεδομένων ταξινομούνται εγγραφής πριν από τους τομείς των κατάλληλων εγγραφών αρχείου καταγραφής. Αυτό παραβιάζει αμέσως το πρωτόκολλο WAL. Η μνήμη cache κάνει εγγραφή μιας σελίδας δεδομένων, πριν από τις εγγραφές του αρχείου καταγραφής. Εκτός αν η μνήμη cache είναι πλήρως με υποστήριξη μπαταρίας, μια αποτυχία μπορεί να προκαλέσει καταστροφική αποτελέσματα.

Όταν υπολογίζετε το παράγοντες βέλτιστες επιδόσεις για ένα διακομιστή βάσης δεδομένων, υπάρχουν πολλοί παράγοντες που πρέπει να λάβετε υπόψη. Τα σημαντικότερα από αυτά είναι, "μου συστήματος επιτρέπεται έγκυρες δυνατότητες FILE_FLAG_WRITE_THROUGH;"

Σημείωση Οποιαδήποτε cache ότι είστε πλήρως usingmust υποστηρίζει μια λύση με υποστήριξη μπαταρίας. Όλοι οι άλλοι μηχανισμοί προσωρινής αποθήκευσης είναι ύποπτα για δεδομένα καταστροφή και απώλεια δεδομένων. SQL Server καταβάλλει κάθε δυνατή προσπάθεια για να εξασφαλίσετε την WAL, δίνοντας τη δυνατότητα FILE_FLAG_WRITE_THROUGH.

Δοκιμές έδειξαν ότι πολλές ρυθμίσεις παραμέτρων δίσκου ενδέχεται να περιέχει προσωρινής αποθήκευσης εγγραφής χωρίς την κατάλληλη μπαταρίας αντίγραφο. Μονάδες δίσκου SCSI, IDE και EIDE να εκμεταλλευτείτε πλήρως μνημών cache εγγραφής. Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργούν οι μονάδες SSD καθώς και SQL Server, seethe σύμφωνα με το άρθρο CSS SQL Server μηχανικών ιστολογίου:


Σε πολλές διαμορφώσεις, ο μόνος τρόπος για να απενεργοποιηθεί σωστά η προσωρινή αποθήκευση εγγραφής από μια μονάδα δίσκου IDE ή EIDE είναι χρησιμοποιώντας ένα βοηθητικό πρόγραμμα του συγκεκριμένου κατασκευαστή ή με τη χρήση γεφυρών βραχυκύκλωσης που βρίσκεται στην ίδια τη μονάδα δίσκου. Για να βεβαιωθείτε ότι η εγγραφή στη μνήμη cache είναι απενεργοποιημένη για την ίδια τη μονάδα δίσκου, επικοινωνήστε με τον κατασκευαστή της μονάδας.

Οι μονάδες SCSI έχουν επίσης μνημών cache εγγραφής. Ωστόσο, αυτές οι μνήμες cache συχνά μπορεί να απενεργοποιηθεί από το λειτουργικό σύστημα. Εάν υπάρχουν οποιαδήποτε ερώτηση, επικοινωνήστε με τον κατασκευαστή της μονάδας για κατάλληλη βοηθητικά προγράμματα.

Εγγραφή στην Cache στοίβαξης

Εγγραφή στοίβαξης Cache είναι παρόμοια με την ταξινόμηση του τομέα. Τον ακόλουθο ορισμό προέρχεται απευθείας από μια αρχικά IDE μονάδα τοποθεσία Web του κατασκευαστή:
Συνήθως, αυτή η λειτουργία είναι ενεργή. Γράψτε τη λειτουργία προσωρινής αποθήκευσης που δέχεται ο κεντρικός υπολογιστής εγγραφή δεδομένων στο buffer μέχρι το buffer είναι πλήρη ή να ολοκληρώνεται η μεταφορά του κεντρικού υπολογιστή.

Μια εργασία εγγραφής δίσκου αρχίζει να αποθηκεύσετε τα δεδομένα του κεντρικού υπολογιστή στο δίσκο. Εντολές εγγραφής κεντρικός υπολογιστής συνεχίζει να είναι αποδεκτή και μεταφορά δεδομένων στο buffer μέχρι τη στοίβα εντολή εγγραφής είναι πλήρης είτε το buffer δεδομένων είναι πλήρης. Η μονάδα δίσκου ενδέχεται να Αναδιάταξη εντολών εγγραφής για να βελτιστοποιήσετε την απόδοση της μονάδας δίσκου.

Αυτόματη εγγραφή απαιτείται εκ νέου ανάθεση (AWR)

Μια άλλη κοινή τεχνική που χρησιμοποιείται για την προστασία των δεδομένων είναι να εντοπίζει κατεστραμμένους τομείς κατά το χειρισμό δεδομένων. Η παρακάτω επεξήγηση προέρχεται από κορυφαίους IDE μονάδα τοποθεσία Web ενός κατασκευαστή:
Αυτή η δυνατότητα είναι μέρος της μνήμης cache εγγραφής και μειώνει τον κίνδυνο απώλειας δεδομένων κατά τις λειτουργίες εγγραφής αναστολής. Εάν παρουσιαστεί σφάλμα στο δίσκο κατά τη διαδικασία εγγραφής δίσκου, τις στάσεις εργασίας του δίσκου και του ύποπτη τομέα μετατρέπεται σε σύνολο εναλλακτικών τομέων που βρίσκονται στο τέλος της μονάδας δίσκου. Μετά την εκ νέου ανάθεση, η εργασία εγγραφής δίσκου θα συνεχίσει μέχρι να ολοκληρωθεί.
Αυτό μπορεί να είναι μια πολύ ισχυρή δυνατότητα εάν παρέχεται εφεδρική μπαταρία για τη μνήμη cache. Αυτό παρέχει καταλλήλως κατά την επανεκκίνηση. Είναι προτιμότερο να εντοπίσει τα σφάλματα στο δίσκο, αλλά η ασφάλεια των δεδομένων του πρωτοκόλλου WAL πάλι θα χρειαστεί να γίνεται σε πραγματικό χρόνο και δεν με τρόπο που αναβλήθηκαν. Εντός των παραμέτρων WAL, την τεχνική του AWR δεν είναι δυνατό να αντιπροσωπεύουν μια κατάσταση κατά την οποία μια εγγραφή στο αρχείο καταγραφής αποτύχει λόγω σφάλματος τομέα αλλά ο δίσκος είναι πλήρης. Ο μηχανισμός βάσης δεδομένων πρέπει να αμέσως γνωρίζετε σχετικά με την αποτυχία έτσι τη συναλλαγή να ματαιωθεί σωστά, ο διαχειριστής μπορεί να ειδοποιείστε και διορθώστε τα βήματα για την ασφάλιση των δεδομένων και να διορθώσετε αυτήν την κατάσταση αποτυχίας μέσου.

Ασφάλεια δεδομένων

Υπάρχουν διάφορες προφυλάξεις που ένας διαχειριστής βάσης δεδομένων θα πρέπει να ακολουθήσετε για να εξασφαλίζουν την ασφάλεια των δεδομένων.
  • Είναι πάντα καλή ιδέα να βεβαιωθείτε ότι η στρατηγική αντιγράφων ασφαλείας είναι επαρκή για την ανάκτηση από μια καταστροφική αποτυχία. Αποθήκευση χώρο εκτός των γραφείων και άλλες προφυλάξεις είναι κατάλληλα.
  • Ελέγξτε τη λειτουργία επαναφοράς βάσης δεδομένων σε ένα δευτερεύοντα ή δοκιμαστική βάση δεδομένων σε συχνή βάση.
  • Βεβαιωθείτε ότι οι συσκευές προσωρινής αποθήκευσης μπορεί να χειριστεί όλες τις περιπτώσεις αποτυχίας (ρεύματος, κατεστραμμένους τομείς, εσφαλμένη μονάδες, σύστημα διακοπή ρεύματος, κλειδώματα, συλλέκτης ενέργειας και ούτω καθεξής).
  • Βεβαιωθείτε ότι η συσκευή προσωρινής αποθήκευσης:
    • Έχει ενσωματώσει την εφεδρική μπαταρία
    • Να εγγράφει επανέκδοσης στο power-up
    • Να απενεργοποιηθεί πλήρως, εάν είναι απαραίτητο
    • Χειρίζεται το πρόγραμμα εκ νέου αντιστοίχησης κατεστραμμένου τομέα σε πραγματικό χρόνο
  • Ενεργοποίηση σχισμένης σελίδας. (Έχει ελάχιστη επίδραση στις επιδόσεις.)
  • Ρύθμιση στις μονάδες δίσκου RAID, προβλέποντας μια θερμή μετάθεσης του μια εσφαλμένη μονάδα δίσκου, αν είναι δυνατόν.
  • Χρησιμοποιήστε νεότερη ελεγκτές προσωρινής αποθήκευσης που σας επιτρέπουν να προσθέσετε περισσότερο χώρο στο δίσκο χωρίς να γίνει επανεκκίνηση του λειτουργικού Συστήματος. Αυτό μπορεί να είναι μια ιδανική λύση.

Δοκιμή μονάδων

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

Σημείωση Βεβαιωθείτε ότι μια εναλλακτική λύση στην προσωρινή αποθήκευση του μηχανισμού μπορεί να χειριστεί σωστά πολλούς τύπους της αποτυχίας.

Microsoft πραγματοποίησε έλεγχο σε πολλές μονάδες δίσκου SCSI και IDE, χρησιμοποιώντας το βοηθητικό πρόγραμμα SQLIOSim . Αυτό το βοηθητικό πρόγραμμα προσομοιώνει δραστηριότητα βαρύ ασύγχρονη ανάγνωση/εγγραφή σε συσκευή καταγραφής και συσκευή προσομοίωση δεδομένων. Δοκιμή επιδόσεων στατιστικές δείχνουν οι λειτουργίες μέσο εγγραφής ανά δευτερόλεπτο μεταξύ 50 και 70 για μια μονάδα δίσκου με απενεργοποιημένη προσωρινή και μια περιοχή RPM μεταξύ 5,200 και 7,200.

Για περισσότερες πληροφορίες σχετικά με το βοηθητικό πρόγραμμα SQLIOSim , ανατρέξτε στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:
231619 Πώς μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα SQLIOSim για να προσομοιώσουν τη δραστηριότητα του SQL Server σε ένα υποσύστημα δίσκου
Πολλοί κατασκευαστές υπολογιστών παραγωγής των μονάδων δίσκου, με την απενεργοποίηση της μνήμης cache εγγραφής. Ωστόσο, η δοκιμή εμφανίζει ότι αυτό να είναι πάντα η υπόθεση. Κατά συνέπεια, να δοκιμάζετε πάντα πλήρως.

Συσκευές δεδομένων

Σε περιπτώσεις που δεν μη συνδεδεμένοι, SQL Server θα απαιτήσει μόνο τις εγγραφές του αρχείου καταγραφής για να εκκαθαριστούν. Κατά τη διενέργεια πράξεων μη συνδεδεμένοι, οι σελίδες δεδομένων πρέπει να εκκαθαριστούν επίσης στο σταθερό χώρο αποθήκευσης; Δεν υπάρχουν εγγραφές καταγραφής μεμονωμένα για να δημιουργήσετε ξανά τις ενέργειες στην περίπτωση αποτυχίας.

Οι σελίδες δεδομένων μπορούν να παραμείνουν στη μνήμη cache μέχρι τη διαδικασία LazyWriter ή σημείων ελέγχου Εκκαθαρίσεις τους στο σταθερό χώρο αποθήκευσης. Χρησιμοποιώντας το πρωτόκολλο WAL για να βεβαιωθείτε ότι οι εγγραφές καταγραφής αποθηκεύονται σωστά εξασφαλίζει ότι η αποκατάσταση μπορεί να ανακτήσει μια σελίδα δεδομένων σε μια γνωστή κατάσταση.

Αυτό δεν σημαίνει ότι είναι σκόπιμο να τοποθετήσετε τα αρχεία δεδομένων σε μια μονάδα δίσκου στο cache. Όταν ο SQL Server εκκαθαρίσεων τις σελίδες δεδομένων στο σταθερό χώρο αποθήκευσης, τις εγγραφές του αρχείου καταγραφής μπορεί να περικοπεί από το αρχείο καταγραφής συναλλαγών. Εάν οι σελίδες δεδομένων αποθηκεύονται σε πτητική μνήμη cache, είναι δυνατή η περικοπή των εγγραφών του αρχείου καταγραφής που θα χρησιμοποιηθεί για την ανάκτηση μιας σελίδας σε περίπτωση αποτυχίας. Βεβαιωθείτε ότι οι συσκευές τόσο των δεδομένων όσο και το αρχείο καταγραφής να χωράει σωστά σταθερό χώρο αποθήκευσης.

Η αύξηση των επιδόσεων

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

Πολλές από τις μονάδες δίσκου IDE ελεγχθεί από τη Microsoft εκτελούνται με ρυθμό RPM 5,200 και το SCSI, μονάδες δίσκου σε ένα RPM των 7,200. Όταν απενεργοποιείτε την εγγραφή προσωρινή αποθήκευση στη μονάδα δίσκου IDE τη μηχανική απόδοση μπορεί να γίνει ένα συντελεστή.

Υπάρχει μια πολύ σαφή περιοχή για να αντιμετωπίσει τη διαφορά απόδοσης: "Διεύθυνση ο ρυθμός κίνησης".

Υπάρχουν πολλές ηλεκτρονική συναλλαγή επεξεργασίας (OLTP) συστήματα που απαιτούν ρυθμό πράξης. Για τα συστήματα αυτά, προτείνεται η χρήση ενός ελεγκτή προσωρινής αποθήκευσης που να υποστηρίζει μια εγγραφή στη μνήμη cache σωστά και παρέχουν την καλύτερη απόδοση εξασφαλίζοντας την ακεραιότητα των δεδομένων.

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

Δοκιμή αποδεικνύει ότι η εγγραφή υψηλή δραστηριότητα των buffer που είναι μικρότερη από 512 KB ή μεγαλύτερο από 2 MB, μπορεί να προκαλέσει χαμηλές επιδόσεις.
Εξετάστε το ακόλουθο παράδειγμα:
CREATE TABLE tblTest ( iID int IDENTITY(1,1), strData char(10))GOSET NOCOUNT ONGOINSERT INTO tblTest VALUES ('Test')WHILE @@IDENTITY < 10000   INSERT INTO tblTest VALUES ('Test')				
Τα παρακάτω είναι δείγμα αποτελεσμάτων δοκιμών για τον SQL Server:
SCSI(7200 rpm) 84 δευτερόλεπτα
SCSI(7200 rpm) 15 δευτερόλεπτα (προσωρινή αποθήκευση ελεγκτή)

IDE(5200 rpm) 14 δευτερόλεπτα (ενεργοποιημένη cache μονάδας δίσκου)
IDE(5200 rpm) 160 δευτερόλεπτα

Αναδίπλωση ολόκληρη τη σειρά των λειτουργιών ΕΙΣΑΓΩΓΉΣ σε μία συναλλαγή εκτελείται σε τέσσερα δευτερόλεπτα περίπου, σε όλες τις διαμορφώσεις.

Ο λόγος είναι ο αριθμός εκκαθαρίσεων καταγραφής που απαιτούνται. Χωρίς τη συναλλαγή, κάθε εισαγωγή είναι μια συναλλαγή στο και του εαυτού του και κάθε φορά τις εγγραφές του αρχείου καταγραφής για τη συναλλαγή πρέπει να εκκαθαριστούν. Κάθε εκκαθάριση είναι 512 byte σε μέγεθος, το οποίο απαιτεί σημαντική μηχανική μονάδα παρέμβασης.

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

Προειδοποίηση Συνιστάται να μην αυξήσετε το εύρος της συναλλαγής σας. Μακροχρόνιες συναλλαγές μπορεί να οδηγήσει σε υπερβολική και ανεπιθύμητες αποκλεισμού, καθώς και αυξημένη επιβάρυνση. Χρησιμοποιήστε τους μετρητές επιδόσεων του SQL Server : Βάσεις δεδομένων SQL Server , για να προβάλετε τους μετρητές με βάση το αρχείο καταγραφής συναλλαγών. Συγκεκριμένα, byte καταγραφής Flushed/δευτερόλεπτο υποδεικνύει πολλές μικρές συναλλαγές που οδηγούν σε υψηλή μηχανική δίσκο δραστηριότητας.

Κοιτάξτε τις δηλώσεις που σχετίζεται με το πλήρες αρχείο καταγραφής και να καθορίσετε εάν μπορεί να μειωθεί ο αριθμός εκκαθαρίσεων καταγραφής. Στο προηγούμενο παράδειγμα, υλοποιήθηκε μία συναλλαγή. Ωστόσο, σε πολλές περιπτώσεις, αυτό μπορεί να οδηγήσει σε ανεπιθύμητη συμπεριφορά κλειδώματος. Εξετάστε το σχεδιασμό της συναλλαγής. Μπορείτε να χρησιμοποιήσετε κώδικα παρόμοιο με το ακόλουθο, να εκτελέσετε δέσμες για να μειώσετε τη δραστηριότητα εκκαθάρισης αρχείου καταγραφής συχνές και μικρές:
BEGIN TRANGOINSERT INTO tblTest VALUES ('Test')WHILE @@IDENTITY < 50BEGIN   INSERT INTO tblTest VALUES ('Test')   if(0 = cast(@@IDENTITY as int) % 10)   BEGIN      PRINT 'Commit tran batch'      COMMIT TRAN      BEGIN TRAN   ENDENDGOCOMMIT TRANGO				
SQL Server απαιτεί ότι υποστηρίζει συστήματα "εγγυημένη παράδοση σε σταθερό μέσο," όπως περιγράφεται στην ενότητα του Απαιτήσεις αναθεώρηση του προγράμματος SQL Server εισόδου/εξόδου αξιοπιστία Κάντε λήψη του εγγράφου. Για περισσότερες πληροφορίες σχετικά με τις απαιτήσεις εισόδου και εξόδου για το μηχανισμό διαχείρισης βάσης δεδομένων SQL Server, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να μεταβείτε στο άρθρο της Γνωσιακής Βάσης της Microsoft:
967576 Απαιτήσεις εισόδου/εξόδου μηχανισμό βάσης δεδομένων Microsoft SQL Server

Προειδοποίηση: Αυτό το άρθρο έχει μεταφραστεί αυτόματα

Ιδιότητες

Αναγνωριστικό άρθρου: 230785 - Τελευταία αναθεώρηση: 05/15/2015 22:11:00 - Αναθεώρηση: 5.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Standard

  • kbhowto kbinfo kbmt KB230785 KbMtel
Σχόλια