Erhöhen Sie die Einstellung für den maximalen Speicher in einer SQL Server-Produktion

7

Ich habe eine Produktionsbox mit 5 Instanzen.

Version: SQL Server 2014 SP3 Enterprise.

Ich habe festgestellt, dass die kombinierten MAX MEMORY- Einstellungen auf allen 5 Instanzen weniger als 200 GB betragen, obwohl dem Computer ~ 400 GB Speicher zugewiesen sind .

Die Instanzen leiden nicht unter Speicherdruck, aber da wir diesen Speicher bereits zugewiesen haben, ist es eine Verschwendung, ihn nicht zu verwenden.

Ich möchte es auf einen höheren Wert erhöhen und 10% für das Betriebssystem belassen (einige Instanzen werden höher zugewiesen als andere).

Ich habe diese Einstellung jedoch noch nie so stark erhöht.

Ich weiß, dass es sich um dynamische Einstellungen handelt, für die kein Neustart erforderlich ist. Ich frage mich jedoch Folgendes:

  • Sollte ich die Erhöhung in 2 Phasen vornehmen (dh die Hälfte erhöhen, eine Woche warten und dann erneut erhöhen)?
  • Kann etwas plötzlich kaputt gehen (oder die Leistung beeinträchtigen), wenn der SQL Server plötzlich so viel mehr Speicher zum Spielen hat?

Wir haben keine gesperrten Seiten in der Speichereinstellung aktiviert und wir haben kein Traceflag 834 aktiviert .

Roni Vered
quelle
Ihre Prüfpunkte (und Sicherungen) können bei einem größeren Datencache länger dauern, wenn mehr Seiten in den Speicher gebracht werden.
Dekan

Antworten:

1

Ich habe eine etwas andere Meinung.

Wenn Sie keinen Speicherdruck haben und Ihre Anwendung einwandfrei funktioniert, warum sollten Sie eine unbekannte Variable einführen (in Ihrem Fall - Erhöhung des maximalen Speichers des SQL-Servers)? Sie haben diese Änderung nicht getestet, daher besteht ein Risiko.

Wenn Ihr Server über mehr Bandbreite verfügt, können Sie weitere Instanzen auf Ihrem Server konsolidieren.

Kann etwas plötzlich kaputt gehen (oder die Leistung beeinträchtigen), wenn der SQL Server plötzlich so viel mehr Speicher zum Spielen hat?

Ja, und ich hatte ein Problem mit der Leistungsverschlechterung, da PROD mehr Speicher hatte und TF 2335 verwendete, um das Problem zu beheben .

Sie können die Antwort von Paulus für weitere Details lesen, aber das Wesentliche ist:

Die potenzielle Größe des Pufferpools wirkt sich auch auf das Kostenmodell des Optimierers für den Datenzugriff aus.

Kin Shah
quelle
Der Server hat 5 Instanzen. Wenn Sie 50 GB für das Betriebssystem belassen, bleiben 150 GB übrig, die vergrößert und in 5 Instanzen unterteilt werden können, was jeder Instanz 30 GB verleiht. Glauben Sie, dass nur eine Erhöhung um 30 GB dazu führen kann, dass der Optimierer verrückte Pläne macht? Ich bezweifle es
Shanky
Ich würde nicht empfehlen, den TF 2335 einzustellen, möglicherweise nur für eine oder zwei bestimmte Abfragen, wenn es keine andere praktische Lösung mit QUERYTRACEON gibt (und mit einer Plananleitung ist es einfacher, diesen Weg zu verfolgen). Immerhin gibt es zwischen 2008 und 2014 einen gewissen Unterschied.
Dekan
@Shanky - Ich habe gesagt, dass die Größe des Pufferpools das Kostenmodell des Optimierers beeinflusst, was zu optimalen oder suboptimalen Plänen führen kann. Wenn Sie nun x Betrag hinzufügen, wird dies ausgelöst? Weder Sie noch ich können das sagen, ohne es zu testen, da es von vielen Faktoren abhängt.
Kin Shah
@ Dean für einen großen Pufferpool, insbesondere für 2014, haben wir viele Abfrage-Regressionen gesehen. Traceflag kann auf Server- oder Abfrageebene mithilfe von Abfragehinweisen verwendet werden. Es liegt an OP zu testen und zu entscheiden, ob weniger Abfragen betroffen sind oder nicht. Daher ist seitens OP eine gute Menge an Tests erforderlich. In meinem Fall habe ich es als Abfragehinweis verwendet, und als ich den richtigen Index erstellt habe, musste ich dieses Trace-Flag nicht verwenden.
Kin Shah
@Kin Nicht viele in meiner Erfahrung (und in meiner Branche beschäftige ich mich mit vielen Unternehmenskunden). Wenn die Kardinalitätsschätzungen in Ordnung sind und geeignete Indizes vorhanden sind, wird dieser TF (fast) nie benötigt (zumindest in neueren Versionen). Ich musste es nie einstellen. Natürlich könnten immer einige Randfälle existieren.
Dekan
0

