Konfigurationsoptionen für den Serverarbeitsspeicher
Verwenden Sie die beiden Serverspeicheroptionen min Serverspeicher und max. Serverarbeitsspeicher, um die Vom SQL Server Memory Manager verwaltete Arbeitsspeichermenge (in Megabyte) für einen SQL Server Prozess neu zu konfigurieren, der von einer instance von SQL Server verwendet wird.
Die Standardeinstellung für min Serverarbeitsspeicher ist 0, und die Standardeinstellung für den maximalen Serverspeicher ist 2147483647 MB. Standardmäßig kann SQL Server den Arbeitsspeicherbedarf je nach verfügbaren Systemressourcen dynamisch anpassen.
Hinweis
Wenn Sie den maximalen Serverspeicher auf den Mindestwert festlegen, kann dies SQL Server Leistung erheblich beeinträchtigen und sogar verhindern, dass sie gestartet wird. Wenn SQL Server nach dem Ändern dieser Option nicht gestartet werden kann, müssen Sie den Start mithilfe der Startoption -f durchführen und die Option Max. Serverarbeitsspeicher auf ihren vorherigen Wert zurücksetzen. Weitere Informationen finden Sie unter Startoptionen für den Datenbank-Engine-Dienst.
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 auch 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.
Beispiel B enthält eine Abfrage, welche den derzeit verwendeten Arbeitsspeicher zurückgibt. Max Serverspeicher steuert die SQL Server Speicherzuordnung, einschließlich Pufferpool, Kompilierungsspeicher, alle Caches, qe-Speicherzuweisungen, Sperr-Manager-Arbeitsspeicher und Clr-Arbeitsspeicher (im Wesentlichen alle Speicherbearbeiter in sys.dm_os_memory_clerks). Arbeitsspeicher für Threadstapel, Speicherheaps, andere Verbindungsserveranbieter als SQL Server und der durch eine nicht SQL Server DLL zugewiesene Arbeitsspeicher werden nicht durch den maximalen Serverspeicher gesteuert.
SQL Server Mithilfe der für Speicherbenachrichtigungen verfügbaren API QueryMemoryResourceNotification ermittelt SQL Server, wann der SQL Server-Speicher-Manager Speicher zuordnen oder freigeben kann.
Es wird empfohlen, SQL Server die dynamische Verwendung von Arbeitsspeicher zuzulassen. Sie können die Speicheroptionen jedoch manuell festlegen und die Menge des Arbeitsspeichers einschränken, auf den SQL Server zugreifen können. Bevor Sie die Menge des Arbeitsspeichers für SQL Server festlegen, bestimmen Sie die entsprechende Arbeitsspeichereinstellung, indem Sie den für das Betriebssystem erforderlichen Arbeitsspeicher und alle anderen Instanzen von SQL Server (und andere Systemnutzungen, wenn der Computer nicht vollständig für SQL Server reserviert ist) subtrahieren. Dieser Unterschied ist die maximale Arbeitsspeichermenge, die Sie SQL Server zuweisen können.
Manuelles Festlegen der Arbeitsspeicheroptionen
Sie können die Serveroptionen Min. Serverarbeitsspeicher und Max. Serverarbeitsspeicher so festlegen, dass ein großer Bereich von Arbeitsspeicherwerten überdeckt wird. 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 oder weiterer Instanzen von SQL Server, die auf demselben Computer ausgeführt werden, konfigurieren möchte.
Hinweis
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.
Mithilfe der Konfigurationsoption min_server_memory wird sichergestellt, dass für den SQL Server-Speicher-Manager einer Instanz von SQL Server eine Mindestmenge an Arbeitsspeicher verfügbar ist. SQL Server Allerdings wird die unter Min. Serverarbeitsspeicher angegebene Arbeitsspeichermenge von 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. Wenn beispielsweise mehrere Instanzen von SQL Server gleichzeitig auf dem gleichen Host ausgeführt werden können, legen Sie den Parameter „min_server_memory“ anstelle von „max_server_memory“ fest, um Arbeitsspeicher für eine Instanz zu reservieren. Ferner ist das Festlegen eines Werts für „min_server_memory“ in einer virtualisierten Umgebung entscheidend, um sicherzustellen, dass Arbeitsspeichermangel beim zugrundeliegenden Host nicht zu dem Versuch führt, Arbeitsspeicher aus dem Pufferpool eines virtuellen SQL Server-Gastcomputers jenseits dessen abzuzweigen, was für eine vertretbare Leistung erforderlich ist.
Hinweis
Allerdings kann nicht sichergestellt werden, dass SQL Server die in min server memory angegebene Arbeitsspeichermenge zuordnet. Wenn die in min server memoryangegebene Arbeitsspeichermenge aufgrund der Serverlast zu keinem Zeitpunkt zugeordnet werden muss, wird SQL Server mit weniger Arbeitsspeicher ausgeführt.
Verwenden Sie max_server_memory, um sicherzustellen, dass beim Betriebssystem kein nachteiliger Arbeitsspeichermangel eintritt. Um den maximalen Serverarbeitsspeicher zu konfigurieren, überwachen Sie den Gesamtverbrauch des SQL Server-Prozesses, um die Arbeitsspeicheranforderungen zu bestimmen. Hier folgen genauere Angaben für diese Berechnungen für eine Einzelinstanz:
- Reservieren Sie vom gesamten Arbeitsspeicher des Betriebssystems 1 GB–4 GB für das Betriebssystem selbst.
- Subtrahieren Sie dann das Äquivalent potenzieller SQL Server Arbeitsspeicherzuordnungen außerhalb des maximalen Serverspeichersteuerelements, das aus stapelgröße 1 * berechneter maximaler Workerthread 2 + -g Startparameter 3 (oder standardmäßig 256 MB besteht, wenn -g nicht festgelegt ist). Der Rest sollte die Einstellung „max_server_memory“ für die Einrichtung einer einzelnen Instanz bilden.
1 Informationen zu den Threadstapelgrößen der einzelnen Architekturen finden Sie im Handbuch zur Architektur der Speicherverwaltung.
2 Informationen zu den standardmäßig berechneten Arbeitsthreads für eine bestimmte Anzahl kategorisierter CPUs auf dem aktuellen Host finden Sie auf der Dokumentationsseite zum Konfigurieren der Serverkonfigurationsoption Maximale Anzahl von Arbeitsthreads.
3 Informationen zum Startparameter -g finden Sie auf der Dokumentationsseite zu Startoptionen für den Datenbank-Engine-Dienst. Aplicable only to 32-Bit-SQL Server (SQL Server 2005 bis SQL Server 2014).
Betriebssystemtyp | Zulässige Mindestspeichermengen für maximalen Serverspeicher |
---|---|
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:
Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server, und wählen Sie Eigenschaften aus.
Klicken Sie auf den Speicher -Knoten.
Geben Sie unter Arbeitsspeicheroptionen für den Serverden gewünschten Wert für Minimaler Serverarbeitsspeicher und Maximaler Serverarbeitsspeicherein.
Verwenden Sie die Standardeinstellungen, damit SQL Server die Arbeitsspeicheranforderungen auf der Grundlage der verfügbaren Systemressourcen dynamisch ändert. Die Standardeinstellung für min Serverarbeitsspeicher ist 0, und die Standardeinstellung für den maximalen Serverspeicher ist 2147483647 Megabyte (MB).
Maximieren des Datendurchsatzes in Netzwerkanwendungen
Um die Verwendung des Systemspeichers für SQL Server zu optimieren, sollten Sie die Menge des Arbeitsspeichers begrenzen, der vom System für die Dateizwischenspeicherung 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ührenauswählen.
So überprüfen Sie die aktuellen Einstellungen des Betriebssystems
Klicken Sie im Startmenüauf Systemsteuerung, doppelklicken Sie auf Netzwerkverbindungen, und doppelklicken Sie dann auf LAN-Verbindung.
Klicken Sie auf der Registerkarte Allgemein auf Eigenschaften, wählen Sie Datei- und Druckerfreigabe für Microsoft-Netzwerkeaus, und klicken Sie dann auf Eigenschaften.
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 Option SQL Server Sperren von Seiten im Arbeitsspeicher ist in 32-Bit- und 64-Bit-Instanzen von SQL Server 2014 Standard Edition und höher auf ON festgelegt, wenn dem Konto mit berechtigungen zum Ausführen sqlservr.exe das Windows-Benutzerrecht "Gesperrte Seiten im Arbeitsspeicher" (LPIM) gewährt 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.
Um die Option Seiten im Arbeitsspeicher sperren für SQL Server zu deaktivieren, entfernen Sie das Benutzerrecht "Gesperrte Seiten im Arbeitsspeicher" für das SQL Server Startkonto.
So deaktivieren Sie die Option "Sperren von Seiten im Speicher"
So deaktivieren Sie die Option Sperrseiten im Arbeitsspeicher:
Klicken Sie im Menü Start auf Ausführen. Geben Sie im Feld Öffnen den Namen ein
gpedit.msc
.Das Dialogfeld Gruppenrichtlinie wird geöffnet.
Erweitern Sie in der Konsole Gruppenrichtlinie die Option Computerkonfigurationund dann Windows-Einstellungen.
Erweitern Sie Sicherheitseinstellungenund dann Lokale Richtlinien.
Wählen Sie den Ordner Zuweisen von Benutzerrechten aus.
Die Richtlinien werden im Detailbereich angezeigt.
Doppelklicken Sie im Detailbereich auf Sperren von Seiten im Speicher.
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 der 32-Bit-SQL Server unter dem 64-Bit-Betriebssystem ausgeführt wird, beträgt der verfügbare virtuelle Adressraum des Benutzers die vollen 4 GB.
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 Konfigurationen des physischen Arbeitsspeichers 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 Datenbank-Engineausfü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 zum Verarbeiten des Grenzwerts für virtuellen Adressraum in allen SQL Server Editionen: 2 GB 3 GB mit /3 gb Startparameter* 4 GB auf WOW64** |
Bis zum Verarbeiten des Grenzwerts für virtuellen Adressraum in allen SQL Server Editionen: 8 TB in einer x64-Architektur |
*/3gb ist ein Startparameter des Betriebssystems. Weitere Informationen finden Sie in der MSDN Library.
**WOW64 (Windows unter Windows 64) ist ein Modus, in dem 32-Bit-SQL Server unter 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: Bestimmen der aktuellen Speicherbelegung
Mit der folgenden Abfrage werden Informationen zur aktuellen Speicherbelegung zurückgegeben.
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;
Weitere Informationen
Überwachen und Optimieren der Leistung
RECONFIGURE (Transact-SQL)
Serverkonfigurationsoptionen (SQL Server)
sp_configure (Transact-SQL)