SQL Server maximaler Speicher, Auslagerungsdatei, maximaler Parallelitätsgrad


15

Drei Fragen, auf die Sie als DBA-Meister des Universums hoffentlich antworten können:


  1. Ich weiß, dass es empfehlenswert ist, den maximalen Arbeitsspeicher von SQL Server festzulegen. Wenn auf einem Server mit 44 GB RAM SQL Server installiert ist, sollten Sie den maximalen Speicher von SQL Server auf ca. 37 GB festlegen.

Was sollten wir jedoch festlegen, wenn SQL Analysis Service und SQL Reporting Services auf demselben Server wie SQL Server installiert sind? Ist es dann besser, den maximalen Arbeitsspeicher von SQL Server auf 22 GB RAM einzustellen, damit Analysis die anderen 22 GB RAM aufnehmen kann?


  1. Was ist auf einem Server mit SQL Server mit 44 GB RAM die beste Vorgehensweise zum Festlegen der Größe der Auslagerungsdatei? Ich habe auf Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ ) Folgendes gelesen :

SQL Server benötigt keine riesige Auslagerungsdatei. Wenn Sie andere Anwendungen auf dem Server installieren (was wir nicht empfehlen - SQL Server sollte isoliert sein). Möglicherweise benötigen Sie eine größere Auslagerungsdatei. Wenn SQL Server der einzige wichtige Dienst ist, der auf der Box ausgeführt wird, erstellen wir normalerweise eine Auslagerungsdatei mit einer Größe von 2 GB auf dem Systemlaufwerk.

Microsoft sagt, wir sollten das Seitendateisystem, das verwaltet wird, auf das 1,5-fache des Arbeitsspeichers einstellen, was den Empfehlungen von Remus entspricht (siehe -> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with) -großer Widder / ).

Auf unserem Server mit 44 GB RAM ist SQL Server neben SQL Analysis Service und SQL Reporting Services installiert. Welche Größe sollten wir die Auslagerungsdatei festlegen?


  1. Für SharePoint, den SQL Server, der Teil der SharePoint-Farm ist und in dem SharePoint die Datenbanken speichert, sollte der maximale Parallelitätsgrad auf 1 festgelegt werden. Jetzt haben wir einen Server, der nicht Teil der SharePoint-Farm ist (nennen wir ihn sql2) Auf unserem Server sind SQL Server, SQL Analysis und Reporting installiert. SharePoint speichert seine Datenbanken nicht auf diesem Server. Es wurden jedoch Berichts- und Analysedatenbanken / Cubes erstellt, in die SharePoint liest und schreibt.

Brent Ozar sagt:

Faustregel: Stellen Sie hier die Anzahl der physischen Kerne in einem einzelnen NUMA-Knotensockel (Prozessorsockel) auf Ihrer Hardware oder weniger ein

Was sollten wir auf dieser SQL Server-Instanz für einen maximalen Grad an Parallelität konfigurieren, wenn sie 4 VCPUs hat?


Ich hoffe, ihr gebt nicht nur mir, sondern mehr SQL-Administratoren ein bisschen mehr Einblick in die Best Practices als der Dschungel in den Interwebs.

Antworten:


12

Ihre drei Fragen berühren max memory, page fileund max dop setting.

MAX. SPEICHER


Wenn es sich bei dem Server nur um einen dedizierten SQL Server ohne Analysis Services handelt (da SSAS ein weiteres Biest ist), sind die von Glenn empfohlenen Best Practices ein guter Ausgangspunkt . Weitere Informationen zum Konfigurieren des maximalen Speichers finden Sie in Jonathans Blog .

Ich habe auf SQL Server Maximum und Minimum Memory Configuration geantwortet . Dies ist hilfreich, wenn auf Ihrer Serverinstanz viele SSIS-Pakete ausgeführt werden.

Auslagerungsdatei


Normalerweise stelle ich es nicht C:\auf das Laufwerk, auf dem genügend Speicherplatz vorhanden ist. Ich stimme der Empfehlung von Remus und Brent zu. Es sollte so sein PAGE FILE FOR SQL SERVER = 1.5 * RAM. Eine Auslagerungsdatei ist hilfreich, wenn Sie sich in einer Situation befinden, in der Sie ein FULL MEMORY DUMP (normalerweise von Microsoft CSS angefordert) zur Fehlerbehebung benötigen.

