Ich verwende SQL Server 2014 auf meinem Laptop zusammen mit einer Menge anderer installierter Anwendungen, von Visual Studio bis hin zu Videospielen.
Dies ist offensichtlich kein Produktionsserver, sondern nur zum Entwickeln und Debuggen.
Ich habe eine ziemlich kleine und einfache Datenbank mit ein paar Dutzend Tabellen und Ansichten erstellt - und weniger als 100 Zeilen Dummy-Daten zum Testen eingefügt.
Irgendwann habe ich versehentlich einen Index mit mehr als 100 GB erstellt, wobei einige schlecht geformte Cross-Joins verwendet wurden. Die Abfrage, mit der dieser Index erstellt wurde, verbrauchte 100% des Arbeitsspeichers in meinem Laptop (16 GB), wodurch alles zum Crawlen verlangsamt wurde. Daher habe ich die Abfrage abgebrochen und nicht Warten Sie, bis der Vorgang abgeschlossen ist, und löschen Sie dann umgehend die gesamte Datenbank, wobei dieser Index aus den Erstellungsskripten entfernt wird.
Von diesem Zeitpunkt an verbrauchte SQL Server 2014 jedoch weiterhin alle 16 GB meines Arbeitsspeichers, selbst wenn die Abfrage abgebrochen und die Datenbank gelöscht wurde.
Also habe ich meinen Laptop als nächstes neu gestartet und die RAM-Auslastung für SQL Server ist auf 7 GB gesunken - wo sie seitdem geblieben ist, unabhängig davon, ob ich alle 5 MB vorhandener Datenbanken usw. lösche oder nicht.
Ich möchte SQL Server wieder auf einen angemessenen Speicherverbrauch bringen, weiß aber nicht, wo ich nach möglichen Ursachen suchen soll.
Ich weiß, dass dies eine ziemlich offene Frage ist, aber ich bin bereit, die Beinarbeit mit ein wenig Anleitung zu erledigen.
Ich weiß nur nicht, wo ich mit der Fehlerbehebung beginnen soll, da ich selbst kein DBA bin - und anscheinend weiß Google es auch nicht. :) :)
quelle
Antworten:
Als erstes müssen Sie die maximale Speichereinstellung auf Ihrer Instanz entweder über die GUI oder über sp_configure ändern .
Gehen Sie dann in SQL Server Configuration Manager und stoppen Sie die Instanz und starten Sie sie neu. Sie müssen Ihren Laptop nicht neu starten.
Dadurch wird das Problem behoben, sodass Ihre Instanz nicht viel mehr als 1 GB verwendet. Ich bin mir ziemlich sicher, dass Speicher verwendet wird, der in dieser Einstellung nicht enthalten ist, aber keine große Menge.
SQL Server nimmt gerne Speicher für das, was es benötigt. Es ist nicht so gut, es zurückzugeben, daher ist es eine gute Idee, die maximale Speichereinstellung auf Ihrem persönlichen Laptop ziemlich niedrig zu halten, es sei denn, Sie benötigen zufällig mehr. Ich verwende die 1-GB-Einstellung für zufällige kleine Abfragen usw. und wenn ich mehr benötige, aktualisiere ich sie. Natürlich hat mein Laptop insgesamt nur 6 GB RAM.
quelle
SQL Server ist so konfiguriert, dass es auf diese Weise funktioniert. Es wird davon ausgegangen, dass Sie den Speicher erneut benötigen, wenn Sie ihn einmal benötigen. Es ist teuer, diesen Speicher ständig an das Betriebssystem zurückzugeben und erneut anzufordern. Warum also etwas an das Betriebssystem zurückgeben?
Die derzeit einfachste Lösung besteht darin, den SQL Server-Dienst einfach neu zu starten. Dadurch kehren Sie zu einer minimalen RAM-Auslastung zurück, die sich erst erhöht, wenn Sie erneut Daten / Indizes erstellen.
Sie sollten jedoch auch den maximalen Serverspeicher festlegen, wie Kris oben ausgeführt hat. Etwas weniger als 16 GB (Entschuldigung, dafür gibt es keine "richtige Antwort").
quelle