Ich weiß, dass SQL RAM mag, es aber freigibt, wenn Windows danach fragt. Ich weiß, dass SQL so funktionieren soll. Ich habe jedoch einen Windows-Administrator, der nicht überzeugt ist, dass SQL tatsächlich den Arbeitsspeicher zurückgibt, und auf diesem bestimmten (virtuellen) Server benötigt SQL nach Abschluss von Analysis Services nicht viel, aber auf diesem Server gibt es nichts, was die Mühe macht Fragen Sie SQL nach viel.
Daher versuche ich, den Windows-Administratoren zu versichern, dass Probleme mit der virtuellen Umgebung nicht "weil SQL zu viel RAM verwendet" sind, aber ich kann SQL nicht davon überzeugen, es freizugeben, ohne den Dienst neu zu starten.
Bei der Verarbeitung von Cubes beansprucht der SQL-Dienst gerne 8 GB RAM. Da jedoch kein Druck auf ihn ausgeübt wird, wird an einem normalen Tag nicht viel davon freigegeben. Die Windows-Leute schreien, und es wäre viel schöner, wenn SQL dies veröffentlicht.
Ich möchte nicht die maximale Speichereinstellung verwenden, da SQL bei der Verarbeitung tatsächlich so viel RAM verwenden soll. Ich möchte nur, dass es danach wieder runter geht.
Es ist möglicherweise ein Duplikat sowohl SQL Server nicht Speicher Freigabe und von SQL Server Reclaiming Speicher , aber ich frage mich , ob es eine andere Antwort. Das Warten auf Windows, um es zurückzugewinnen, wird die Windows-Leute hier nicht überzeugen. Ein Neustart des Dienstes ist eine Option, aber ich bin wirklich kein Fan dieser Idee.
Ich möchte wissen, wie ich Windows dazu bringen kann, danach zu fragen ...
quelle
sp_configure
ist in der Regel etwas, das Sie einmal einstellen und in Ruhe lassen sollten.Antworten:
Ich glaube, Sie haben nur die Möglichkeit, den SQL-Dienst neu zu starten oder eine Anwendung auszuführen, die viel Speicher verbraucht, um die Freigabe von SQL zu erzwingen.
Ich mag den Vorschlag von @Nick Kavadias: Überwachen Sie den Leistungsindikator für Speicher: Seitenfehler / Sek ., Um zu zeigen, dass SQL den Speicher des Betriebssystems nicht unter Druck gesetzt hat.
quelle
Eine Möglichkeit, ihnen zu zeigen, dass dies der Fall ist, besteht darin, dass SQL Server den gesamten Speicher auffüllt. Kopieren Sie anschließend eine große Datei über das Netzwerk (große SQL-Sicherungsdateien eignen sich hierfür hervorragend). Dadurch füllt sich der Systemcache und Windows fragt SQL nach dem Speicher. SQL beginnt mit der Rückgabe des Speichers an das Betriebssystem, bis die minimale Speichereinstellung erreicht ist.
(Tut mir leid, ich habe nicht die gesamte Frage über Twitter erhalten, es wurden anscheinend mehr als 140 Zeichen benötigt.)
quelle
Sie erwähnen "Cubes", daher ist es nicht klar, ob Sie von einer AS-Engine oder einer relationalen Engine sprechen. Die relationale Engine kann bei Bedarf Speicher freigeben:
Wobei "Cache-Name" aus sys.dm_os_memory_clerks übernommen wird . Die Spezifikation von DBCC FREESYSTEMCACHE erwähnt nur Governor-Pools, aber es können tatsächlich viel mehr Caches entfernt werden.
Wenn jedoch der gesamte Speicher vom Pufferpool verwendet wird, führt das Entfernen des gesamten Pufferpools zu einer enormen Leistungsverschlechterung und einer enormen E / A-Last. Lassen Sie SQL dies besser selbst erledigen.
quelle
Sowohl bei der AS- als auch bei der DS-Engine können Sie eine Obergrenze für den Speicher festlegen, damit dieser unter einem sicheren Schwellenwert bleibt. Dies wird auf 64-Bit-Computern mit viel RAM und / oder mehreren SQL-Instanzen empfohlen. Wenn Sie die Speicherbeschränkung für mindestens das Datenbankmodul auf einen Wert unterhalb der aktuellen Auslastung ändern, wird der Arbeitsspeicher reduziert, ohne dass der Dienst neu gestartet werden muss. Sie sind sich jedoch nicht sicher, ob SSAS verfügbar ist.
quelle
Am einfachsten ist es, die Serverspeichereigenschaften aufzurufen, einen kleineren Wert einzugeben, anzuwenden, einige Minuten zu warten und die Konfiguration zu sichern.
Wir haben auch festgestellt, dass die Drosselung des Speichers von SQL-Servern die Leistung des Servers tatsächlich verbessern kann, da Windows dadurch mehr Speicherplatz für das Zwischenspeichern erhält, usw
quelle