Maximale Speichereinstellung in SQL Server


11

Ich verwende SQL Server 2008 und eine webbasierte Anwendung auf einem einzelnen dedizierten Server mit nur 2 GB verfügbarem Speicher.

Wie an anderer Stelle erwähnt, belegt SQL Server regelmäßig bis zu 98% des physischen Speichers, was die auf dem Server ausgeführte Webanwendung zu verlangsamen scheint.

In den Servereigenschaften in SSMS wird unter Speicher der maximale Serverspeicher (in MB) auf 2147483647 festgelegt SQL Server

Meine Frage ist, welche Nummer sollte angesichts des verfügbaren Arbeitsspeichers in der maximalen Serverspeicherbox angegeben werden und dass auf demselben Server auch die Webanwendung ausgeführt wird?

Ist es außerdem sicher, diese Nummer zu ändern, während SQL Server ausgeführt wird?

Danke für deinen Rat.


2
Ein kürzlich von mir geschriebener Artikel über Speicherüberschreibung auf SQL-Servern kann für Sie hilfreich sein.
Jon Seigel

Antworten:


13

Ich werde zuerst die letzte Frage beantworten: Ja, Sie können sie ändern, während der Server ohne Probleme läuft. Wenn Sie den Wert über SQL ändern möchten, können Sie dies mit der folgenden Abfrage tun

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

Auf dieser Seite finden Sie weitere Informationen zum Festlegen des Speichers auf dem SQL Server.


Ihre erste Frage lautet leider: Ich kann es Ihnen nicht sagen, ich bin nicht da.

Es gibt 1.000.000 Dinge, die Sie bei der Zuweisung von Speicher berücksichtigen müssen. Wie groß sind die Ergebnismengen der Abfragen, wie oft werden sie ausgeführt? Wäre eine Abfrage, die früher 20 ms dauerte, in Ordnung, um jetzt 200 ms zu dauern?

In den Standardeinstellungen von SQL wird davon ausgegangen, dass dies das einzige ist, was auf dem Server ausgeführt wird. Daher wird der Speicher nur auf MAX_VALUE gesetzt und wächst nicht mehr, wenn der gesamte verfügbare Speicher verwendet wird (und auf dedizierter Hardware, die ziemlich nahe an dem liegt, was Sie möchten) (siehe) Aarons Kommentar für eine mögliche Einschränkung)). Normalerweise befindet sich jeder Webserver oder jede andere Software, die mit der Datenbank interagiert, auf einer anderen Hardware, die über das Netzwerk mit ihr kommuniziert.

Sie müssen es wirklich nur auf einen Wert einstellen, den Sie für vernünftig halten, und wenn Ihr Webserver immer noch überlastet ist, senken Sie ihn. Wenn SQL Ihnen nicht genügend Leistung bietet, nachdem Sie dem Webserver den benötigten Speicher zur Verfügung gestellt haben, müssen Sie entweder mehr RAM kaufen oder SQL auf dedizierte Hardware verschieben.


2
Es gibt einen schönen Bericht in SSMS über SQL Server-Speicher: blogs.msdn.com/b/buckwoody/archive/2007/10/17/… Sie können verfolgen, welcher Teil den meisten Speicher
verbraucht

1

Sie sollten SQL Server niemals erlauben, den gesamten Speicher auf der Box zu belegen. Dies hängt davon ab, was auf dieser Box ausgeführt wird und wie viel Speicher die Box hat, aber ich stelle immer sicher, dass ich 10% des Speichers für das O belasse \ S.


0

In meiner jetzigen Firma, in der ich angestellt bin, verwende ich immer die minimalen und maximalen Einstellungen für SQL Server. Das Maximum, wenn der Server nur für SQL Server verwendet wird, stelle ich immer auf MAX-Speicher ein - 1 GB für das Betriebssystem. Das Minimum in unserem Fall bei 2 GB.

Das ist aber für unsere Installationen bewiesen. Nicht jede Installation und Verwendung ist gleich, und ich habe immer noch das Gefühl, dass der Speicher immer nicht das tut, was Sie wollen;)

Könnte in Ihrem Fall eine bekannte Sache sein, aber auch das Austauschen von Erinnerungen. Wenn Sie nur 2 GB auf dem Server haben und das Betriebssystem und der SQL Server unter einer "hohen Last" ausgeführt werden, wird der Speicherverbrauch zu hoch, wenn das Betriebssystem dazu neigt, etwas auszutauschen. Stellen Sie sicher, dass sich Ihre Auslagerungsdatei (en) nicht auf dem Betriebssystemlaufwerk befinden. Andernfalls könnte es zu einem vollständig gestauten System kommen (war schon einmal dort und hat es nicht gefallen).


-1

Ich habe gerade "max server memory" auf dem Live-Server ohne Probleme geändert. Scheint, als wäre es standardmäßig in allen Datenbanken auf 2147483647 eingestellt (aber ich weiß nicht, wie ich den Wert vor der Änderung tatsächlich aus SQL lesen soll) ...


-2

Halten Sie sich in 99% der Fälle an die Standardeinstellungen. Dies ermöglicht eine dynamische Speicherverwaltung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.