Was sind in diesem Anwendungsfall die richtigen Einstellungen für Min-Memory und Max-Memory?
Der Server verfügt über 8 GB RAM, zwei Intel Xeon-Prozessoren, auf denen Windows Server 2008 R2 / SQL Server 2008 Standard Edition ausgeführt wird. Es werden mehrere Datenbanken mit einer Größe von 30 GB bis 5 GB ausgeführt.
Ursprünglich war die Speichernutzung auf die Standardeinstellungen eingestellt (min = 0 max = 2.147.483.647). Bei diesen Einstellungen wurde der größte Teil der Speichernutzung von sqlservr.exe beansprucht, und der Server musste schließlich jeden oder jeden zweiten Tag neu gestartet werden. Es würde zunächst normal ausgeführt, aber innerhalb eines Tages beginnt das Zeitlimit für einfache Vorgänge wie das Nachschlagen eines Datensatzes mit dem Primärschlüssel.
Ich habe min = 4.096 und max = 6.144 geändert. Dies führt zu einer Speicherauslastung von nur 1,4 GB. Jetzt laufen jedoch alle vier CPUs konstant mit einer CPU-Auslastung von 50-60%. Die Ausführung von Aufgaben dauert ungefähr 1/3 länger, obwohl der Server viel stabiler ist.
Antworten:
Wenn Sie sich die RAM-Verfügbarkeit für diesen bestimmten Server ansehen und mehrere Datenbanken von 30 GB bis 5 GB ausführen, benötigen Sie definitiv mehr RAM auf diesem Server.
Sie haben nicht erwähnt, dass dies eine eigenständige Instanz ist oder auf diesem Server mehr als eine Instanz eines SQL-Servers ausgeführt wird.
Ihre MAX-Speichereinstellungen scheinen für einen Server mit 8 GB RAM in Ordnung zu sein. Sehen Sie sich diese empfohlenen Best-Practice-Einstellungen von Glenn Berry an .
Ich würde Ihnen dringend empfehlen, eine Basislinie Ihrer Umgebung mit den folgenden PERFMON-Zählern zu erstellen, um einen guten Wert Ihrer Speicherkonfiguration zu erhalten:
Gesamtserverspeicher : Die derzeit dem Pufferpool zugewiesene Speichermenge und nicht die Gesamtspeichermenge für SQL Server
Zielserverspeicher: Ideale Größe des Pufferpools entsprechend dem maximalen Speicher für die Instanz.
Hinweis: Wenn Gesamtserverspeicher> Zielserverspeicher, wird ein Speicherdruck vorgeschlagen.
Das folgende Skript hilft Ihnen dabei, Benachrichtigungen über LOW oder HIGH Memory von
sys.dm_os_ring_buffers
- System Health Session zu finden:Einige gute Referenzen:
quelle