Lesen Sie die Informationen zum Ermitteln der geeigneten Auslagerungsdateigröße für 64-Bit-Versionen von Windows KB 889654 sorgfältig durch, und Buck Woody spricht hier über Auslagerungsdateien .

MAX DOP-Einstellung


Für Sharepoint wird empfohlen, maxdop = 1die Einstellung instanzweit vorzunehmen . Für einen normalen SQL-Server empfehle ich Folgendes: Was ist eine gute, wiederholbare Methode zur Berechnung von MAXDOP unter SQL Server? Ich habe ein Skript geschrieben, das es für Sie berechnet.

Das Wesentliche ist unten ( KB 2806535 erwähnt dasselbe):

8 or less processors    ===> 0 to N (where N= no. of processors)
More than 8 processors  ===> 8
NUMA configured         ===> MAXDOP should not exceed no of CPUs assigned to each 
                                 NUMA node with max value capped to 8
Hyper threading Enabled ===> Should not exceed the number of physical processors.

Als Randnotiz empfehle ich Folgendes: Empfohlene Updates und Konfigurationsoptionen für SQL Server 2012 und SQL Server 2014 mit leistungsstarken Workloads


Eine Sache, die zu beachten ist, ist, dass Remus in Buck Woodys Blogpost, auf den oben verwiesen wurde, kommentiert: "Was den Tag spart, ist AWE: Für über AWE reservierten Speicher ist keine Auslagerungsdateireservierung erforderlich (da er im physischen RAM gesperrt ist und daher nicht sein kann) Die Verwendung von AWE erfolgt bei x64 automatisch. " Was bei AWE zu sein scheint, wir brauchen keine große Auslagerungsdatei.
Jason Carter

@ Kin du sagtest "Ich stimme der Empfehlung von Remus und Brent zu". Aber nachdem sie Brents Setup-Anleitung (zitiert vom OP oben) und Remus-Artikel durchgesehen haben, sind sie widersprüchlich. Ihre Antwort bezüglich der Auslagerungsdatei lässt mir also noch offene Fragen.
Magier

1
@Magier Ich tendiere dazu, die MS-Empfehlung zu befolgen, da ich mich in einer Situation befand, in der wir einen vollständigen Speicherauszug benötigen, um das Problem zu diagnostizieren. Wir wussten nicht, ob es sich um Windows- oder SQL-Server handelt. In dieser Situation ist die MS-Empfehlung am besten. Wenn Sie nicht in diese Situation geraten, gilt auch der Rat von Brent. Ich neige dazu, auf der sicheren Seite zu sein, also gehe ich mit PAGE FILE FOR SQL SERVER = 1.5 * RAM. Beantwortet das deine Frage ?
Kin Shah

3

Auf unserem Server mit 44 GB RAM ist SQL Server neben SQL Analysis Service und SQL Reporting Services installiert. Welche Größe sollten wir die Auslagerungsdatei festlegen?

Nun, zu dem, was Kin bereits erwähnt hat, schlage ich vor, Sie verwenden Perfmon Counters, um die Größe Ihrer Auslagerungsdatei zu berechnen. Ich stimme auch Remus Empfehlung zu, dass die Auslagerungsdatei das 1,5-fache des RAM auf dem System betragen sollte . Diese Empfehlung berücksichtigt jedoch alle möglichen Aspekte und Szenarien sowie die „allgemeine Empfehlung“. Ich denke, Sie interessieren sich mehr für konkrete Werte. Hier ist es also

Die Auslagerungsdateibedürfnisse eines einzelnen Systems hängen von der Rolle des Servers, der Auslastung usw. ab. Es gibt einige Leistungsindikatoren, mit denen Sie die Verwendung von privat festgeschriebenem Speicher systemweit oder pro Auslagerungsdatei überwachen können. Es gibt keine Möglichkeit zu bestimmen, wie viel des privaten festgeschriebenen Speichers eines Prozesses resident ist und wie viel in Auslagerungsdateien ausgelagert wird.

