Freigeben über


Dynamische Arbeitsspeicherverwaltung

Die Arbeitsspeicherverwaltung von Microsoft SQL Server Database Engine (Datenbankmodul) ruft standardmäßig so viel Arbeitsspeicher wie nötig ab, ohne dass es dabei zu einem Speicherengpass auf dem System kommt. Database Engine (Datenbankmodul) verwendet dazu die für Arbeitsspeicherbenachrichtigungen verfügbaren APIs in Microsoft Windows.

Der virtuelle Adressraum von SQL Server kann in zwei verschiedene Bereiche unterteilt werden: den von Pufferpool verwendeten Bereich und den Rest. Wenn der AWE-Mechanismus aktiviert ist, kann der Pufferpool in dem AWE zugeordneten Arbeitsspeicherbereich liegen. Auf diese Weise steht zusätzlicher Arbeitsspeicher für Datenbankseiten zur Verfügung.

Der Pufferpool ist eine primäre Arbeitsspeicher-Zuordnungsquelle von SQL Server. Externe Komponenten im SQL Server-Prozess, z. B. COM-Objekte, die nicht die Möglichkeiten der Arbeitsspeicherverwaltung von SQL Server nutzen, verwenden Arbeitsspeicher außerhalb des vom Pufferpool reservierten virtuellen Adressraum.

Beim Starten berechnet SQL Server die Größe des virtuellen Adressraumes für den Pufferpool auf Grundlage verschiedener Parameter, z. B. der Größe des physischen Arbeitsspeichers des Systems, der Anzahl der Serverthreads und verschiedener Startparameter. SQL Server reserviert die berechnete Größe des virtuellen Adressraumes für den Pufferpool, verwendet jedoch nur die für die aktuelle Last erforderliche Größe an physischem Arbeitsspeicher.

Die Instanz greift dann je nach Arbeitsauslastung auf weiteren Arbeitsspeicher zu. Wenn weitere Benutzer eine Verbindung herstellen und Abfragen ausführen, ruft SQL Server dem Bedarf entsprechend zusätzlichen physischen Arbeitsspeicher ab. Eine SQL Server-Instanz ordnet so lange zusätzlichen physischen Arbeitsspeicher zu, bis entweder die Zielvorgabe max server memory erreicht ist oder Windows anzeigt, dass kein weiterer freier Arbeitsspeicher zur Verfügung steht. Die Instanz gibt Arbeitsspeicher frei, wenn die Einstellung für min server memory überschritten wird oder Windows anzeigt, dass zu wenig freier Arbeitsspeicher vorhanden ist.

Sobald weitere Anwendungen auf einem Computer gestartet werden, auf dem eine Instanz von SQL Server ausgeführt wird, benötigen sie Arbeitsspeicher, sodass der Umfang des freien physischen Arbeitsspeichers auf einen Wert unter dem SQL Server-Ziel fällt. Die Instanz von SQL Server passt ihren Arbeitsspeicherverbrauch an. Wenn eine andere Anwendung beendet wurde und mehr Arbeitsspeicher zur Verfügung steht, erhöht die Instanz von SQL Server die Größe der Arbeitsspeicherzuordnung. SQL Server kann innerhalb einer Sekunde mehrere MB Arbeitsspeicher freigeben bzw. abrufen und so schnell den zugeordneten Arbeitsspeicher anpassen.