Serverarbeitsspeicher-Optionen

Mit den beiden Arbeitsspeicheroptionen für den Server, min server memory und max server memory, können Sie den von einer Instanz von Microsoft SQL Server verwendeten Umfang des Arbeitsspeichers (in MB) im Pufferpool neu konfigurieren.

In der Standardkonfiguration werden Arbeitsspeicheranforderungen in SQL Server basierend auf den verfügbaren Systemressourcen dynamisch geändert. Die Standardeinstellung für min server memory ist 0, und für max server memory ist die Standardeinstellung 2147483647. Die minimale Speichergröße, die Sie für max server memory angeben können, beträgt 16 MB.

HinweisHinweis

Wenn die Option max server memory auf den Minimalwert festgelegt wird, kann das die Leistung von SQL Server erheblich einschränken und sogar das Starten von SQL Server verhindern. Wenn sich SQL Server nach dem Ändern dieser Option nicht starten lässt, müssen Sie es mithilfe der Startoption –f starten und die Option max server memory auf ihren vorherigen Wert zurücksetzen. Weitere Informationen finden Sie unter Verwenden der Startoptionen für den SQL Server-Dienst.

Wenn Arbeitsspeicher von SQL Server dynamisch verwendet wird, wird der im System verfügbare physische Arbeitsspeicher in regelmäßigen Abständen abgefragt. SQL Server ermittelt anhand der Arbeitsspeicherbenachrichtigungs-API QueryMemoryResourceNotification, wann der Pufferpool Arbeitsspeicher belegen oder freigeben kann.

Grundsätzlich empfiehlt es sich, in SQL Server eine dynamische Verwendung des Arbeitsspeichers zuzulassen. Sie können die Speicheroptionen jedoch auch manuell festlegen und den Umfang des für SQL Server zugreifbaren Arbeitsspeichers einschränken. Bevor Sie den Umfang des Arbeitsspeichers für SQL Server festlegen, sollten Sie die geeignete Arbeitsspeichereinstellung ermitteln. Ziehen Sie dazu vom gesamten physischen Speicher den Arbeitsspeicher ab, der für das Betriebssystem und alle weiteren Instanzen von SQL Server erforderlich ist. (Falls der Computer nicht vollständig für SQL Server reserviert ist, müssen Sie zusätzlich auch den für andere Verwendungszwecke des Systems benötigten Arbeitsspeicher abziehen.) Die Differenz entspricht der maximalen Arbeitsspeichergröße, die Sie SQL Server zuweisen können.

Manuelles Festlegen der Arbeitsspeicheroptionen

Legen Sie min server memory und max server memory so fest, dass die Werte einen Bereich des Arbeitsspeichers angeben. Diese Methode ist vor allem dann sinnvoll, wenn der System- oder Datenbankadministrator eine Instanz von SQL Server in Abhängigkeit von den Arbeitsspeicheranforderungen anderer Anwendungen auf demselben Computer konfigurieren möchte.

Mithilfe der Konfigurationsoption min server memory wird sichergestellt, dass für den Pufferpool einer Instanz von SQL Server eine Mindestmenge an Arbeitsspeicher verfügbar ist. Allerdings wird die unter min server memory angegebene Arbeitsspeichermenge von SQL Server nicht gleich beim Start zugeordnet. Sobald der Wert für die Speicherauslastung aufgrund der Clientbelastung erreicht ist, kann SQL Server nur dann Arbeitsspeicher aus dem zugeordneten Pufferpool freigeben, wenn der Wert für min server memory reduziert wird.

HinweisHinweis

Allerdings kann nicht sichergestellt werden, dass durch SQL Server die in min server memory angegebene Arbeitsspeichermenge zugeordnet wird. Wenn die in min server memory angegebene Arbeitsspeichermenge aufgrund der Serverlast zu keinem Zeitpunkt zugeordnet werden muss, wird SQL Server mit weniger Arbeitsspeicher ausgeführt.

