Ü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 Bytes

  • 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 Seiten/s-Leistungsindikator gibt die Anzahl der Seiten an, die entweder aufgrund von schweren Seitenfehlern vom Datenträger abgerufen oder auf den Datenträger geschrieben wurden, um Speicherplatz im Workingset 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 Seiten/s-Leistungsindikator kann auf überhöhte Auslagerungen hindeuten. Überwachen Sie den Leistungsindikator Speicher: Seitenfehler/s, um sicherzustellen, dass die Datenträgeraktivität nicht durch Auslagern 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. Wenn Sie bestimmen möchten, ob SQL Server oder ein anderer Prozess der Grund für die überhöhten Auslagerungen ist, überwachen Sie den Leistungsindikator Prozess: Seitenfehler/s für die SQL Server-Prozessinstanz.

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

Isolieren des von SQL Server verwendeten Arbeitsspeichers

In der Standardkonfiguration werden Arbeitsspeicheranforderungen von SQL Server basierend auf den verfügbaren Systemressourcen dynamisch geändert. Wenn SQL Server mehr Arbeitsspeicher benötigt, wird das Betriebssystem nach der Verfügbarkeit von freiem physischen Arbeitsspeicher abgefragt. Anschließend wird der verfügbare Arbeitsspeicher verwendet. Wenn SQL Server den derzeit zugeordneten Arbeitsspeicher nicht benötigt, wird der Arbeitsspeicher für das Betriebssystem freigegeben. Sie können die Option zur dynamischen Verwendung des Arbeitsspeichers jedoch auch mithilfe der Serverkonfigurationsoptionen min server memory und max server memory ü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: Arbeitsseiten

  • SQL Server: Puffer-Manager: Puffercache-Trefferquote

  • SQL Server: Puffer-Manager: Datenbankseiten

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

Der Arbeitsseiten-Leistungsindikator gibt die Menge an Arbeitsspeicher an, die von einem Prozess verwendet wird. Wenn dieser Wert konstant unter der Menge an Arbeitsspeicher liegt, die in den Serveroptionen Min. Serverarbeitsspeicher und Max. Serverarbeitsspeicher festgelegt ist, wurde SQL Server so konfiguriert, dass zu viel Arbeitsspeicher beansprucht 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 Serverspeicher gesamt (KB)-Leistungsindikator gegenüber der auf dem Computer verfügbaren Menge an physischem Arbeitsspeicher konstant hoch ist, kann dies bedeuten, dass zusätzlicher Arbeitsspeicher erforderlich ist.

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;