
Μήπως τυχόν ξέρει μια καλή εμπειρικός κανόνας για το κατάλληλο μέγεθος αρχείου σελιδοποίησης για ένα διακομιστή που εκτελεί τον SQL Server Windows 2003;

 
Κατάλληλα τα Windows O / S μέγεθος αρχείου σελιδοποίησης για τον SQL Server
===========================================================================



Ανεξάρτητα από το μέγεθος της μνήμης RAM, θα πρέπει ακόμα ένα αρχείο σελιδοποίησης είναι τουλάχιστον 1,5 φορές το ποσό της φυσικής μνήμης RAM. Αυτό ισχύει ακόμα και αν έχετε ένα μηχάνημα RAM 1 TB, θα χρειαστεί 1,5 TB αρχείο σελιδοποίησης στο δίσκο (ακούγεται τρελό, αλλά είναι αλήθεια).


Όταν μια διεργασία ρωτά μνήμη MEM\_COMMIT μέσω VirtualAlloc / VirtualAllocEx, το μέγεθος ζήτησε πρέπει να διατηρούνται στο αρχείο σελιδοποίησης. Αυτό ήταν αλήθεια το πρώτο σύστημα Win NT, και εξακολουθεί να ισχύει και σήμερα δείτε [Διαχείριση εικονικής μνήμης σε Win32](http://msdn.microsoft.com/en-us/library/ms810627.aspx) :



> 
> Όταν μνήμης δεσμεύεται, οι φυσικές σελίδες της μνήμης που διατίθεται **και χώρος αυτός προορίζεται σε ένα αρχείο σελιδοποίησης** .
> 
> 
> 


Γυμνά κάποιες ακραίες περιπτώσεις περίεργο, SQL Server θα ζητήσει πάντα για τις σελίδες MEM\_COMMIT. Και με δεδομένο το γεγονός ότι η SQL χρησιμοποιεί ένα [Δυναμική Διαχείριση Μνήμης](http://msdn.microsoft.com/en-us/library/ms178145.aspx) πολιτική που διατηρεί εκ των προτέρων όσο πισίνα ρυθμιστικό δυνατόν (αποθεματικά και *δεσμεύεται* από την άποψη της VAS), ο SQL Server θα ζητήσει κατά την εκκίνηση ένα τεράστιο κράτηση του χώρου στο αρχείο σελιδοποίησης. Αν το αρχείο σελιδοποίησης δεν είναι σωστά μεγέθους λάθη 801/802 θα αρχίσουν να εμφανίζονται στο αρχείο ERRORLOG και τις λειτουργίες του SQL του.


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

 

Με όλο το σεβασμό προς τον Ρέμο (τον οποίο σέβομαι πολύ), εγώ διαφωνώ. Εάν το αρχείο της σελίδας σας είναι αρκετά μεγάλη για να υποστηρίξει ένα πλήρες χωματερή, θα εκτελέσει μια πλήρη απόρριψη κάθε φορά. Αν έχετε ένα πολύ μεγάλο ποσό της μνήμης RAM, αυτό μπορεί να προκαλέσει μια μικρή παρένθεση για να γίνει μια μεγάλη διακοπή.


Δεν θέλετε ο διακομιστής σας να πρέπει να γράψετε από 1 TB μνήμης RAM στο δίσκο, αν υπάρχει μια one-time παροδικό πρόβλημα. Αν υπάρχει ένα επαναλαμβανόμενο θέμα, μπορείτε να αυξήσετε το αρχείο της σελίδας για να συλλάβει ένα πλήρες χωματερή. Θα περιμένω να το κάνουμε αυτό μέχρι να έχουν isntructed από PSS (ή κάποιος άλλος τα προσόντα για να αναλύσει ένα πλήρες χωματερή) θα ζητήσει να συλλάβει ένα πλήρες χωματερή. Ένα εξαιρετικά μικρό ποσοστό των DBAs ξέρουν πώς να αναλύουν ένα πλήρες χωματερή. Ένα μίνι-χωματερή είναι επαρκή για την αντιμετώπιση προβλημάτων τα περισσότερα θέματα που ξεπροβάλλουν ούτως ή άλλως.


Επιπλέον, εάν ο διακομιστής σας έχει ρυθμιστεί ώστε να επιτρέπει 1 TB πλήρη χωματερή και εμφανίζεται ένα επαναλαμβανόμενο θέμα, πόσο ελεύθερο χώρο στο δίσκο θα συνιστούσα έχοντας στο χέρι; Θα μπορούσατε να γεμίσουν ένα ολόκληρο SAN σε ένα μόνο Σαββατοκύριακο.


Μια σελίδα αρχείο 1,5 * RAM ήταν ο κανόνας πίσω στις ημέρες όταν είχαν την τύχη να έχουν μια SQL Server με 3 ή 4 GB μνήμης RAM. Αυτό δεν συμβαίνει πια. Αφήνω το αρχείο της σελίδας σε τα Windows προεπιλεγμένο μέγεθος και τις ρυθμίσεις σε όλους τους διακομιστές παραγωγής (εκτός από ένα διακομιστή ΑΑΠ που βιώνει πίεση μνήμης).


Και μόνο για διευκρίνιση, έχω δουλέψει με τους διακομιστές που κυμαίνονται από 2 GB μνήμης RAM έως 2 TB μνήμης RAM. Μετά από περισσότερα από 11 χρόνια, είχα μόνο, ώστε να αυξηθεί το αρχείο σελιδοποίησης για να συλλάβει ένα πλήρες χωματερή μία φορά.

 

Σύμφωνα με τη Microsoft, «καθώς η ποσότητα της μνήμης RAM σε έναν υπολογιστή αυξάνεται, η ανάγκη για ένα αρχείο σελίδας μειώνεται.» Το άρθρο στη συνέχεια να περιγράψει πώς να χρησιμοποιήσετε καταγραφής επιδόσεων για να καθορίσει πόσο του αρχείου σελίδας **στην πραγματικότητα** χρησιμοποιείται. Δοκιμάστε να ρυθμίσετε το αρχείο σας σελίδα στη μνήμη του συστήματος 1,5Χ για ένα ξεκίνημα, στη συνέχεια, κάντε τη συνιστώμενη παρακολούθηση και στις αναγκαίες προσαρμογές από εκεί.


[Πώς να καθορίσει το κατάλληλο μέγεθος αρχείου σελίδας για τις εκδόσεις 64-bit των Windows](http://support.microsoft.com/kb/889654)

 

Είχαμε πρόσφατα έχουν κάποια προβλήματα απόδοσης με ένα από τα SQL Server μας που δεν ήμασταν σε θέση να εντελώς στενό προς τα κάτω, και να χρησιμοποιηθεί στην πραγματικότητα ένα από τα εισιτήρια μας για την υποστήριξη της Microsoft να τους βοηθήσουμε αντιμετώπιση προβλημάτων. Το βέλτιστο μέγεθος αρχείου σελιδοποίησης για χρήση με τον SQL Server ήρθε, και τη σύσταση της Microsoft είναι ότι είναι **1 1/2 φορές το μέγεθος της μνήμης RAM** .

 

Όσο μεγαλύτερη είναι η καλύτερη μέχρι το μέγεθος του συνόλου εργασίας της εφαρμογής, όπου θα αρχίσει να μπει σε φθίνουσες αποδόσεις. Μπορείτε να προσπαθήσετε να βρείτε αυτό με την αργή αύξηση ή μείωση του μεγέθους μέχρι να δείτε μια σημαντική αλλαγή στα ποσοστά χτύπημα της κρυφής μνήμης. Ωστόσο, εάν η μνήμη cache χτυπήσει ποσοστό είναι πάνω από 90% ή έτσι είστε πιθανώς OK. Σε γενικές γραμμές θα πρέπει να κρατήσει ένα μάτι σε αυτό σε ένα σύστημα παραγωγής για να βεβαιωθείτε ότι δεν έχει ξεπεράσει την κατανομή RAM του.

 

Μετά από πολλή έρευνα Dedicated Servers SQL μας τρέχει Enterprise x64 στα Windows 2003 Enterprise x64 δεν έχουν το αρχείο της σελίδας.


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


Το άρθρο MS αναφορά δεν πληροί τις προϋποθέσεις ώστε η συμβουλή είναι για το λειτουργικό σύστημα τρέχει out-of-the-box υπηρεσίες όπως η κοινή χρήση αρχείων.


Έχοντας ένα αρχείο σελίδα επιβαρύνει μόνο το δίσκο I / O, επειδή τα Windows προσπαθεί να βοηθήσει, όταν μόνο το SQL λειτουργικό σύστημα μπορεί να κάνει τη δουλειά.

 

Αν ψάχνετε για υψηλή απόδοση, θα έχετε την ευκαιρία να θέλουν να αποφύγουν τηλεειδοποίησης εντελώς, έτσι ώστε το μέγεθος του αρχείου της σελίδας γίνεται λιγότερο σημαντική. Επενδύστε σε όσο RAM είναι εφικτό για το διακομιστή DB.

 

Στην περίπτωση αυτή, η κανονική σύσταση 1,5 φορές συνολική φυσική μνήμη RAM δεν είναι η καλύτερη. Αυτή η πολύ γενική σύσταση προβλέπεται με την παραδοχή ότι το σύνολο της μνήμης που χρησιμοποιείται από «κανονικές» διαδικασίες, οι οποίες μπορεί να έχουν γενικά λιγότερο χρησιμοποιείται σελίδες τους μετακόμισε στο δίσκο χωρίς να δημιουργούνται τεράστια προβλήματα απόδοσης για τη διαδικασία υποβολής αιτήσεων η μνήμη ανήκει.


Για διακομιστές που εκτελούν τον SQL Server (συνήθως με πολύ μεγάλες ποσότητες RAM), το μεγαλύτερο μέρος της φυσικής μνήμης RAM έχει δεσμευτεί για τη διαδικασία SQL Server και θα πρέπει να είναι (αν έχει ρυθμιστεί σωστά) κλειδωμένα σε φυσική μνήμη, αποτρέποντας την σελιδοποίηση στο αρχείο σελιδοποίησης . SQL Server διαχειρίζεται τη δική του μνήμη πολύ προσεκτικά με την απόδοση στο μυαλό, χρησιμοποιώντας ένα μεγάλο μέρος της μνήμης RAM που διατίθενται για τη διαδικασία της ως κρυφή μνήμη δεδομένων για τη μείωση της δίσκο I / O. Δεν έχει νόημα να σελίδας αυτές τις σελίδες μνήμης cache δεδομένων για το αρχείο σελιδοποίησης, καθώς ο μοναδικός σκοπός της ύπαρξης αυτών των δεδομένων στη μνήμη RAM στην πρώτη θέση είναι η μείωση δίσκο I / O. (Σημειώστε ότι το λειτουργικό σύστημα Windows χρησιμοποιεί επίσης διαθέσιμη μνήμη RAM ομοίως ως μνήμη cache του δίσκου για να επιταχύνει τη λειτουργία του συστήματος.) Από το SQL Server διαχειρίζεται ήδη το δικό της χώρο μνήμης, αυτός ο χώρος μνήμης δεν θα πρέπει να θεωρούνται «pageable», και δεν περιλαμβάνεται σε έναν υπολογισμό για το αρχείο σελιδοποίησης Μέγεθος.


Σε σχέση με MEM\_COMMIT αναφέρει ο Remus, η ορολογία προκαλεί σύγχυση, διότι στην εικονική ιδίωμα μνήμη, «διατηρούνται» δεν αναφέρεται σε πραγματική κατανομή, αλλά η παρεμπόδιση της χρήσης του χώρου διευθύνσεων (όχι φυσικό χώρο) από μια άλλη διαδικασία. Διαθέσιμη μνήμη για να «δεσμευτεί» είναι ουσιαστικά ίση με το άθροισμα της φυσικής μνήμης RAM και αρχείο σελιδοποίησης μεγέθους, και να κάνει μια MEM\_COMMIT μόνο ελαττώνει το ποσό που διατίθεται στο δεσμευτεί πισίνα. Αυτό σημαίνει *να μην* διαθέσει μια σελίδα που να ταιριάζουν στο αρχείο σελιδοποίησης εκείνη τη στιγμή. Όταν ένας αφοσιωμένος σελίδα μνήμης είναι στην πραγματικότητα γραμμένο σε, δηλαδή όταν το σύστημα εικονικής μνήμης θα διαθέσει μια φυσική σελίδα μνήμης και πιθανώς χτύπημα άλλη σελίδα μνήμης από τη φυσική μνήμη RAM για το αρχείο σελιδοποίησης. Δείτε MSDN για [τη λειτουργία VirtualAlloc](http://msdn.microsoft.com/en-us/library/aa366887.aspx) αναφοράς.


Το λειτουργικό σύστημα Windows παρακολουθεί πιέσεις μνήμης μεταξύ των διαδικασιών αίτησης και το δικό του μηχανισμό προσωρινής μνήμης δίσκου της και αποφασίζει πότε πρέπει χτύπημα μη κλειδωμένες σελίδες μνήμης από τη φυσική για το αρχείο σελιδοποίησης. Η κατανόησή μου είναι ότι έχει ένα αρχείο σελιδοποίησης που είναι πάρα πολύ μεγάλο σε σχέση με την πραγματική μη κλειδωμένο χώρο μνήμης μπορεί να οδηγήσει στα Windows overzealously τηλεειδοποίησης από τη μνήμη εφαρμογής για το αρχείο σελιδοποίησης, με αποτέλεσμα σε αυτές τις εφαρμογές που πλήττονται από τις συνέπειες της σελίδας αστοχίες (αργή απόδοση).


Εφ 'όσον το διακομιστή δεν εκτελείται άλλες διεργασίες μνήμης πεινασμένοι, μέγεθος αρχείου σελιδοποίησης των 4GB θα πρέπει να είναι αρκετό. Αν έχετε ρυθμίσει τον SQL Server για να επιτρέψει σελίδες ασφάλισης στη μνήμη, θα πρέπει επίσης να εξετάσει τη μέγιστη ρύθμιση μνήμη του SQL Server, έτσι ώστε να αφήνει κάποια φυσική μνήμη RAM που διαθέτει το λειτουργικό σύστημα για τον εαυτό της και άλλες διαδικασίες.


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

 