Mithilfe der Konfigurationsoption max server memory wird verhindert, dass der Pufferpool von SQL Server mehr Arbeitsspeicher als angegeben verwendet. Auf diese Weise können mithilfe des verbleibenden Arbeitsspeichers andere Anwendungen schneller gestartet werden. Allerdings wird die unter max server memory angegebene Arbeitsspeichermenge von SQL Server nicht gleich beim Start zugeordnet. Die Speicherauslastung wird von SQL Server nach Bedarf so lange erhöht, bis der in max server memory angegebene Wert erreicht ist. SQL Server kann diese Speicherauslastung nur dann überschreiten, wenn der in max server memory angegebene Wert erhöht wird.

Bevor Sie den max server memory-Wert herabsetzen, untersuchen Sie mit dem Systemmonitor das SQLServer:Buffer Manager-Leistungsobjekt, während es unter Belastung steht, und notieren Sie sich die aktuellen Werte der Leistungsindikatoren Gestohlene Seiten und Reservierte Seiten. Diese Leistungsindikatoren melden den Arbeitsspeicher als Anzahl von 8-KB-Seiten. max server memory sollte auf einen Wert oberhalb der Summe dieser beiden Werte festgelegt werden, um Fehler aufgrund nicht ausreichenden Arbeitsspeichers zu vermeiden. Ein ungefährer Wert für die niedrigste, noch sinnvolle max server memory-Einstellung (in MB) ist ([Gestohlene Seiten] + [Reservierte Seiten])/ 100. Damit die Reduzierung für max server memory in Kraft treten kann, müssen Sie ggf. SQL Server neu starten, um den Arbeitsspeicher freizugeben. Weitere Informationen zum Festlegen von Speicheroptionen finden Sie unter Vorgehensweise: Festlegen einer festen Arbeitsspeichergröße (SQL Server Management Studio).

Maximieren des Datendurchsatzes in Netzwerkanwendungen

Um die Nutzung des Systemspeichers für SQL Server zu optimieren, sollten Sie den Arbeitsspeicher einschränken, der vom System zur Zwischenspeicherung von Dateien verwendet wird. Stellen Sie zum Einschränken des Dateisystemcache sicher, dass die Option Datendurchsatz für Dateifreigabe maximieren deaktiviert ist. Sie können den kleinsten Dateisystemcache angeben, indem Sie Verwendeten Arbeitsspeicher minimieren oder Lastenausgleich durchführen auswählen.

So überprüfen Sie die aktuellen Einstellungen des Betriebssystems

  1. Klicken Sie auf Start und anschließend auf Systemsteuerung, doppelklicken Sie auf Netzwerkverbindungen, und doppelklicken Sie dann auf LAN-Verbindung.

  2. Klicken Sie auf der Registerkarte Allgemein auf Eigenschaften, wählen Sie Datei- und Druckerfreigabe für Microsoft-Netzwerke aus, und klicken Sie dann auf Eigenschaften.

  3. Wenn die Option Datendurchsatz für Netzwerkanwendungen maximieren ausgewählt ist, wählen Sie ggf. weitere Optionen aus. Klicken Sie auf OK, und schließen Sie alle noch geöffneten Dialogfelder.

AWE-Arbeitsspeicher unter Windows Server 2003

Unter Windows Server 2003 kann SQL Server zusätzlich AWE-Arbeitsspeicher (Address Windowing Extentions) verwenden, was zu einer weiteren Verbesserung des Lastenausgleichs zwischen den eigenen Arbeitsspeicheranforderungen und denen des Betriebssystems führt. Dieser Lastenausgleich zwischen SQL Server und dem Betriebssystem unterliegt den für min server memory und max server memory angegebenen Beschränkungen. Wenn die Serverhardware das Hinzufügen von Speicher im laufenden Systembetrieb (Hot Add Memory) unterstützt, kann dem Server je nach Bedarf zusätzlicher physischer Arbeitsspeicher hinzugefügt werden, ohne dass ein Neustart erforderlich ist. Weitere Informationen zur Konfigurationsoption awe enabled finden Sie unter awe enabled (Option). Weitere Informationen finden Sie unter Hinzufügen von Speicher im laufenden Systembetrieb (Hot Add Memory).

HinweisHinweis

Dynamischer AWE-Arbeitsspeicher wird nur auf Servern unterstützt, deren physischer Arbeitsspeicher unterhalb des konfigurierten virtuellen Arbeitsspeicherlimits liegt.

