Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die beiden Serverspeicheroptionen, min. Serverspeicher und max. Serverspeicher, um die Speichermenge (in Megabyte) neu zu konfigurieren, die vom SQL Server-Speicher-Manager für einen SQL Server-Prozess verwaltet wird, der von einer Instanz von SQL Server verwendet wird.
Die Standardeinstellung für min. Serverspeicher ist 0, und die Standardeinstellung für den maximalen Serverspeicher ist 2147483647 MB. Sql Server kann seine Speicheranforderungen standardmäßig dynamisch basierend auf verfügbaren Systemressourcen ändern.
Hinweis
Das Festlegen des maximalen Serverspeichers auf den Minimalwert kann die Leistung von SQL Server erheblich verringern und sogar verhindern, dass er gestartet wird. Wenn Sie SQL Server nach dem Ändern dieser Option nicht starten können, starten Sie sie mit der Startoption -f , und setzen Sie den maximalen Serverspeicher auf den vorherigen Wert zurück. Weitere Informationen finden Sie unter Startoptionen des Datenbankmoduldiensts.
Wenn SQL Server den Arbeitsspeicher dynamisch verwendet, fragt es das System regelmäßig ab, um die Menge des freien Arbeitsspeichers zu ermitteln. Durch die Aufrechterhaltung dieses freien Arbeitsspeichers wird verhindert, dass das Betriebssystem (OS) auslagern kann. Wenn weniger Arbeitsspeicher frei ist, gibt SQL Server Arbeitsspeicher an das Betriebssystem frei. Wenn mehr Arbeitsspeicher frei ist, kann SQL Server mehr Arbeitsspeicher zuweisen. SQL Server fügt Arbeitsspeicher nur hinzu, wenn die Arbeitsauslastung mehr Arbeitsspeicher erfordert; Ein ruhender Server erhöht nicht die Größe des virtuellen Adressraums.
Siehe Beispiel B für eine Abfrage zum Zurückgeben des aktuell verwendeten Arbeitsspeichers. Der maximale Serverspeicher steuert die SQL Server-Speicherzuweisung, einschließlich des Pufferpools, des Kompilierungsspeichers, aller Caches, Qe-Speichererteilungen, Sperr-Manager-Speicher und Clr-Speicher (im Wesentlichen alle Speicherbearbeiter in sys.dm_os_memory_clerks). Speicher für Threadstapel, Speicherheaps, verknüpfte Serveranbieter, die nicht SQL Server sind, und jeder von einer nicht-SQL Server-DLL zugewiesene Speicher werden nicht vom maximalen Serverspeicher gesteuert.
SQL Server verwendet die Speicherbenachrichtigungs-API QueryMemoryResourceNotification , um zu bestimmen, wann der SQL Server-Speicher-Manager Arbeitsspeicher zuweisen und Arbeitsspeicher freigeben kann.
Es wird empfohlen, SQL Server die dynamische Verwendung des Arbeitsspeichers zu ermöglichen; Sie können die Speicheroptionen jedoch manuell festlegen und die Arbeitsspeichermenge einschränken, auf die SQL Server zugreifen kann. Bevor Sie den Arbeitsspeicher für SQL Server festlegen, bestimmen Sie die entsprechende Speichereinstellung, indem Sie vom gesamten physischen Arbeitsspeicher den für das Betriebssystem erforderlichen sowie den für andere Instanzen von SQL Server und andere Systemverwendungen benötigten Arbeitsspeicher subtrahieren, falls der Computer nicht vollständig SQL Server gewidmet ist. Dieser Unterschied ist die maximale Arbeitsspeichermenge, die Sie SQL Server zuweisen können.
Manuelles Festlegen der Speicheroptionen
Die Serveroptionen min. Serverspeicher und max. Serverspeicher können festgelegt werden, um einen Bereich von Speicherwerten zu umfassen. Diese Methode eignet sich für System- oder Datenbankadministratoren, um eine Instanz von SQL Server in Verbindung mit den Speicheranforderungen anderer Anwendungen oder anderen Instanzen von SQL Server zu konfigurieren, die auf demselben Host ausgeführt werden.
Hinweis
Die Min.-Serverspeicher - und max. Serverspeicheroptionen sind erweiterte Optionen. Wenn Sie die Systemgespeicherte Prozedur sp_configure verwenden, um diese Einstellungen zu ändern, können Sie sie nur ändern, wenn alle erweiterten Optionen auf 1 eingestellt ist. Diese Einstellungen werden sofort ohne Serverneustart wirksam.
Verwenden Sie min_server_memory , um einen minimalen Arbeitsspeicher zu gewährleisten, der für den SQL Server-Speicher-Manager für eine Instanz von SQL Server verfügbar ist. SQL Server weist beim Start nicht sofort die menge an Arbeitsspeicher zu, die im min. Serverspeicher angegeben ist. Nachdem die Speicherauslastung diesen Wert aufgrund der Clientlast erreicht hat, kann SQL Server jedoch keinen Arbeitsspeicher freigeben, es sei denn, der Wert des min. Serverspeichers wird reduziert. Wenn z. B. mehrere Instanzen von SQL Server gleichzeitig im selben Host vorhanden sein können, legen Sie den min_server_memory Parameter anstelle von max_server_memory zum Zweck des Reservierens des Speichers für eine Instanz fest. Darüber hinaus ist das Festlegen eines min_server_memory Werts in einer virtualisierten Umgebung unerlässlich, um sicherzustellen, dass der Speicherdruck vom zugrunde liegenden Host nicht versucht, den Speicher aus dem Pufferpool auf einer virtuellen SQL Server-VM freizugeben, über das hinaus, was für eine akzeptable Leistung erforderlich ist.
Hinweis
SQL Server gibt keine Garantie dafür, dass die im min server memory angegebene Menge an Arbeitsspeicher zugewiesen wird. Wenn die Auslastung auf dem Server niemals erfordert, dass der in Min Serverspeicher angegebene Arbeitsspeicher zugeordnet wird, wird SQL Server mit weniger Arbeitsspeicher ausgeführt.
Verwenden Sie max_server_memory , um sicherzustellen, dass das Betriebssystem keinen schädlichen Arbeitsspeicherdruck hat. Um die maximale Serverspeicherkonfiguration festzulegen, überwachen Sie den Gesamtverbrauch des SQL Server-Prozesses, um die Speicheranforderungen zu ermitteln. Um mit diesen Berechnungen für eine einzelne Instanz genauer zu sein:
- Reservieren Sie aus dem gesamten Betriebssystemspeicher 1 GB-4 GB für das Betriebssystem selbst.
- Subtrahieren Sie dann das Äquivalent potenzieller SQL Server-Speicherzuordnungen außerhalb des maximalen Serverspeichersteuerelements , das aus Stapelgröße 1 * berechneten Max-Worker-Threads 2 + -g Startparameter 3 besteht (oder standardmäßig 256 MB, wenn -g nicht festgelegt ist). Was bleibt, sollte die einstellung max_server_memory für ein einzelnes Instanzsetup sein.
1 Informationen zu Threadstapelgrößen pro Architektur finden Sie im Handbuch zur Speicherverwaltungsarchitektur .
2 Bitte schlagen Sie auf der Dokumentationsseite nach, wie Sie die Server-Konfigurationsoption "Maximale Worker-Threads konfigurieren" einrichten, um Informationen über die berechneten Standardarbeitsthreads für eine bestimmte Anzahl von affinitierten CPUs im aktuellen Host zu erhalten.
3 Weitere Informationen zum Startparameter "-g" finden Sie auf der Dokumentationsseite auf den Startoptionen des Datenbankmoduldiensts. Anwendbar nur für 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 |
Konfigurieren von Speicheroptionen mit SQL Server Management Studio
Verwenden Sie die beiden Serverspeicheroptionen, min. Serverspeicher und max. Serverspeicher, um die Vom SQL Server-Speicher-Manager verwaltete Speichermenge (in Megabyte) für eine Instanz von SQL Server neu zu konfigurieren. Sql Server kann seine Speicheranforderungen standardmäßig dynamisch basierend auf verfügbaren Systemressourcen ändern.
Verfahren zum Konfigurieren einer festen Speichermenge
So legen Sie einen festen Arbeitsspeicher 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 "Serverspeicheroptionen" den gewünschten Betrag für den minimalen Serverspeicher und den maximalen Serverspeicher ein.
Verwenden Sie die Standardeinstellungen, um SQL Server zu ermöglichen, ihre Speicheranforderungen dynamisch basierend auf verfügbaren Systemressourcen zu ändern. Die Standardeinstellung für min. Serverspeicher ist 0, und die Standardeinstellung für den maximalen Serverspeicher ist 2147483647 Megabyte (MB).
Maximieren des Datendurchsatzes für Netzwerkanwendungen
Um die Systemspeichernutzung für SQL Server zu optimieren, sollten Sie die Vom System zum Zwischenspeichern von Dateien verwendete Arbeitsspeichermenge begrenzen. Um den Dateisystemcache einzuschränken, stellen Sie sicher, dass Datenübertragungsleistung für Dateifreigabe maximieren nicht ausgewählt ist. Sie können den kleinsten Dateisystemcache angeben, indem Sie " Arbeitsspeicher minimieren" oder " Ausgleich" auswählen.
So überprüfen Sie die aktuelle Einstellung auf Ihrem Betriebssystem
Klicken Sie auf "Start", klicken Sie auf "Systemsteuerung", doppelklicken Sie auf "Netzwerkverbindungen", und doppelklicken Sie dann auf " Lokale Bereichsverbindung".
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.
Wenn der Datendurchsatz für Netzwerkanwendungen maximiert wird, wählen Sie eine andere Option aus, klicken Sie auf "OK", und schließen Sie dann die restlichen Dialogfelder.
Sperren von Seiten im Arbeitsspeicher
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. Das Sperren von Seiten im Speicher kann den Server reaktionsfähig halten, wenn der Speicher auf den Datenträger ausgelagert wird. Die Option "Seiten im Arbeitsspeicher sperren" für SQL Server ist in den 32-Bit- und 64-Bit-Instanzen der SQL Server 2014 Standard Edition und höher auf "EIN" gesetzt, wenn dem Konto, das über die Berechtigung zum Ausführen von sqlservr.exe verfügt, das Windows-Benutzerrecht "Gesperrte Seiten im Arbeitsspeicher" (LPIM) gewährt wurde. In früheren Versionen von SQL Server erfordert das Festlegen der Option "Seiten sperren" für eine 32-Bit-Instanz von SQL Server, dass das Konto mit den entsprechenden Berechtigungen sqlservr.exe die LPIM-Benutzerberechtigung hat und die Konfigurationsoption "awe_enabled" auf "ON" eingestellt ist.
Um die Option " Seiten im Arbeitsspeicher sperren" für SQL Server zu deaktivieren, entfernen Sie den Benutzer "Gesperrte Seiten im Arbeitsspeicher" direkt für das SQL Server-Startkonto.
So deaktivieren Sie Sperrseiten im Arbeitsspeicher
So deaktivieren Sie die Option "Sperrseiten im Arbeitsspeicher":
Klicken Sie im Menü Start auf Ausführen. Geben Sie Öffnen im Feld
gpedit.mscein.Das Dialogfeld Gruppenrichtlinie wird geöffnet.
Erweitern Sie in der Gruppenrichtlinienkonsole die Computerkonfiguration, und erweitern Sie dann die Windows-Einstellungen.
Erweitern Sie die Sicherheitseinstellungen, und erweitern Sie 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 Sicherheitsrichtlinieneinstellung " das Konto mit Berechtigungen aus, um sqlservr.exe auszuführen, und klicken Sie auf "Entfernen".
Virtueller Speicher-Manager
Die 32-Bit-Betriebssysteme bieten Zugriff auf 4 GB virtuellen Adressraum. 2 GB virtueller Arbeitsspeicher ist pro Prozess privat und für die Anwendungsverwendung verfügbar. 2 GB ist für die Verwendung des Betriebssystems reserviert. Alle Betriebssystemeditionen enthalten einen Switch, der Anwendungen den Zugriff auf bis zu 3 GB virtuellen Adressraum ermöglichen kann und das Betriebssystem auf 1 GB beschränkt. Weitere Informationen zur Verwendung der Speicherkonfiguration des Schalters finden Sie in der Windows-Dokumentation zur 4-Gigabyte-Optimierung (4GT). Wenn der 32-Bit-SQL Server auf dem 64-Bit-Betriebssystem ausgeführt wird, ist der vom Benutzer verfügbare virtuelle Adressraum die volle 4 GB.
Die zugesicherten Bereiche des Adressraums werden dem verfügbaren physischen Speicher vom Windows Virtual Memory Manager (VMM) zugeordnet.
Weitere Informationen zur Größe des physischen Arbeitsspeichers, der von verschiedenen Betriebssystemen unterstützt wird, finden Sie in der Windows-Dokumentation "Speicherbeschränkungen für Windows-Versionen".
Virtuelle Speichersysteme ermöglichen die Überbelegung des physischen Speichers, sodass das Verhältnis von virtuellem zu physischem Speicher 1:1 übersteigen kann. Daher können größere Programme auf Computern mit einer Vielzahl von physischen Speicherkonfigurationen ausgeführt werden. Die Verwendung von deutlich mehr virtuellem Arbeitsspeicher als die kombinierten durchschnittlichen Arbeitssätze aller Prozesse kann jedoch zu einer schlechten Leistung führen.
Die Min.-Serverspeicher - und max. Serverspeicheroptionen sind erweiterte Optionen. Wenn Sie die Systemgespeicherte Prozedur sp_configure verwenden, um diese Einstellungen zu ändern, können Sie dies nur tun, wenn erweiterte Optionen auf 1 festgelegt ist. Diese Einstellungen werden sofort ohne Serverneustart wirksam.
Ausführen mehrerer Instanzen von SQL Server
Wenn Sie mehrere Instanzen des Datenbankmoduls ausführen, gibt es drei Ansätze, mit denen Sie Arbeitsspeicher verwalten können:
Verwenden Sie den maximalen Serverspeicher , um die Speicherauslastung zu steuern. Legen Sie maximale Einstellungen für jede Instanz fest, wobei Sie darauf achten, dass das Gesamtkontingent nicht mehr als der gesamte physische Arbeitsspeicher auf Ihrem Computer ist. Möglicherweise möchten Sie jeder Instanz Speicher proportional zu ihrer erwarteten Arbeitslast oder Datenbankgröße zuteilen. Dieser Ansatz hat den Vorteil, dass beim Starten neuer Prozesse oder Instanzen sofort freier Arbeitsspeicher zur Verfügung steht. Der Nachteil ist, dass keine der ausgeführten Instanzen den verbleibenden freien Arbeitsspeicher nutzen kann, wenn Sie nicht alle Instanzen ausführen.
Verwenden Sie min. Serverspeicher , um die Speicherauslastung zu steuern. Legen Sie mindesteinstellungen für jede Instanz fest, sodass die Summe dieser Mindestwerte 1 bis 2 GB kleiner als der gesamte physische Arbeitsspeicher auf Ihrem Computer ist. Auch hier können Sie diese Mindestwerte proportional zur erwarteten Auslastung dieser Instanz festlegen. Dieser Ansatz hat den Vorteil, dass, wenn nicht alle Instanzen gleichzeitig ausgeführt werden, die ausgeführten Instanzen den verbleibenden freien Arbeitsspeicher verwenden können. Dieser Ansatz ist auch nützlich, wenn auf dem Computer ein weiterer speicherintensiver Prozess vorhanden ist, da sql Server zumindest eine angemessene Menge An Arbeitsspeicher erhalten würde. Der Nachteil ist, dass es beim Starten einer neuen Instanz (oder eines anderen Prozesses) einige Zeit dauern kann, bis die ausgeführten Instanzen Arbeitsspeicher freigeben, insbesondere, wenn sie geänderte Seiten zurück in ihre Datenbanken schreiben müssen.
Nichts tun (nicht empfohlen). Die ersten Instanzen, die mit einer Workload dargestellt werden, weisen in der Regel den gesamten Arbeitsspeicher zu. Instanzen im Leerlauf oder später gestartete Instanzen können mit nur einer minimalen Menge an verfügbarem Arbeitsspeicher betrieben werden. SQL Server versucht nicht, die Speicherauslastung über Instanzen hinweg auszugleichen. Alle Instanzen reagieren jedoch auf Windows-Speicherbenachrichtigungssignale, um die Größe ihres Speicherbedarfs anzupassen. Windows gleicht den Arbeitsspeicher nicht über Anwendungen hinweg mit der Speicherbenachrichtigungs-API ab. Sie liefert lediglich globales Feedback zur Verfügbarkeit des Arbeitsspeichers auf dem System.
Sie können diese Einstellungen ändern, ohne die Instanzen neu zu starten, sodass Sie ganz einfach experimentieren können, um die besten Einstellungen für Ihr Verwendungsmuster zu finden.
Bereitstellen des maximalen Arbeitsspeichers für SQL Server
| 32-Bit | 64-Bit | |
|---|---|---|
| Herkömmlicher Speicher | Bis zur Verarbeitung des Grenzwerts für den virtuellen Adressraum in allen SQL Server-Editionen: 2 GB 3 GB mit /3gb Boot-Parameter* 4 GB auf WOW64** |
Bis zur Verarbeitung des Grenzwerts für den virtuellen Adressraum in allen SQL Server-Editionen: 8 TB auf x64-Architektur |
* /3gb ist ein Betriebssystemstartparameter. Weitere Informationen finden Sie in der MSDN Library.
**WOW64 (Windows unter Windows 64) ist ein Modus, in dem 32-Bit-SQL Server auf einem 64-Bit-Betriebssystem ausgeführt wird. Weitere Informationen finden Sie in der MSDN Library.
Beispiele
Beispiel A
Im folgenden Beispiel wird die max server memory Option auf 4 GB festgelegt:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO
Beispiel B. Ermitteln der aktuellen Speicherzuordnung
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;
Siehe auch
Überwachen und Optimieren der Leistung
RECONFIGURE (Transact-SQL)
Serverkonfigurationsoptionen (SQL Server)
sp_configure (Transact-SQL)