Share via


Serverkonfigurationsoptionen für den Serverspeicher

Mit den beiden Arbeitsspeicheroptionen für den Server, Min. Serverarbeitsspeicher und Max. Serverarbeitsspeicher, können Sie die Größe des Arbeitsspeichers (in Megabytes) umkonfigurieren, der vom SQL Server-Speicher-Manager für einen von einer Instanz von SQL Server verwendeten SQL Server-Prozess verwaltet wird.

Die Standardeinstellung für Min. Serverarbeitsspeicher ist 0, die für Max. Serverarbeitsspeicher 2.147.483.647 MB. Standardmäßig können die Arbeitsspeicheranforderungen von SQL Server anhand der verfügbaren Systemressourcen dynamisch geändert werden.

HinweisHinweis

Wenn die Option Max. Serverarbeitsspeicher auf den Minimalwert festgelegt ist, kann dies die Leistung von SQL Server erheblich einschränken und sogar den Start 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. Serverarbeitsspeicher auf ihren vorherigen Wert zurücksetzen. Weitere Informationen finden Sie unter Startoptionen für den Datenbankmoduldienst.

Bei dynamischer Verwendung des Arbeitsspeichers von SQL Server wird der im System verfügbare Arbeitsspeicher in regelmäßigen Abständen abgefragt. Bei Beibehaltung dieses freien Arbeitsspeichers werden Auslagerungsvorgänge durch das Betriebssystem verhindert. Wenn weniger freier Arbeitsspeicher vorhanden ist, gibt SQL Server Arbeitsspeicher für das Betriebssystem frei. Wenn mehr Arbeitsspeicher frei ist, kann SQL Server mehr Speicher reservieren. SQL Server fügt Arbeitsspeicher nur dann hinzu, wenn durch die Arbeitsauslastung mehr Arbeitsspeicher erforderlich ist. Bei einem ruhenden Server wird die Größe seines virtuellen Adressraums nicht vergrößert.

In Beispiel B finden Sie eine Abfrage, die die aktuelle Speicherbelegung zurückgibt. Max. Serverarbeitsspeicher steuert die SQL Server-Speicherbelegung, inklusive Pufferpool, Arbeitsspeicherkompilierung, alle Zwischenspeicher, Speicherzuweisungs-Wartevorgänge, Arbeitsspeicher für Sperren-Manager und CLR-Speicher (im Grunde jeder Arbeitsspeicherclerk, der in sys.dm_os_memory_clerks gefunden wurde). Arbeitsspeicher für Threadstapel, Speicherheaps, andere verknüpfte Serveranbieter als SQL Server und alle anderen Speicher, die nicht von einer SQL Server-DLL zugeordnet werden, werden nicht von dem maximalen Serverarbeitsspeicher gesteuert.

Mithilfe der für Speicherbenachrichtigungen verfügbaren API QueryMemoryResourceNotification ermittelt SQL Server, wann der SQL Server-Speicher-Manager 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 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 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

Legen Sie Min. Serverarbeitsspeicher und Max. Serverarbeitsspeicher 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. Serverarbeitsspeicher wird sichergestellt, dass für den SQL Server-Speicher-Manager einer Instanz von SQL Server eine Mindestmenge an Arbeitsspeicher verfügbar ist. Allerdings wird die unter Min. Serverarbeitsspeicher angegebene Arbeitsspeichermenge von SQL Server nicht gleich beim Start zugeordnet. Sobald der Wert für die Speicherauslastung aufgrund der Clientauslastung erreicht ist, kann SQL Server nur dann Arbeitsspeicher freigeben, wenn der Wert für Min. Serverarbeitsspeicher 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.

Betriebssystemtyp

Minimal zulässige Arbeitsspeichermengen für Max. Serverarbeitsspeicher

32 Bit

64 MB

64 Bit

128 MB

So konfigurieren Sie Speicheroptionen mit SQL Server Management Studio

Mit den beiden Arbeitsspeicheroptionen für den Server, Min. Serverarbeitsspeicher und Max. Serverarbeitsspeicher, können Sie den vom SQL Server-Speicher-Manager für eine Instanz von SQL Server verwalteten Umfang des Arbeitsspeichers (in MB) umkonfigurieren. Standardmäßig können die Arbeitsspeicheranforderungen von SQL Server anhand der verfügbaren Systemressourcen dynamisch geändert werden.

Vorgehensweise beim Konfigurieren eines festen Arbeitsspeichers

So legen Sie eine feste Arbeitsspeichergröße fest

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.

  2. Klicken Sie auf den Knoten Arbeitsspeicher.

  3. Geben Sie unter Arbeitsspeicheroptionen für den Server den gewünschten Wert für Minimaler Serverarbeitsspeicher und Maximaler Serverarbeitsspeicher ein.

    Verwenden Sie die Standardeinstellungen, damit SQL Server die Arbeitsspeicheranforderungen auf der Grundlage der verfügbaren Systemressourcen dynamisch ändert. Die Standardeinstellung für Minimaler Serverarbeitsspeicher ist 0; für Maximaler Serverarbeitsspeicher liegt der Standardwert bei 2147483647 Megabyte (MB).

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 im Startmenü 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.

