Freigeben über


Überwachen der Speicherauslastung

Instanzen von SQL Server sollten regelmäßig überwacht werden, um sicherzustellen, dass sich die Speicherauslastung im normalen Bereich bewegt.

Um den Arbeitsspeicherstatus niedrig zu halten, verwenden Sie bei der Überwachung folgende Objektleistungsindikatoren:

  • Arbeitsspeicher: Verfügbare Byte

  • Arbeitsspeicher: Seiten/s

Der Verfügbare Bytes -Leistungsindikator gibt an, wie viele Bytes an Arbeitsspeicher derzeit für die Verwendung durch Prozesse verfügbar sind. Der Indikator Seiten/s gibt die Anzahl der Seiten an, die entweder aufgrund von harten Seitenfehlern vom Datenträger abgerufen oder auf den Datenträger geschrieben wurden, um Speicherplatz im Arbeitssatz aufgrund von Seitenfehlern freizugeben.

Niedrige Werte für den Verfügbare Bytes -Leistungsindikator können ein Anzeichen dafür sein, dass insgesamt zu wenig Arbeitsspeicher auf dem Computer vorhanden ist oder dass eine Anwendung keinen Arbeitsspeicher freigibt. Ein hoher Wert für den Indikator Seiten/s kann auf überhöhte Auslagerungen hindeuten. Überwachen Sie den Speicher: Seitenfehler/s-Zähler, um sicherzustellen, dass die Datenträgeraktivität nicht durch Paging verursacht wird.

Ein geringes Maß an Auslagerungen (und somit an Seitenfehlern) ist normal, selbst wenn der Computer über ausreichend Arbeitsspeicher verfügt. Der Microsoft-Manager für virtuellen Arbeitsspeicher (VMM, Virtual Memory Manager) entnimmt Seiten von SQL Server und anderen Prozessen, um die Größen der Workingsets dieser Prozesse anzupassen. Infolge der VMM-Aktivität kommt es häufig zu Seitenfehlern. Um zu ermitteln, ob die überhöhten Auslagerungen von SQL Server oder einem anderen Prozess verursacht werden, sollten Sie den Prozess: Seitenfehler/s-Zähler der SQL Server-Prozessinstanz überprüfen.

Weitere Informationen zum Auflösen überhöhter Auslagerungen finden Sie in der Dokumentation des Windows-Betriebssystems.

Isolieren des von SQL Server verwendeten Arbeitsspeichers

Standardmäßig ändert SQL Server seine Arbeitsspeicheranforderungen dynamisch auf der Grundlage der verfügbaren Systemressourcen. Wenn SQL Server mehr Arbeitsspeicher benötigt, wird das Betriebssystem nach der Verfügbarkeit von freiem physischem Arbeitsspeicher abgefragt. Anschließend wird der verfügbare Arbeitsspeicher verwendet. Wenn SQL Server den derzeit zugeordneten Arbeitsspeicher nicht benötigt, gibt er den Arbeitsspeicher für das Betriebssystem frei. Sie können die Option zur dynamischen Verwendung des Arbeitsspeichers jedoch auch mithilfe der Serverkonfigurationsoptionen minservermemoryund maxservermemory überschreiben. Weitere Informationen finden Sie unter Arbeitsspeicheroptionen für den Server.

Um die Menge des von SQL Server verwendeten Arbeitsspeichers zu überwachen, sollten Sie die folgenden Leistungsindikatoren überprüfen:

  • Prozess: Arbeitssatz

  • SQL Server: Puffer-Manager: Puffercache-Trefferquote

  • SQL Server: Puffer-Manager: Datenbankseiten

  • SQL Server: Speicher-Manager: Serverspeicher gesamt (KB)

Der Indikator WorkingSet gibt die Menge an Arbeitsspeicher an, die von einem Prozess verwendet wird. Wenn diese Zahl konsistent unter der Menge des Arbeitsspeichers liegt, die durch die Serveroptionen min. und max. Serverarbeitsspeicher festgelegt wird, wird SQL Server so konfiguriert, dass zu viel Arbeitsspeicher verwendet wird.

Der Puffercache-Trefferquote -Leistungsindikator ist anwendungsspezifisch. Eine Rate von 90 Prozent oder höher ist jedoch wünschenswert. Fügen Sie so lange Arbeitsspeicher hinzu, bis der Wert konstant über 90 Prozent liegt. Ein Wert von über 90 Prozent gibt an, dass mehr als 90 Prozent aller Datenanforderungen vom Datencache erfüllt wurden.

Wenn der Indikator TotalServerMemory (KB) gegenüber der auf dem Computer verfügbaren Menge an physischem Arbeitsspeicher konstant hoch ist, kann dies bedeuten, dass zusätzlicher Arbeitsspeicher erforderlich ist.

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;