Arbeitsspeicher: Festgeschriebene Bytes: Anzahl der festgeschriebenen Bytes des virtuellen Arbeitsspeichers. Dies stellt nicht notwendigerweise die Auslagerungsdateiverwendung dar - es stellt die Menge des Auslagerungsdateibereichs dar, die verwendet würde, wenn der Prozess vollständig nicht resident gemacht würde

Speicher: Festschreibungslimit: Anzahl der Bytes des virtuellen Speichers, die festgeschrieben werden können, ohne dass die Auslagerungsdateien erweitert werden müssen.

Auslagerungsdatei :% Auslastung Prozentualer Anteil der Auslagerungsdatei, für die ein Commit ausgeführt wurde

Auslagerungsdatei :% Auslastungsspitze Höchster Prozentsatz der Auslagerungsdatei, für die ein Commit ausgeführt wurde

Verwenden Sie die obigen Zähler, um den richtigen Wert für die Auslagerungsdatei festzulegen. Sie können diesen Link lesen , um weitere Informationen zur Auslagerungsdatei zu erhalten.

Ist es dann besser, den maximalen Arbeitsspeicher von SQL Server auf 22 GB RAM einzustellen, damit Analysis die anderen 22 GB RAM aufnehmen kann?

Nein, ich glaube nicht, dass Sie hier die Betriebssystemanforderungen verpasst haben. Sie müssen zuerst den optimalen maximalen Serverspeicher für SQl Server einstellen. Dieser SE-Thread enthält weitere Details zum Festlegen des korrekten maximalen Serverspeicherwerts. Wiederum antworte ich heftig und immer auf Perfmon Counter, um zu sehen, was der optimale Wert wäre. Ich empfehle Ihnen, diesen Artikel zu lesen und die Zähler zu Rate zu ziehen, um den optimalen Wert für SSAS festzulegen. Ich habe diesen Blog einmal verwendet, um den Speicherwert für SSAS festzulegen. Ich mag SSAS nicht so sehr, daher beschränken sich meine Kommentare nur auf diesen Artikel.

Sie sollten MAXDOP = 1 für Sharepoint-Instanzen als allgemein akzeptierten Parameter beibehalten. Wenn IIRC wurde die Empfehlung allgemein akzeptiert, nachdem häufige Deadlocks aufgetreten waren, als der maximale Parallelitätsgrad auf den Standardwert eingestellt wurde


3

Alle anderen Antworten, die bisher für die Seitengröße gegeben wurden, beziehen sich auf relativ veraltete Artikel. Dieser Technet-Blog- Beitrag ist aktueller (Oktober 2015) und bietet eine detailliertere Möglichkeit zur Berechnung der idealen Dateigröße auf modernen Systemen.

Sie stellen klar, dass die alte Faustregel von 1,5 x RAM nicht mehr gilt.

Ich habe den Kerninhalt dieses Artikels unten eingefügt, um eine Linkfäule zu vermeiden.

Beachten Sie, dass sie empfehlen, Messdaten von Ihrem Server zu erfassen, der mindestens 1 Woche lang bei maximaler Auslastung ausgeführt wird. In der Planungs- und Implementierungsphase Ihrer Projekte sind Sie daher möglicherweise nicht in der Lage, dies zu tun, und müssen sich später in Ihrem Projekt Zeit nehmen um das zu tun.


Bei der Dimensionierung der Auslagerungsdatei müssen wir den Speicherbedarf unserer Anwendungen und die Absturzsicherungseinstellungen berücksichtigen.

Woher wissen Sie, wie viel Speicher Ihre Anwendung benötigt? Der beste Weg ist, eine Grundlinie zu nehmen.

Run Performance Monitor (Perfmon)
Go to Data Collector Sets\User Defined
Right click on User Defined and select New
Select Create Manually and next
Check Performance counter
Add the following counters:

        Memory\Committed Bytes - Committed Bytes is the amount of committed virtual memory, in bytes.
        Memory\Committed Limit - Amount of virtual memory that can be committed without having to extend the paging file
        Memory\% Committed Bytes In Use - Ratio of Memory\Committed Bytes to the Memory\Commit Limit 

Hinweis: Stellen Sie sicher, dass Sie die Informationen über einen längeren Zeitraum (mindestens eine Woche) sammeln und der Server zu Spitzenzeiten ausgelastet ist.