Sperren von Seiten im Speicher

Mit dieser Windows-Richtlinie werden die Konten bestimmt, die einen Prozess zum Speichern von Daten im physischen Speicher verwenden können, um das systemgesteuerte Auslagern der Daten in den virtuellen Arbeitsspeicher zu vermeiden. Durch Sperren von Seiten im Arbeitsspeicher können Sie die Reaktionsfähigkeit des Servers möglicherweise auch nach Auslagerung von Arbeitsspeicherdaten auf die Festplatte aufrechterhalten. Die SQL Server-Option Sperren von Seiten im Speicher wird bei 32-Bit- und 64-Bit-Instanzen der SQL Server 2012 Standard Edition und höher auf ON gesetzt, wenn dem Konto mit den Privilegien zum Ausführen von "sqlservr.exe" das Windows-Benutzerrecht "Lock Pages in Memory" (LPIM) erteilt wurde. In früheren Versionen von SQL Server ist beim Festlegen der Option zum Sperren von Seiten für eine 32-Bit-Instanz von SQL Server erforderlich, dass das Konto mit den Privilegien zum Ausführen von "sqlservr.exe" das LPIM-Benutzerrecht besitzt und die awe_enabled-Konfigurationsoption auf ON festgelegt wird.

Entfernen Sie zum Deaktivieren der Option Sperren von Seiten im Speicher für SQL Server das Benutzerrecht "Lock Pages in Memory" für das SQL Server-Startkonto.

So deaktivieren Sie die Option "Sperren von Seiten im Speicher"

So deaktivieren Sie die Option "Sperren von Seiten im Speicher"

  1. Klicken Sie im Startmenü auf Ausführen. Geben Sie im Feld Öffnen gpedit.msc ein.

    Das Dialogfeld Gruppenrichtlinie wird geöffnet.

  2. Erweitern Sie in der Konsole Gruppenrichtlinie die Option Computerkonfiguration und dann Windows-Einstellungen.

  3. Erweitern Sie Sicherheitseinstellungen und dann Lokale Richtlinien.

  4. Wählen Sie den Ordner Zuweisen von Benutzerrechten aus.

    Die Richtlinien werden im Detailbereich angezeigt.

  5. Doppelklicken Sie im Detailbereich auf Sperren von Seiten im Speicher.

  6. Wählen Sie im Dialogfeld Lokale Sicherheitseinstellung das Konto mit Privilegien zum Ausführen von "sqlservr.exe", und klicken Sie auf Entfernen.

Manager für virtuellen Arbeitsspeicher

Die 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 einen Schalter, mit dem Anwendungen der Zugriff auf einen virtuellen Adressraum von bis zu 3 GB gewährt und das Betriebssystem auf 1 GB beschränkt werden kann. Weitere Informationen zur Verwendung der Arbeitsspeicherkonfiguration mithilfe des Schalters finden Sie in der Windows-Dokumentation zur 4-GB-Optimierung (4 Gigabyte Tuning, 4GT). Wenn die 32-Bit-Version von SQL Server unter einem 64-Bit-Betriebssystem ausgeführt wird, steht Benutzern der vollständige virtuelle Adressraum von 4 GB zur Verfügung.

Die zugesicherten Bereiche des Adressraums werden vom Windows-Manager für virtuellen Arbeitsspeicher (VMM, Virtual Memory Manager) dem verfügbaren physischen Arbeitsspeicher zugeordnet.

Weitere Informationen zur von anderen Betriebssystemen unterstützten Größe des physischen Speichers finden Sie in der Windows-Dokumentation "Arbeitsspeichergrenzwerte für Windows-Versionen" (möglicherweise in englischer Sprache).

Mit virtuellen Speichersystemen 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 diese nur ändern, wenn Erweiterte Optionen anzeigen auf 1 festgelegt ist. Diese Einstellungen treten sofort ohne 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.

  • 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 ihren Speicherbedarf 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.

Bereitstellen der maximalen Menge von Arbeitsspeicher für SQL Server

32 Bit

64 Bit

Konventioneller Arbeitsspeicher

Bis zu der für den virtuellen Prozessadressraum geltenden Beschränkung in allen Editionen von SQL Server:

  • 2 GB

  • 3 GB mit dem Startparameter /3gb1

  • 4 GB unter WOW642

Bis zu der für den virtuellen Prozessadressraum geltenden Beschränkung in allen Editionen von SQL Server:

  • 8 TB in einer x64-Architektur

1 /3gb ist ein Startparameter des Betriebssystems. Weitere Informationen finden Sie in der MSDN Library.

2 WOW64 (Windows on Windows 64) ist ein Modus, in dem SQL Server (32-Bit) auf einem 64-Bit-Betriebssystem ausgeführt wird. Weitere Informationen finden Sie in der MSDN Library.

Beispiele

Beispiel A

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

Beispiel B.Bestimmung der aktuellen Speicherbelegung

Die folgende Abfrage gibt Informationen über die aktuelle Speicherbelegung zurück.

SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;

Siehe auch

Verweis

RECONFIGURE (Transact-SQL)

sp_configure (Transact-SQL)

Konzepte

Überwachen und Optimieren der Leistung

Serverkonfigurationsoptionen