Ich habe eine SQL Server-Sandbox-Installation auf meinem lokalen Computer. Ich habe den Speicher festgelegt, den die SQL Server-Instanz auf 1000 MB verwenden kann. Bei einem intensiven Betrieb steigt die Speichernutzung auf bis zu 1000 MB. Wenn der Vorgang beendet ist, hält SQL Server immer noch den Speicher. Wie kann ich diese Speicherreservierung freigeben?
sql-server
memory
jrara
quelle
quelle
min server memory
undmax server memory
Einstellungen ? Sobald SQL Server das von Ihnen angegebene Minimum reserviert, wird es niemals freigegeben, es sei denn, Sie ändern die Einstellung oder bouncen die Instanz. Wie James bemerkte, sollte es theoretisch freigegeben werden, wenn es mehr als das von Ihnen angegebene Minimum reserviert, wenn es nicht benötigt wird und Speicherdruck auf der Maschine herrscht.Antworten:
Beenden / Starten des Dienstes, nichts anderes gibt den Speicher an das Betriebssystem zurück.
Offensichtlich nichts, was Sie jemals mit einem betriebsbereiten Server machen möchten, aber für eine lokale Sandbox durchaus vernünftig. Mit 3 verschiedenen Instanzen auf meinem Laptop ist dies der einzig praktikable Weg.
Bearbeiten Sie den folgenden Kommentar von @ Nick.
Was ist Ihre Definition von "braucht es nicht"? Sobald der Pufferpool gefüllt ist, werden Seiten erst dann gelöscht, wenn sie durch das Einbringen anderer Seiten ungünstig werden. Wenn Sie den Speicher sofort zurückhaben möchten, wie dies bei @jrara der Fall ist, müssen Sie aufhören /Start.
quelle
QueryMemoryResourceNotification
, um zu bestimmen, wann der Pufferpool Speicher zuweisen und Speicher freigeben kann." Wenn Sie sich also nur Sorgen machen, andere Apps zu verhungern, die möglicherweise mehr Speicher benötigen, gibt SQL Server theoretisch Speicher frei, den Windows nicht benötigt, wenn Windows dies anweist. Der einzige Grund, warum Sie eine Freigabe durch Neustart der Instanz erzwingen müssen, besteht darin, dass dieser Mechanismus nicht wie vorgesehen funktioniert oder Ihre Min / Max-Speichereinstellungen falsch sind.wird den Pool freigeben.
https://msdn.microsoft.com/en-us/library/ms178529.aspx
Bemerkungen
Durch Ausführen von DBCC FREESYSTEMCACHE wird der Plan-Cache für die Instanz von SQL Server gelöscht. Das Löschen des Plan-Cache führt zu einer Neukompilierung aller nachfolgenden Ausführungspläne und kann zu einer plötzlichen, vorübergehenden Verringerung der Abfrageleistung führen. Für jeden gelöschten Cachstore im Plan-Cache enthält das SQL Server-Fehlerprotokoll die folgende Informationsmeldung: "SQL Server hat% d Vorkommen von Cachestore-Flush für den Cachestore '% s' (Teil des Plan-Cache) aufgrund von festgestellt Operationen "DBCC FREEPROCCACHE" oder "DBCC FREESYSTEMCACHE". " Diese Nachricht wird alle fünf Minuten protokolliert, solange der Cache innerhalb dieses Zeitintervalls geleert wird.
quelle
Der nicht automatisch verwendete Speicher wird aufgegeben, da andere Apps versuchen, ihn festzuschreiben.
quelle