SQL Server gibt keinen Speicher frei, nachdem die Abfrage ausgeführt wurde
Ich glaube, ich habe eine grundlegende Frage, die hier viele erlebt haben. Wenn ich eine Abfrage ausführen, die in SQL Server geladen werden, die im Speicher alle Daten die es braucht für die Ausführung der Abfrage (zum Beispiel, wenn es eine Verknüpfung ist, dann würde es das laden der notwendigen Daten aus diesen beiden Tabellen), aber wenn die Abfrage beendet ausführen der belegte Arbeitsspeicher von SQL Server ist nicht freigegeben.
Bemerkte ich das da ein paar Tage zurück, ich war analysieren einer Abfrage, die eine Menge von tempdb
Raum. Wenn ich die Abfrage ausführen würde (Ende der Ausführung) verbrauchen bis zu 25 GB an RAM. Diese 25 GB RAM würde nicht freigegeben werden, es sei denn, ich Neustart des MSSQLSERVER
service.
Wie seid Ihr dazu SQL Server-Speicherverwaltung? Dies ist eindeutig ein Problem, richtig?
Ich würde auch gerne hören, wenn Sie etwas bestimmtes um den Speicher zu löschen verwendet, die von einem einzigen Abfrage.
Vielen Dank im Voraus!
InformationsquelleAutor der Frage Kumar Vaibhav | 2013-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
SQL Server ist in der Tat entworfen, um die Anfrage so viel RAM wie möglich, die werden nicht veröffentlicht, es sei denn, dieser Speicher ist explizit vom Betriebssystem erforderlich. Ich denke, der beste Ansatz ist die Begrenzung der Menge an RAM kann der server nutzen, damit das OS zu haben, eine bestimmte Menge von Ressourcen zu verwenden, Nein-egal-was. Um diese Wie konfigurieren Sie den Speicher-Optionen mithilfe von SQL Server Management Studio:
Können Sie auch tun es in T-SQL verwenden Sie die folgenden Befehle (Beispiel):
Einschränken, um den Verbrauch von 1 GB.
Hinweis: die oben ist nicht zu begrenzen, alle Aspekte von SQL Server, um diese Menge Speicher. Diese steuert nur die Puffer-pool-und Ausführungsplan-cache. Dinge wie CLR, Full Text, die eigentlichen Speicher verwendet, die von SQL Server .exe-Dateien, SQL-Agent erweiterte gespeicherte Prozeduren, etc. nicht über diese Einstellung gesteuert. Allerdings sind diese anderen Dinge, die in der Regel brauchen nicht viel Speicher, es ist die Puffer-pool-und Ausführungsplan-cache, die Notwendigkeit der Großteil des Speichers.
Ich hoffe, das hilft.
InformationsquelleAutor der Antwort MoonKnight
Ich auch konfrontiert gleiche Problem, die oben erwähnt.
Aber unter query in die Freigabe der RAM-Speicher aber in weniger als 5 Stunden den RAM-Speicher ist immer belegt. So ich habe wieder gewaltsam frei, den RAM-Speicher.
Führen Sie dann folgende:
2.
InformationsquelleAutor der Antwort Swami
Ich glaube nicht, dass es einen Weg gibt, um zu erzwingen, SQL-Server, freier Speicher .
Jedoch können Sie die Speichernutzung.
MSDN
InformationsquelleAutor der Antwort Mudassir Hasan
Alte Frage, aber dachte, ich würde hinzufügen meine zwei Cent. Meist ein riff auf, was in der vorigen Antwort mit dsql automatisch ein Rollback auf den vorherigen Wert nach einer Verkleinerung der Speicher. Es ist hässlich, aber es funktioniert.
InformationsquelleAutor der Antwort Jsjjharp
SQL ist eine deklarative high-level-Sprache. Es ist nicht beabsichtigt, um Ihnen zu erlauben, sich zu engagieren in das detail-auf Dinge wie Speicher-management, als würden Sie, wenn Sie wurden schreiben von code in einem niedrigeren level Programmiersprache wie C. ich glaube, Sie werden feststellen, dass, wenn es muss, dass der Speicher frei für eine andere Aufgabe wird es schnell lassen Sie es gehen.
InformationsquelleAutor der Antwort ChrisProsser