SQL Server gibt keinen Speicher zurück - bleibt bei der Einstellung für den maximalen Serverspeicher

7

Ich bin der einzige, der an diesem Server arbeitet, und habe die Dokumentation zur Optimierung der SQL-Speichernutzung befolgt, als ich sah, dass SQL den gesamten verfügbaren Speicher des Servers verwendet.

Einer der Schritte, die ich ausgeführt habe, besteht darin, die maximale Speichergröße auf 20 GB festzulegen (Server zu Testzwecken mit 32 GB Speicher).

Nach der Optimierung verwendete SQL Server gestern nur 3-4 GB, aber heute hat es wieder die maximale Speicherauslastung erreicht, die ich zugewiesen habe.

Warum behält SQL Server alle 20 GB bei? Was passiert, wenn Benutzer den Server verwenden, wenn die maximale Speichergröße bereits verwendet wird?

Sébastien
quelle

Antworten:

17

Es speichert diesen Speicher, weil Sie ihn einmal verwendet haben. Offensichtlich werden Sie ihn wahrscheinlich wieder verwenden. So funktioniert SQL Server: Es benötigt den benötigten Speicher (bis zu dem maximal zulässigen Speicher) und gibt ihn nur dann an das Betriebssystem zurück, wenn das Betriebssystem dies erfordert. Wenn Sie keinen Speicher von SQL Server zurückfordern, warum erwarten Sie dann, dass dieser aufgegeben wird? Das Zuweisen und Freigeben von Speicher ist ineffizient, und SQL Server ist nicht dafür ausgelegt, Ihnen Speicher zurückzugeben, damit Sie ihn im Leerlauf lassen können. Aus ähnlichen Gründen werden Dateien nach dem Löschen oder Reorganisieren von Daten nicht automatisch für Sie verkleinert: Vergrößerungs- / Verkleinerungsvorgänge sind teuer, und wenn die Datei morgen nur noch einmal vergrößert wird ...

Wenn Sie SQL Server auf Ihrem Laptop ausführen, auf dem Sie den Speicher für andere Aufgaben benötigen, sollten Sie eine niedrigere maximale Serverspeichereinstellung festlegen. Auf diese Weise greift SQL Server niemals in den Speicher ein, den Sie für erforderlich halten.

Wenn Sie SQL Server auf einem Server ausführen, ist dies möglicherweise das einzige auf der Box. Wenn der Server andere Anwendungen usw. hostet, die Speicher benötigen, können Sie entweder den maximalen Serverspeicher weiter reduzieren oder diese Anwendungen auf einen anderen Server verschieben. Wenn es keine anderen Anwendungen gibt, die den Speicher benötigen, warum interessiert es Sie dann, ob 20 GB, 16 GB, 12 GB oder 100 MB verwendet werden? Werden Sie den verbleibenden Speicher vorübergehend an andere Server vermieten, bis SQL Server ihn erneut benötigt? Haben Sie ihm nicht 20 GB Speicher gegeben, damit er 20 GB Speicher benötigt?

Es gibt absolut keinen Grund, warum Sie sich Sorgen machen sollten, dass SQL Server die von Ihnen angegebene Speichermenge verwendet, die in Ordnung ist. Genau so soll es funktionieren. Wenn Benutzer Abfragen für den Server ausführen, greifen sie wahrscheinlich auf Daten zu, die sich bereits im Speicher befinden (ein großer Teil der Speicherzuordnung von SQL Server besteht aus einem Pufferpool). Wenn Ihre Datenbank viel größer als 20 GB ist, können Sie die maximale Serverspeichereinstellung erhöhen, um den Speicher optimal zu nutzen und um festzustellen, wie viel E / A von dort kommt und nicht von der Festplatte (die viel langsamer ist). . Das künstliche Verringern des maximalen Serverspeichers, da Windows Ihrer Meinung nach 12 GB Arbeitsspeicher benötigt, ist wie das Paging auf die Festplatte.

Wenn auf dem Server nichts anderes ausgeführt wird, gibt es keinen Grund, warum Sie mehr als 3 oder 4 GB für das Betriebssystem benötigen und alles andere SQL Server überlassen. Auch hier sollten Sie sich keine Sorgen machen, wenn Sie den maximalen Speicher von SQL Server auf 28 GB festgelegt haben und 28 GB auch dann "verwenden", wenn alle Benutzer nach Hause gegangen sind. Dies bedeutet nur, dass am Morgen keine Arbeit erforderlich ist, um wieder auf 28 GB zu kommen.

Aaron Bertrand
quelle
1
Es sollte hinzugefügt werden, dass SQL Server einer der Server (zusammen mit Exchange) ist, die für die Skalierung ausgelegt sind. Und in größeren Installationen ist es allein. Immer. Tatsächlich hat SQL Server häufig große Festplattenlayouts sorgfältig geplant, um die richtige E / A zu erhalten. Wie Aaron sagt, gibt es einfach keinen Grund, Speicher zurückzugeben, wenn Daten zwischengespeichert werden.
TomTom