Warum verbraucht SQL Server mehr Serverspeicher?

36

SQL Server belegt 87,5% meines Server-RAM. Dies verursachte in letzter Zeit viele Leistungsengpässe wie Langsamkeit. Ich habe dieses Problem untersucht. Eine häufige Lösung, die ich im Internet finden könnte, ist das Festlegen der Höchstgrenze für SQL Server. Dies wurde getan und es werden viele Verbesserungen erzielt. Ich möchte wissen, warum SQL Server die Ressourcen weiterhin verbraucht, wenn der maximale Speicherwert nicht festgelegt ist

kombo
quelle
3
Wie haben Sie festgestellt, dass die Verwendung von RAM durch SQL Server die Ursache für Engpässe ist? Langsamkeit in was? Wenn überhaupt, sollte SQL Server effizienter sein, wenn er so viel RAM wie möglich verwendet (oder sogar mehr, als Sie erwarten oder möchten). Und wenn Sie andere Anwendungen auf dem Server haben, die unter der Speicherbelegung von SQL Server leiden (wie vorgesehen), verschieben Sie sie auf einen anderen Server .
Aaron Bertrand
Ich habe die Methode hier verwendet .
Nikita Kosousov

Antworten:

48

SQL Server belegt so viel Speicher, wie Sie zulassen . Standardmäßig umfasst diese Zahl 100% Ihres numerischen Speichers auf Ihrem Computer. Deshalb sehen Sie, was Sie sehen. Wenn Sie SQL Server 24 GB Arbeitsspeicher zur Verfügung stellen, verwendet SQL Server 24 GB Arbeitsspeicher. Dann haben Sie SQL Server und das Betriebssystem kämpfen um Ressourcen, und es wird immer zu einer schlechten Leistung führen.

Wenn Sie das max server memoryKonfigurationslimit festlegen , begrenzen Sie, wie viel SQL Server für den Pufferpool reservieren kann (virtuell dort, wo Datenseiten und der Prozedurcache gespeichert werden). In SQL Server gibt es noch andere Sachbearbeiter, sodass Sie für Ihre bestimmte Version (2008 R2 und niedriger) max server memorynur den Pufferpool steuern. Dies wird jedoch immer der größte Speicherkonsument sein.

TechNet-Referenz zu den Auswirkungen des minimalen und maximalen Serverspeichers

Die Konfigurationsoptionen min server memory und max server memory legen obere und untere Grenzen für die vom Pufferpool des Microsoft SQL Server-Datenbankmoduls verwendete Speicherkapazität fest.

Was die Frage betrifft , wie viel Speicher ich für das Betriebssystem belassen soll, ist dies eine häufig diskutierte Metrik. Es hängt wirklich alles davon ab, welche anderen Prozesse auf dem Server ausgeführt werden . Vorausgesetzt, es ist ein wirklich dedizierter Server (und das ist fast nie der Fall). Ich würde gerne mindestens 4 GB Arbeitsspeicher für das Betriebssystem sehen (und noch mehr für große Hardware-Boxen). Am wichtigsten ist jedoch, dass Sie überwachen, wie viel nicht verwendeter Speicher vorhanden ist. Seien Sie liberal und geben Sie SQL Server mehr Arbeitsspeicher, wenn Sie feststellen, dass viel verfügbarer (über Perfmon zu überwachender) und nicht verwendeter Arbeitsspeicher vorhanden ist (wobei für diese Eckensituationen immer ein kleiner Puffer übrig bleibt).

Thomas Stringer
quelle
11

SQL Server verwendet standardmäßig den gesamten Arbeitsspeicher auf dem Server. Der Grund dafür ist, dass SQL Server die Daten in der Datenbank im RAM zwischenspeichert, so dass es schneller auf die Daten zugreifen kann, als dies der Fall wäre, wenn die Daten jedes Mal von der Festplatte gelesen werden müssten, wenn ein Benutzer sie benötigt. Wenn wir jedes Mal auf die Datenträger zugreifen müssten, wenn SQL Server immer wieder dieselben Daten benötigte, wären die E / A-Anforderungen für die Datenträger wahnsinnig hoch.

Normalerweise empfehle ich, etwa 4 GB RAM für Windows zu belassen. Dies hängt jedoch davon ab, wie viel Software auf dem Server ausgeführt wird, welche Komponenten von SQL Server Sie verwenden (nicht alle Komponenten folgen dieser Einstellung) usw.

mrdenny
quelle
6

Dies funktioniert sofort, ohne dass ein Neustart von SQL erforderlich ist:

Serverspeicher Serverkonfigurationsoptionen

Verwenden Sie die beiden Serverspeicheroptionen Min. Serverspeicher und Max. Serverspeicher , um die vom SQL Server-Speichermanager verwaltete Speicherkapazität (in Megabyte) für eine Instanz von SQL Server neu zu konfigurieren. Standardmäßig kann SQL Server die Speicheranforderungen dynamisch basierend auf den verfügbaren Systemressourcen ändern.

Vorgehensweise zum Konfigurieren einer festen Speichermenge So legen Sie eine feste Speichermenge fest:

  1. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf einen Server und wählen Sie Eigenschaften.
  2. Klicken Sie auf den Speicherknoten.
  3. Geben Sie unter Serverspeicheroptionen den Betrag ein, den Sie für den minimalen Serverspeicher und den maximalen Serverspeicher benötigen.

Verwenden Sie die Standardeinstellungen, damit SQL Server die Speicheranforderungen dynamisch basierend auf den verfügbaren Systemressourcen ändern kann. Die Standardeinstellung für den minimalen Serverspeicher ist 0 und die Standardeinstellung für den maximalen Serverspeicher ist 2147483647 Megabyte (MB).

Ich hoffe das hilft!

Nikita Kosousov
quelle
1

SQL Server verwendet den verfügbaren Arbeitsspeicher, sofern Sie keine Obergrenze für die Verwendung festlegen. In der Regel versuche ich, nicht weniger als 2 GB für das Betriebssystem frei zu lassen, dh wenn Sie 64 GB physischen RAM auf dem Host haben, begrenzen Sie SQL Server mit 62 GB.

http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx

Eric Higgins
quelle