Sie können den maximalen Server-Speicher von SQL Server jederzeit ändern. Wenn Sie dies jedoch tun, werden der SQL Server-Plan, die Daten und andere Caches geleert. Dies bedeutet, dass neue Abfragen, die auf den SQL Server gelangen, erneut durch den Prozess der Erstellung des Abfrageplans geleitet werden, was möglicherweise einige Zeit entscheidend sein wird. Wenn Sie dies wirklich tun möchten, informieren Sie die Stakeholder darüber, dass Sie den maximalen Serverspeicher ändern möchten, und tun Sie dies, wenn die Auslastung relativ gering ist. Bitte informieren Sie die Benutzer auch darüber, dass die Ausführung einiger Abfragen aufgrund des kalten Caches beim ersten Durchlauf möglicherweise länger dauert.

Sollte ich die Erhöhung in 2 Phasen vornehmen (dh die Hälfte erhöhen, eine Woche warten und dann erneut erhöhen)?

Tun Sie es einfach, wenn Sie die Genehmigung erhalten und wenn die Last relativ gering ist, müssen Sie dies nicht in Phasen tun.

Kann etwas plötzlich kaputt gehen (oder die Leistung beeinträchtigen), wenn der SQL Server plötzlich so viel mehr Speicher zum Spielen hat?

Die Dinge werden nicht kaputt gehen, aber ja, da der Cache geleert ist, brauchen einige Abfragen möglicherweise mehr Zeit, um beim ersten Durchlauf ausgeführt zu werden.

Wir haben keine gesperrten Seiten in der Speichereinstellung aktiviert.

Ich schlage vor, dass Sie dies speziell tun, wenn 5 Instanzen ausgeführt werden. Eine Instanz sollte aufgrund einer Rouge-Abfrage / eines Rouge-Prozesses nicht den gesamten Speicher belegen dürfen. Es ist besser, die maximale Grenze für alle SQL Server-Instanzen festzulegen. Beachten Sie auch, dass SQL Server in einigen Fällen mehr als das maximale Limit verbrauchen kann. Das Hinzufügen von LPIM erfordert "SQL Server-Neustart"

Ideale Situation: Wenn Sie planen, LPIM hinzuzufügen, und an diesem Punkt den maximalen Serverspeicher ändern, haben Sie Zeit, da Sie keine Probleme haben.

Shanky
quelle
Danke für die schnelle Antwort. Die Maschine ist virtuell, daher finde ich auf einer VM ständig unterschiedliche Meinungen zu LPIM. Vielen Dank für den Hinweis auf dem Cache-Flash. Es ist in der Tat am besten, auf unser Wartungsfenster zu warten und nicht einfach jederzeit die Einstellungsänderung vorzunehmen.
Roni Vered
Ich glaube, wenn Sie für LPIM auf VM Ihren VM-Host richtig konfiguriert haben und genügend Speicher für verschiedene Prozesse übrig haben, sollten Sie sich darüber keine Sorgen machen. Bitte lesen Sie ähnliche Antwort von mir
Shanky
Durch Erhöhen von max_server_memory werden weder Daten noch Plan-Cache geleert. Durch Verringern wird der Plan-Cache geleert und der Daten-Cache nur nach Bedarf angepasst.
Dekan
@ Dean Bist du sicher? Wenn Sie diese Antwort lesen, enthält sie einen Link zu MS doc, der besagt, dass sp_configuredie Caches geleert werden , wenn Sie die Option verwenden.
Shanky
1
@dean Sie müssen in der Tat testen, in der Zwischenzeit lesen Sie bitte DBCC FREEPROCCACHE (Transact-SQL). Sie würden sehen, dass eine Änderung des maximalen Serverspeichers den Prozedurcache löscht .
Shanky