Auf meiner Entwicklungsbox habe ich meinen SQL Server mit einer hohen maximalen Speichermenge (8 GB von 16 GB) konfiguriert. Dies ist für viele Entwicklungsaufgaben erforderlich.
Manchmal möchte ich jedoch meine Erinnerung zurück. Ich möchte nicht, dass 8 GB dauerhaft verbraucht werden.
Was ist ein guter Weg, um SQL Server dazu zu bringen, plötzlich seinen gesamten Speicher für das Betriebssystem freizugeben?
DBCC DROPCLEANBUFFERS
macht das nicht . Es markiert lediglich saubere Puffer als verfügbar.
Das Neustarten von SQL Server ist ein Problem, da aufgrund dieses Fehlers / dieser Funktion eine 1-minütige Datenbankwiederherstellung ausgeführt wird: Wenn Sie den SQL Server-Dienst stoppen, werden die Datenbanken nicht ordnungsgemäß heruntergefahren (stimmen Sie für dieses Verbindungselement ab; dies scheint ein schwerwiegender Fehler zu sein). .
quelle
Antworten:
Ich erhöhe und verkleinere routinemäßig die Konfigurationsoption für den maximalen Serverspeicher für die SQL Server 2005-2016-Instanzen, die auf meinem Laptop ausgeführt werden (mit aktivierten Sperrseiten im Speicher). Hat mir nie Probleme bereitet und der Speicher scheint immer schnell freigegeben zu werden. Ich stoppe, starte und starte Instanzen auch nach Bedarf, indem ich sie benötige (mit SQL Server Configuration Manager, den ich offen halte).
Wie Sie den Checkpoint konfigurieren, hängt von der Version ab . Ein manueller Prüfpunkt mit einem Dauerziel ist seit 2005 verfügbar (obwohl er in späteren Versionen zweifellos effektiver ist).
Durch Ausführen eines manuellen Prüfpunkts
<duration>
pro Datenbank vor dem Herunterfahren können Sie die E / A-Last verteilen und die Wiederherstellungszeit beim Start verkürzen. Durch verwaltetes Checkpointing wird auch die E / A reduziert, die erforderlich ist, wenn eine Speicherverkleinerung angefordert wird, da weniger schmutzige Seiten in den dauerhaften Speicher geschrieben werden müssen. Es hat keinen besonderen Vorteil, saubere Puffer zu löschen, bevor die maximale Speichereinstellung, die ich bemerkt habe, reduziert wird.Wenn Sie "Seiten im Speicher sperren" nicht verwenden, kann dies die Rate erhöhen, mit der SQL Server Speicher freigeben kann. Ich verlasse mich jedoch darauf, um zu vermeiden, dass SQL Server-Speicher auf die Festplatte übertragen wird. Wenn Sie es für diesen Zweck nicht benötigen, können Sie es auch ohne ausführen.
quelle
Da Sie sagten, Sie möchten Speicher auf dem DEV-Computer freigeben, können Sie die folgende Abfrage verwenden
Beachten Sie jedoch die obigen Befehle
won't cause SQL Server process to release memory committed it would just clear caches
. Das erleben Sie.Nachdem Sie die obige Abfrage ausgeführt haben, können Sie den maximalen Server-Speicher von SQL Server auf einen niedrigeren Wert ändern (in Ihrem Fall 4-5 GB). Dadurch werden SQL Server-Prozesse gezwungen, Speicher freizugeben, und der Speicherverbrauch wird erneut gesenkt DEV-Maschine. Das Ändern des maximalen Serverspeichers erfordert keinen Neustart. Die andere Sache ist der Neustart des SQL Server-Dienstes. Dadurch werden die Caches definitiv gelöscht und der vom SQL Server-Prozess gehaltene Speicher wird freigegeben. Nach dem Neustart von SQL Server wird jedoch möglicherweise nach einiger Zeit der gesamte Speicherplatz beansprucht.
quelle
Beenden Sie den SQL Server-Dienst (MSSQLSERVER) und starten Sie ihn neu. Macht den Trick.
quelle
"Restarting SQL Server is a problem because this causes a 1 minute database recovery to be run"