Empfohlene Größe der Auslagerungsdatei für SQL 2008R2 unter Windows 2008R2


25

Dieser Microsoft-Artikel - Ermitteln der geeigneten Auslagerungsdateigröße für 64-Bit-Versionen von Windows Server 2008 und Windows 2008 R2 enthält Anleitungen zum Berechnen der Auslagerungsdateigröße für 64-Bit-Windows 2008 und Windows 2008R2. Dies funktioniert ohne Zweifel gut für Allzweck-Server. Ich frage mich, was die Anleitung für SQL Server 2008R2 unter Windows 2008 / R2 64-Bit ist.

Ich nehme an, wir möchten, dass so wenig Speicherdaten wie möglich in die Auslagerungsdatei gelangen. Andernfalls könnte SQL zweimal auf die Festplatte zugreifen, um Daten zu erhalten. Lässt SQL Server überhaupt zu, dass Daten im Speicher auf die Auslagerungsdatei zugreifen? Ich habe in der SQL Server 2008 R2-Onlinedokumentation nach Hinweisen gesucht, aber noch keinen Hinweis auf die Verwendung von Auslagerungsdateien gefunden.

Hier ist ein mögliches Verwendungsszenario: Ist bei einem physischen Server mit 64 GB RAM eine Auslagerungsdatei für die gesamten 64 GB RAM erforderlich? Sollen wir es auf 96 GB Auslagerungsdatei ausrüsten? Das scheint für eine einzelne Datei etwas übertrieben. Ich weiß, dass es die übliche Weisheit war, dass Windows die Auslagerungsdatei mit dem Speicher koppelt, um das Auslagern von Apps im Arbeitsspeicher zu vereinfachen. Aber stimmt das? Beeinträchtigt eine Auslagerungsdatei mit weniger als 64 GB die Leistung?

Antworten:


15

Für SQL Server, der normalerweise nur physischen Speicher verwendet, gibt es keine speziellen Einstellungen

Tun Sie einfach, was MS für Windows sagt, und das war's

Oh, und kaufe trotzdem mehr RAM, während wir das Thema sind ... ;-)


6

Schau rein lock pages in memory. Auf diese Weise können Sie festlegen, dass Ihr SQL-Dienstkonto den verfügbaren Arbeitsspeicher verwendet, anstatt auf die Festplatte zu pagen. Um mehr über Sperrseiten im Speicher zu erfahren, überprüfen Sie diesen Link . Es folgt ein Ausschnitt:

Die Option "Seiten im Speicher sperren" der Windows-Richtlinie ist standardmäßig deaktiviert. Dieses Privileg muss aktiviert sein, um Address Windowing Extensions (AWE) konfigurieren zu können. Diese Richtlinie legt fest, welche Konten einen Prozess verwenden können, um Daten im physischen Speicher zu halten, und verhindert, dass das System die Daten in den virtuellen Speicher auf der Festplatte paginiert. Auf 32-Bit-Betriebssystemen kann das Festlegen dieser Berechtigung, wenn AWE nicht verwendet wird, die Systemleistung erheblich beeinträchtigen. Das Sperren von Seiten im Speicher ist unter 64-Bit-Betriebssystemen nicht erforderlich.

Bitte testen Sie diese Funktion, bevor Sie sie auf Ihren Systemen verwenden.


4
"Seiten im Speicher sperren" könnte möglicherweise besser als Schutzmaßnahme beschrieben werden, um zu verhindern, dass der SQL-Speicher vom Betriebssystem ausgelagert wird. support.microsoft.com/kb/918483
Mark Storey-Smith

4

Ja, für 64 GB RAM benötigen Sie mindestens 64 GB Auslagerungsdatei (96 GB empfohlen). Nicht wegen des möglichen Austauschs, sondern wegen des Designs des Windows-Speichermanagers. Ich habe bereits in der System-Auslagerungsdatei auf Computern mit großem RAM über dieses Problem geschrieben :

Wenn ein Prozess MEM_COMMITüber VirtualAlloc/ nach Speicher fragt VirtualAllocEx, muss die angeforderte Größe in der Auslagerungsdatei reserviert werden. Dies galt für das erste Win NT-System und gilt auch heute noch, siehe Verwalten des virtuellen Speichers in Win32 :

Beim Festschreiben des Speichers werden physische Speicherseiten zugewiesen und Speicherplatz in einer Auslagerungsdatei reserviert.

Die Alternative wäre so etwas wie der oom_killer .

Befolgen Sie also die Empfehlung, manchmal sind die Dinge etwas komplexer als sie aussehen. Und ich habe noch nicht einmal die Komplikationen, die AWE mit sich gebracht hat, und das Privileg, Seiten zu sperren, angerührt ...


Sehr interessant ... Wie funktioniert es dann, wenn Sie eine Auslagerungsdatei kleiner als den Arbeitsspeicher in der Maschine einstellen? Wenn wir tatsächlich den Speicherplatz in der Auslagerungsdatei für jede Speicherzuordnung reservieren müssen, können wir nicht mehr als den Speicher der Auslagerungsdatei verwenden? Ich bin mir nicht sicher, wie das in der Praxis funktioniert.
Shlomoid

1
Genau so funktioniert es in der Praxis. Eine festgeschriebene VA-Region muss durch eine echte Swap-Reservierung abgesichert sein. Eine reservierte VA-Region muss nicht sein, aber SQL Server fordert praktisch nie nicht festgeschriebene Reservierungen an.
Remus Rusanu

2
Das halte ich nicht für richtig. Aus verschiedenen Quellen wie den Windows Internals-Büchern geht hervor, dass der festgeschriebene virtuelle Adressraum durch eine physische Datei (Auslagerungsdatei oder RAM) gesichert werden muss . Wenn Sie also versuchen, virtuellen Speicher zu aktivieren> ([Physischer Speicher, den Windows sieht] + [Größe der Auslagerungsdatei]), wird die berüchtigte Fehlermeldung "Ihr System hat nur noch wenig virtuellen Speicher" angezeigt. Mark Russinovich spricht darüber im Abschnitt mit der Überschrift „committed Gedächtnisses“ hier .
James L

5
Ich denke, Sie können sich selbst davon überzeugen, dass festgeschriebene VA-Regionen nicht durch Auslagerungsreservierungen gesichert werden müssen, indem Sie einfach ein System ohne Auslagerungsdatei booten und bestätigen, dass Windows gestartet wird. Daher müssen mehr als 0 Byte festgeschriebene VAS vorhanden sein.
James L

Dieser Beitrag ist falsch - es ist durchaus möglich, ohne Auslagerungsdatei zu arbeiten, wenn Sie über mehr Speicher verfügen, als Sie maximal für das Festschreiben benötigen. Es bedeutet jedoch, dass Sie keine Absturzabbilder schreiben können.
Steve365
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.