Im Idealfall sollten Sie SQL Server so viel Arbeitsspeicher wie möglich zuordnen, ohne dass das System Seiten auf den Datenträger auslagern muss. Der Schwellenwert variiert in Abhängigkeit vom System. Beispielsweise empfiehlt sich bei einem 32-GB-System, das ausschließlich für die Verwendung durch SQL Server bestimmt ist, ein maximaler Schwellenwert von 30 bis 31 GB für SQL Server. Der entsprechende Schwellenwert auf einem 64-GB-System sollte 60 bis 62 GB betragen.

HinweisHinweis

In dem Maße, in dem die Arbeitsspeichermenge für SQL Server erhöht wird, muss auch ausreichend Speicherplatz zur Vergrößerung der Unterstützungsdatei (pagefile.sys) für den virtuellen Arbeitsspeicher des Betriebssystems verfügbar sein, um zusätzlichen Arbeitsspeicher bereitzustellen. Weitere Informationen zur Unterstützungsdatei für den virtuellen Arbeitsspeicher finden Sie in der Windows-Dokumentation.

Mithilfe der Statistiken des Windows-Systemmonitors können Sie den Wert des Arbeitsspeichers bei Bedarf anpassen. Ändern Sie den Wert nur, wenn Sie Arbeitsspeicher hinzufügen bzw. entfernen oder wenn Sie den Verwendungszweck des Systems ändern möchten.

Manager für virtuellen Arbeitsspeicher

32-Bit-Betriebssysteme bieten Zugriff auf einen virtuellen Adressraum von 4 GB. 2 GB des virtuellen Arbeitsspeichers sind für einzelne Prozesse reserviert und für Anwendungen verfügbar. 2 GB sind für die Verwendung durch das Betriebssystem reserviert. Alle Betriebssystemeditionen enthalten eine Option, mit der für Anwendungen ein virtueller Arbeitsspeicher von bis zu 3 GB bereitgestellt und das Betriebssystem auf 1 GB beschränkt werden kann. Weitere Informationen zur Arbeitsspeicherkonfiguration mithilfe der Option finden Sie in der Windows-Dokumentation zur 4 GB-Optimierung (4GT). Wenn die 32-Bit-Version von SQL Server auf einem 64-Bit-Betriebssystem ausgeführt wird, sind die vollen 4 GB als virtueller Adressraum für Benutzer verfügbar.

HinweisHinweis

PAE wird nur automatisch aktiviert, wenn für den Server Hot-Add-Speichergeräte verwendet werden. In einem System, das für die Verwendung von Geräten zum Hinzufügen von Speicher im laufenden Systembetrieb konfiguriert wurde, ist es nicht erforderlich, den /PAE-Schalter zu verwenden. In allen anderen Fällen müssen Sie den /PAE-Schalter in der Datei Boot.ini verwenden, um Arbeitsspeicher über 4 GB zu nutzen.

Der 4-GB-Adressraum wird vom Windows-Manager für virtuellen Arbeitsspeicher (VMM, Virtual Memory Manager) dem verfügbaren physischen Arbeitsspeicher zugeordnet. Der für AWE verfügbare Arbeitsspeicher hängt deshalb vom verwendeten Betriebssystem ab. Weitere Informationen zu der von unterschiedlichen Betriebssystemen unterstützten Arbeitsspeichermenge finden Sie in der Windows-Dokumentation zu den Arbeitsspeicherlimits für Windows-Versionen.

Mit virtuellen Adresssystemen kann mehr physischer Arbeitsspeicher zugesichert werden, als tatsächlich vorhanden ist, sodass das Verhältnis von virtuellem zu physischem Arbeitsspeicher das Verhältnis 1:1 überschreiten kann. Auf diese Weise können größere Programme auf Computern mit verschiedenen Arbeitsspeicherkonfigurationen ausgeführt werden. Wenn jedoch deutlich mehr virtueller Arbeitsspeicher verwendet wird, als die kombinierten durchschnittlichen Workingsets aller Prozesse verwenden, kann dies zu einem ungünstigen Leistungsverhalten führen.

