So gleichen Sie den SQL Server-Speicher mit dem SQL Server Analysis Services-Speicher ab

11

Wir haben viele Systeme, die dieselbe Konfiguration haben

  • Ein Server (virtuell oder physisch)
  • Ausführen von SQL Server (SQL) und SQL Server Analysis Server (AS)
  • mehrere Kerne
  • 16 GB RAM

Jede Nacht führt der SQL Server eine Verarbeitung von ca. 2-3 Stunden durch, gefolgt von 2-3 Stunden AS-Verarbeitung. Dann werden im Laufe des Tages nur die AS abgefragt.

Angenommen, dies ist ein dedizierter Server, und keine anderen Apps sind von Belang, und die beiden Verarbeitungssätze sind vollständig synchron - keine Überlappungen immer nacheinander - wie kann ich die Speicherbeschränkungen für SQL- und AS-Server am besten festlegen?

Der Grund für die Frage ist, dass, wenn ich kein Limit für SQL festlege, der gesamte Speicher belegt wird, den es kann. Mein Verständnis ist jedoch, dass SQL diesen Speicher gerne freigibt, wenn:

  • Es benutzt es nicht und

  • Ein anderer Dienst / Programm fordert es an.

Aus logischer Sicht glaube ich, dass SQL so viel nehmen kann, wie es braucht, aber ich bin mir bei AS nicht so sicher TotalMemoryLimit. Ich bin nicht sicher, ob AS sein Gedächtnis aufgeben wird. Wenn ich mehr lese, glaube ich, dass es falsch ist, alles nehmen zu lassen.

Bedeutet dies, dass ich tatsächlich Grenzen für beide setzen muss? Ich bin verwirrt darüber, was die besten Praktiken sein sollten und was wir messen müssen, wenn man bedenkt, dass sich die Prozesse nicht überschneiden.

Hoffe das macht Sinn.

Preet Sangha
quelle

Antworten:

9

Ich denke, es ist möglich, die Hände beider Dienste zu erzwingen, indem eine geplante Aufgabe oder ein Dienst ausgeführt wird, der:

(a) Beendet vor der nächtlichen Verarbeitung von SQL Server den SSAS-Dienst und erhöht den für SQL Server zugewiesenen Speicher

(b) Reduziert nach Abschluss der Verarbeitung von SQL Server den maximalen Serverspeicher und startet SQL Server neu

(c) startet SSAS

Dies setzt voraus, dass SSAS nicht online sein muss, während SQL Server verarbeitet wird. Andernfalls ändern Sie (a) von "Herunterfahren" in "Neustart" ... Solange SSAS während der Verarbeitung von SQL Server nichts aktiv tut, sollte keine Sorge bestehen, dass es Speicher zurück stiehlt.

Dies setzt auch voraus, dass jeder Dienst den Speicherverbrauch überlappen und denselben Speicher zu unterschiedlichen Zeiten verwenden soll. Ich bin sicher, dass es Möglichkeiten mit Affinität / NUMA usw. gibt, den Betriebsbereich vollständig zu trennen oder im schlimmsten Fall zu hosten sie auf verschiedenen Maschinen.

Aaron Bertrand
quelle
Ich denke, vielleicht sollten wir SQL auch nach der SASS-Verarbeitung neu starten - da es große Lesevorgänge ausführt (Data Warehouse).
Preet Sangha
Denken Sie darüber nach - wirkt sich der Neustart von SQL Server nicht tatsächlich auf die gesamte SQL-Verarbeitung aus?
Preet Sangha
1
@Preet ja, ist das nicht der Punkt?
Aaron Bertrand
7

Müssen SQL und SSAS jemals gleichzeitig ausgeführt werden? Wenn nein, sind Sie 100% sicher?

Ich würde versuchen, die Speichereinstellung für SQL und SSAS festzulegen, um zu sehen, ob sie miteinander kooperieren können.

Wir müssen etwas Speicher für das Betriebssystem, andere Prozesse und mehrseitige Zuordnungen belassen. Vielleicht 4G?

Versuchen Sie so etwas ...

Stellen Sie auf der SQL-Seite den maximalen Serverspeicher auf 12 GB und den minimalen Serverspeicher auf 6 GB ein.

Setzen Sie auf der SSAS-Seite TotalMemoryLimit auf 12G und LowMemoryLimit auf 6G.

Aktivieren Sie außerdem "Seiten im Speicher sperren" nicht.

Versuchen Sie einige Iterationen und passen Sie diese Zahlen nach oben oder unten an.

Wenn dies einfach nicht funktioniert und Sie sicher wissen, dass SQL und SSAS nicht gleichzeitig ausgeführt werden müssen, würde ich Aarons Vorschlag versuchen, Jobs so zu planen, dass Dienste ein- und ausgeschaltet werden.

Steven
quelle