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 MicrosoftSQL 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. Für max server memory liegt der Standardwert bei 2147483647. Die minimale Speichergröße, die Sie für max server memory angeben können, beträgt 16 Megabyte (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. Unter MicrosoftWindows 2000 wird der Puffercache von SQL Server vergrößert oder reduziert, um den Umfang des freien physischen Arbeitsspeichers je nach Serveraktivität zwischen 4 MB und 10 MB zu halten. Dadurch kommt Windows 2000 ohne Auslagerungen aus. Wenn weniger freier Arbeitsspeicher vorhanden ist, gibt SQL Server Arbeitsspeicher für Windows 2000 frei. Wenn mehr Arbeitsspeicher verfügbar ist, wird dem Pufferpool von SQL Server Arbeitsspeicher zugeordnet. Dem Pufferpool wird von SQL Server nur dann Arbeitsspeicher hinzugefügt, wenn durch die Arbeitsauslastung mehr Arbeitsspeicher benötigt wird. Bei Servern im Ruhezustand wird der Umfang des zugehörigen Pufferpools nicht vergrößert.

Unter Windows Server 2003 wird von SQL Server die für Speicherbenachrichtigungen verfügbare API QueryMemoryResourceNotification verwendet, um zu ermitteln, wann der Pufferpool Speicher zuordnen 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 Windows 2000 oder Windows Server 2003 und mögliche weitere 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 Verwendungen des Systems benötigten Arbeitsspeicher abziehen.) Die Differenz entspricht der maximalen Arbeitsspeichergröße, die Sie SQL Server zuweisen können.

Manuelles Festlegen der Arbeitsspeicheroptionen

Es gibt zwei grundlegende Methoden, um die Arbeitsspeicheroptionen von SQL Server manuell festzulegen:

  • Bei der ersten Methode legen Sie für min server memory und max server memory denselben Wert fest. Dieser Wert entspricht der festen Arbeitsspeichergröße, die dem SQL Server-Pufferpool nach Erreichen des Werts zugeordnet wird.

  • Bei der zweiten Methode legen Sie min server memory und max server memory auf einen Bereich von Arbeitsspeicherwerten fest. 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 angemessene Einstellung max server memory (in MB) ist ([Gestohlene Seiten] + [Reservierte Seiten])/ 100. Um max server memory zu reduzieren, müssen Sie 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 Systemspeicherverwendung 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

Unter Windows Server 2003 wird dynamischer AWE-Arbeitsspeicher nur auf Servern unterstützt, deren physischer Arbeitsspeicher unterhalb des konfigurierten virtuellen Arbeitsspeicherlimits liegt. Für die Aktivierung des AWE-Arbeitsspeichers unter Windows 2000 galt die Voraussetzung, dass der verfügbare physische Arbeitsspeicher den virtuellen Arbeitsspeicher übersteigt.

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 Dokumentation für Windows 2000 oder Windows Server 2003.

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, wie Windows 2000 und Windows Server 2003, bieten Zugriff auf einen virtuellen Adressraum von 4 GB. Die unteren 2 GB dieses virtuellen Arbeitsspeichers sind für einzelne Prozesse reserviert und für Anwendungen verfügbar. Die oberen 2 GB sind für das Betriebssystem reserviert. Alle Betriebssystemeditionen ab MicrosoftWindows XP Professional, einschließlich Windows Server 2003, stellen in der Datei boot.ini einen Schalter bereit, der Anwendungen Zugriff auf einen virtuellen Speicher von 3 GB gewährt und das Betriebssystem auf 1 GB beschränkt. Weitere Informationen zur Verwendung der Arbeitsspeicherkonfiguration mithilfe des Schalters /3GB finden Sie in der Windows-Dokumentation.

HinweisHinweis

In Windows Server 2003 wird PAE nur automatisch aktiviert, wenn der Server Geräte zum Hinzufügen von Speicher im laufenden Systembetrieb (Hot-Add Memory) verwendet. 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. Mit der Einführung von Windows Server 2003-Betriebssystemen wird mehr physischer Arbeitsspeicher unterstützt. Daher ist die Menge des für AWE zugreifbaren Arbeitsspeichers vom verwendeten Betriebssystem abhängig:

  • In der Windows Server 2003 Standard Edition werden bis zu 4 GB physischer Arbeitsspeicher unterstützt.

  • In der Windows Server 2003 Enterprise Edition werden bis zu 32 GB physischer Arbeitsspeicher unterstützt.

  • In der Windows Server 2003 Datacenter Edition werden bis zu 64 GB physischer Arbeitsspeicher unterstützt.

Eine Win32-Anwendung wie SQL Server arbeitet nur mit virtuellen oder logischen Adressen, nicht mit physischen Adressen. Wie viel physischer Arbeitsspeicher von einer Anwendung zu einem bestimmten Zeitpunkt verwendet wird (das Workingset), wird durch den verfügbaren physischen Speicher und von VMM bestimmt. Die Arbeitsspeicherbelegung kann durch die Anwendung nicht direkt gesteuert werden.

Die 32-Bit-Editionen Windows 2000 Advanced Server, Windows 2000 Datacenter Server sowie Windows Server 2003 Enterprise Server und Windows Server 2003 Datacenter Server können die 4-GB-Grenze mithilfe der von Intel bereitgestellten PAE (Physical Adressing Extensions) überschreiten. Mithilfe des Schalters /PAE in der Windows-Konfigurationsdatei boot.ini können Sie den Zugriff auf den physischen Arbeitsspeicher auch oberhalb der 4-GB-Grenze bereitstellen. Dies ist für den AWE-Arbeitsspeicherzugriff oberhalb von 4 GB erforderlich. Weitere Informationen zur Verwendung dieser Arbeitsspeicherkonfiguration für Windows 2000 und Windows Server 2003 finden Sie in der Windows-Dokumentation.

Mit virtuellen Adresssystemen wie unter Windows 2000 oder Windows Server 2003 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 die Einstellung mithilfe der gespeicherten Systemprozedur sp_configure ändern möchten, ist dies nur möglich, wenn Erweiterte Optionen anzeigen auf 1 festgelegt ist. Die Einstellungen sind ohne Neustart des Servers sofort wirksam.

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. Ab Windows Server 2003 SP1 nimmt Windows 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