Bei min server memory und max server memory handelt es sich um erweiterte Optionen. Wenn Sie diese Einstellungen mithilfe der gespeicherten Systemprozedur sp_configure ändern, können Sie die Einstellungen nur ändern, wenn show advanced options auf 1 festgelegt ist. Diese Einstellungen treten sofort ohne einen Neustart des Servers in Kraft.

Ausführen mehrerer Instanzen von SQL Server

Wenn Sie mehrere Instanzen von Database Engine (Datenbankmodul) ausführen, stehen Ihnen zum Verwalten des Arbeitsspeichers drei Möglichkeiten zur Verfügung:

  • Steuern Sie die Speicherauslastung mithilfe von max server memory. Richten Sie für jede Instanz Maximaleinstellungen ein, und achten Sie darauf, dass der gesamte zugeordnete Arbeitsspeicher nicht größer ist als der insgesamt auf dem Computer verfügbare physische Speicher. Es empfiehlt sich, den jeder Instanz zugeordneten Arbeitsspeicher proportional zur erwarteten Arbeitsauslastung oder Datenbankgröße zu bemessen. Dieser Ansatz hat den Vorteil, dass beim Starten neuer Prozesse oder Instanzen sofort freier Arbeitsspeicher für die Prozesse oder Instanzen zur Verfügung steht. Der Nachteil ist, wenn nicht alle Instanzen ausgeführt werden, dass keine der laufenden Instanzen den verbleibenden freien Arbeitsspeicher nutzen kann.

  • Steuern Sie die Speicherauslastung mithilfe von min server memory. Richten Sie für jede Instanz Minimaleinstellungen ein, sodass die Summe dieser Mindestwerte 1 bis 2 GB unterhalb des gesamten physischen Speichers auf dem Computer liegt. Auch bei dieser Methode empfiehlt es sich, die Werte proportional zu der für die jeweilige Instanz erwarteten Arbeitsauslastung zu bemessen. Dieser Ansatz hat den Vorteil, dass die laufenden Instanzen den verbleibenden freien Arbeitsspeicher nutzen können, wenn nicht alle Instanzen gleichzeitig ausgeführt werden. Diese Vorgehensweise ist auch dann sinnvoll, wenn auf dem Computer ein weiterer speicherintensiver Prozess vorhanden ist, da sichergestellt ist, dass SQL Server zumindest eine angemessene Menge an Arbeitsspeicher erhält. Der Nachteil besteht darin, dass es beim Starten einer neuen Instanz (oder eines anderen Prozesses) ggf. etwas dauern kann, bis die laufenden Instanzen Speicher freigeben. Dies trifft vor allem dann zu, wenn die Instanzen zuerst noch geänderte Seiten in ihre jeweiligen Datenbanken zurückschreiben müssen. Unter Umständen müssen Sie auch die Größe der Auslagerungsdatei deutlich erhöhen.

  • Unternehmen Sie nichts (dies wird nicht empfohlen). Die ersten Instanzen, denen eine Arbeitslast zugewiesen wird, weisen sich den gesamten Arbeitsspeicher zu. Instanzen im Leerlauf oder Instanzen, die später gestartet werden, müssen in dieser Situation u. U. mit einer minimalen Menge an Arbeitsspeicher auskommen. SQL Server versucht nicht, die Speicherauslastung über mehrere Instanzen hinweg auszugleichen. Alle Instanzen antworten jedoch auf Signale der Windows-Arbeitsspeicherbenachrichtigung, um die Größe ihrer Pufferpools anzupassen. Windows nimmt keinen Speicherausgleich bei Anwendungen vor, die über eine Arbeitsspeicherbenachrichtigungs-API verfügen. Es erfolgt lediglich eine globale Rückmeldung über die Verfügbarkeit von Arbeitsspeicher auf dem System.

Sie können diese Einstellungen ohne Neustart der Instanzen ändern. Dadurch können Sie problemlos mit verschiedenen Einstellungen experimentieren, um die für Ihr Nutzungsmuster am besten geeigneten Einstellungen herauszufinden.

Beispiele

Im folgenden Beispiel wird die Option max server memory auf 4 GB festgelegt.

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO