it-swarm.com.de

Optimale Laufwerkskonfiguration für SQL Server 2008R2

Ich habe einen ziemlich ausgelasteten Datenbankserver mit SQL Server 2008 R2, der das folgende Setup hat:

  • SATA RAID 1 (2 Laufwerke) - Betriebssystem/Programme
  • SAS RAID 10 (4 Laufwerke) - SQL-Datenbankdateien (Daten und Protokolle)
  • SAS RAID 1 (2 Laufwerke) - TempDB (Daten und Protokolle)

Angenommen, ich kann diesem Server keine zusätzlichen Laufwerke hinzufügen, habe ich die verfügbare Konfiguration optimal genutzt? Oder sollte ich hier ein anderes Schema in Betracht ziehen, bei dem Protokolle beispielsweise von den Datendateien isoliert sind?

pdate :

Für diejenigen, die weitere Hardwaredetails angefordert haben:

  • Die SATA-Laufwerke (für die Betriebssystem-/Programmpartition verwendet) sind: WD 7200 U/min 3 Gbit/s 3,5-Zoll-SATA
  • Die in den anderen Arrays verwendeten Laufwerke SAS) sind: Seagate 15K RPM 6 Gb/s 3,5-Zoll-SAS
  • Der verwendete RAID-Controller ist ein: LSI 9260-8i SAS/SATA 6 Gb 8-Port

pdate 2 :

Basierend auf dem Feedback, das ich erhalten habe, habe ich anscheinend die folgenden Optionen zur Auswahl: Ich werde das Kopfgeld an jemanden vergeben, der mir sagen kann, welches wahrscheinlich das beste ist die Umgebung, die ich skizziert habe:

  1. Lass alles so wie es ist - ich werde es wahrscheinlich nicht viel besser machen
  2. Verschieben Sie meine 2 SAS RAID 1-Laufwerke in mein vorhandenes RAID 10-Array, damit es aus insgesamt 6 Festplatten besteht
  3. Verschieben Sie meine Protokolldateien auf das SAS RAID 1 und/oder verschieben Sie TempDB (Daten oder Protokolle) zurück auf das RAID 10
19
DanP

Varianten dieser Frage tauchen regelmäßig auf:

Es gibt auch gelegentliche Brötchenkämpfe um die "Best Practice" der Daten-/Protokolltrennung.

Ohne eine detailliertere Analyse der Funktionen dieses Servers gelten dieselben Empfehlungen wie zuvor.

  • RAID 1 für OS
  • RAID 10 (6 Festplatten) für Daten/Protokolle/Tempdb

Es gibt selten einen Punkt in einem Split mit so wenigen verfügbaren Spindeln. Ein einzelnes Array mit einer größeren IOP-Kapazität nimmt in der Regel die Klumpen und Unebenheiten Ihrer Arbeitslast besser auf als zwei kleinere Arrays.

Eine Variante, die es wert sein kann, getestet zu werden, ist das Einfügen von Tempdb in das Betriebssystemlaufwerk. Tun Sie dies nur, wenn Sie über eine repräsentative Arbeitslast verfügen, die Sie wiederholt abspielen können, um einen fairen Vergleich der Konfiguration zu gewährleisten. Wenn Sie diese Anordnung in der Produktion wählen, stellen Sie sicher, dass das Tempdb-Wachstum eingeschränkt ist, damit Sie nicht versehentlich den gesamten freien Speicherplatz auf dem Betriebssystemlaufwerk belegen.

Angesichts der Tatsache, dass es sich bei Ihren Betriebssystemlaufwerken um Untersetzer mit 7200 U/min handelt, wäre ich überrascht, wenn die Tempdb-Konfiguration des Betriebssystemlaufwerks einen Nutzen hätte.

14

Es hängt alles von Ihrer Arbeitslast ab, aber mit nur 6 Laufwerken schränkt es Ihre Optionen ein. Wenn Ihre Arbeitslast für Dinge wie Sortierungen, Hash-Tabellen und Snapshot-Isolation nicht stark von Tempdb abhängt, ist es möglicherweise besser, die Laufwerke 6 SAS zusammen in RAID 10) zu verwenden Sie kennen oder haben die Metriken, um zu beweisen, dass Tempdb stark ausgelastet ist. Dann sollten Sie es so trennen, wie Sie es haben.

7
Patrick Keisler

Es hängt sehr davon ab, was Sie unter "sehr beschäftigt" verstehen: Unterschiedliche Workload-Muster (Schreiben schwer oder nicht, Massenoperationen häufig oder nicht, Ebene des gleichzeitigen Zugriffs, um nur drei der vielen Variablen zu nennen) können a haben drastische Auswirkung auf die Leistung einer bestimmten Spindelanordnung.

In einer Situation mit hohem Schreibaufwand kann das Trennen der Protokolle von den Daten einen erheblichen Unterschied bewirken, da bei jedem Schreibvorgang sowohl das Protokoll als auch die Datendateien aktualisiert werden. Wenn sich beide Dateigruppen auf demselben Spindelsatz befinden, ist daher ein erheblicher zusätzlicher Kopfwechsel erforderlich .

Ohne weitere Bezugnahme auf Ihre Arbeitslast (und die Spezifikation dieser Laufwerke und aller Controller, die sich zwischen ihnen und der Maschine befinden) würde ich gerne drei Volumes verwenden: eines für OS + -Programme und Tempdb (Daten), eines für die Hauptdatenbank Daten und die dritte für Protokolle (sowohl Tempdb- als auch Haupt-DBs).

Wenn Ihre Workloads nur sehr wenig mit Schreibvorgängen zu tun haben, sollten Sie sich nicht zu viele Gedanken darüber machen, Daten und Protokolle getrennt zu halten, da dies nur einen geringen Leistungsunterschied darstellt und die Bereitstellung eines ganzen Volumes für sie ziemlich verschwenderisch wäre Platz.

2
David Spillett

Die tatsächliche Antwort hängt von Ihren Anforderungen ab, aber im Allgemeinen ist "Daten speichern und auf verschiedenen Arrays anmelden" von höherer Bedeutung als "Tempdb auf ein eigenes Array setzen".

Angesichts der Anzahl der verfügbaren Laufwerke wäre mein Ausgangspunkt:

  1. Zwei Laufwerke, RAID 1 - Betriebssystem, ausführbare Dateien, Auslagerungsdatei.
  2. Vier Laufwerke, RAID 5 - Alle Datendateien (alternativ RAID 1 + 0)
  3. Zwei Laufwerke, RAID 1 - Alle Protokolldateien

Verwenden Sie SQLIO , um die Leistung verschiedener Laufwerkskonfigurationen zu testen.

2