Die Formel für die Seitengröße sollte lauten:

(Maximaler Wert für Committed Bytes + zusätzlicher 20% -Puffer zur Aufnahme von Workload-Bursts) -RAM-Größe

Beispiel: Wenn der Server über 24 GB RAM verfügt und die maximale Anzahl festgeschriebener Bytes 26 GB beträgt, lautet die empfohlene Auslagerungsdatei: (26 * 1,2) -24) = 7,2 GB

Was ist mit dem zweiten Faktor: der Größe, die wir benötigen, um Informationen aufzuzeichnen, wenn das System abstürzt?

Die Größe des Speicherauszugs wird durch den Typ bestimmt:

Complete Memory Dump  RAM Size + 257 MB
Kernel Memory Dump  The amount of kernel-mode memory in use (on 32-bit maximum is 2 GB, on 64-bit the maximum can go up until 8 TB)
Small Memory Dump  64KB  512 KB

In den meisten Fällen ist der Kernel-Speicherauszug gut genug für die Ursachenanalyse, da ein vollständiger Speicherauszug nur in bestimmten Fällen erforderlich ist, z. B. um zu sehen, was im Benutzermodus passiert ist.

Nach meiner Erfahrung ist die Größe für den Kernelspeicherauszug normalerweise wie folgt:

On System with up to 256GB RAM =  8-12 GB size for Kernel Memory dump
On System with up to 1.5TB RAM = 8-32 GB size for Kernel Memory dump

Diese Zahlen sind jedoch KEINE offizielle Empfehlung von Microsoft und können auf Ihren Servern unterschiedlich sein. Testen Sie sie daher immer, bevor Sie sich bewerben.


2

Antworte, weil ich einer der Leute bin, die du zitierst, heh.

1. Auf was sollte ich den maximalen Arbeitsspeicher einstellen, wenn ich auch Analysis Services ausführe?

Sie werden dort keine Anleitung finden, da SSAS genau wie jede andere App auf Ihrem SQL Server installiert wird: Wir wissen nur nicht, wie viel Speicher Sie verwenden werden. Behandeln Sie SSAS / SSIS / SSRS als Anwendungen von Drittanbietern - sie sind einfach als "kostenlos" in der SQL Server-Box enthalten. Sie haben völlig unterschiedliche CPU-, Speicher- und Speicheranforderungen.

2. Worauf sollte ich die Größe der Auslagerungsdatei einstellen?

Meine Empfehlungen lauten, damit Windows einen Mini-Dump ausführen kann. Wenn Sie auf ein Problem stoßen, bei dem Sie den Microsoft-Support anrufen müssen, können Sie mit dem Mini-Dump beginnen. Wenn das Problem erneut auftritt und sie es nicht anhand des Mini-Dumps (oder anderer Informationsquellen wie dem Fehlerprotokoll) herausfinden können, werden Sie möglicherweise aufgefordert, auf das 1,5-fache der RAM-Größe zu wechseln.

Microsoft empfiehlt 1,5 x RAM, damit Windows einen vollständigen Speicherauszug erstellen kann, wenn Ihr System abstürzt.

Heutzutage ist es bei Servern mit 64-128-256 GB RAM normalerweise nicht ratsam, Windows anzuhalten, um den gesamten Speicherinhalt während eines Absturzes auszuschreiben. Sie möchten lieber den SQL Server wieder in Betrieb nehmen und sich eher mit den Mini-Dump-Inhalten als mit den vollständigen Inhalten befassen. Speichern Sie die vollständigen Speicherauszüge für einen späteren Zeitpunkt - Sie können in der Regel Ihre gesamte Karriere fortsetzen, ohne eine Speicherauszugsdatei mit mehr als 64 GB bei Microsoft hochladen zu müssen. (Viel Glück dabei.)

3. Auf was stelle ich MAXDOP für SharePoint ein?

Was Sie "meine" Empfehlungen nennen, stammt von Microsoft KB 2806535 . Beginnen Sie dort im Allgemeinen, aber wenn eine bestimmte Anwendung Ihnen etwas anderes sagt, dann wissen sie etwas über ihre Anwendung, das sich von SQL Server im Allgemeinen unterscheidet - befolgen Sie dies.

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.