MS SQL-Layout für beste Leistung

MS SQL-Layout für beste Leistung

Wir haben einen neuen Server gekauft, der als MS SQL-Backend fungieren soll. Ich bin gespannt, welches Setup dafür am besten geeignet wäre.

Der Server ist ein Dell R710 und verfügt über 6 Festplatten: 2x 74GB 15k und 4x 146GB 15k

Dies ist derzeit in einer RAID 1/Raid10-Konfiguration eingerichtet.

Meine Frage ist, wohin (in welches Array) das Folgende gehen soll?

TEMPDBs (auch Anzahl, Größe und Wachstum) System-DBs (Master, Modell, etc.) Anwendungs-MDFs Anwendungs-LDFs System-Page-Datei

Das Betriebssystem ist bereits auf RAID1 installiert.

Antwort1

Ich würde das Betriebssystem, die Auslagerungsdatei und LDF(s) auf dem RAID1-Array platzieren. Alles andere auf dem RAID10-Array.

Wenn Sie nicht Windows 2008 verwenden, stellen Sie sicher, dass Ihre Partitionen richtig ausgerichtet sind:

http://msdn.microsoft.com/en-us/library/dd758814.aspx

Fügen Sie, wie bereits erläutert, 1 TEMPDB-Datei pro CPU-Kern hinzu – stellen Sie sicher, dass sie alle gleich groß sind.

Passen Sie die Größe Ihrer Protokolldateien entsprechend an und erstellen Sie sie in einem Schritt.

Erwägen Sie, Ihre Datenbanken wenn möglich über eine Netzwerkfreigabe auf einem anderen Server zu sichern, um das Risiko zu verringern, dass Ihr Array komplett ausfällt und dabei Ihre Datenbank und Sicherungen mit sich nimmt.

Antwort2

TempDB

Ich habe vor einiger Zeit etwas über Tempdb-Optimierung recherchiert und meine eigene Antwort gegebenFrage zu Stackoverflow. Hier ist, was ich herausgefunden habe.

Um die Tempdb-Leistung zu optimieren, achten Sie auf die physische Festplattenkonfiguration, die Dateikonfiguration sowie einige Einstellungen innerhalb der Datenbank.

Konfiguration der physischen Festplatte

tempdb sollte sich auf seinemeigene dedizierte physische Festplatten. Dadurch können E/A-Transaktionen von den restlichen Volumes auf dem SQL Server getrennt werden.

Um tempdb auf ein neues Laufwerk zu verschieben, verwenden Sie ALTER DATABASE. Dies ist der wichtigste T-SQL-Befehl zum Ausführen dieser Operation. Microsoft bietet ein gutes Beispiel in den SQL Server 2005-Onlinebüchern. Der Artikelname lautet ALTER DATABASE (Transact-SQL) und der spezifische Abschnitt lautet„G. Verschieben von Tempdb an einen neuen Speicherort.“

Die tempdb ist eine Datenbank mit sehr vielen Schreibvorgängen. Ein RAID 5-Array ist daher nicht der richtige Ort dafür. Sie sollten die tempdbauf einem RAID 1- oder RAID 10-Arrayda sie für Anwendungen mit hohem Schreibaufkommen optimiert sind. Wenn Sie sich zusätzliche RAID 1- oder RAID 10-Arrays für jede physische Datenbankdatei für die Tempdb leisten können, erzielen Sie eine höhere Leistung.

Datenbankdateien

Du solltest habeneine physische Datei pro CPU-Kern im Server. Wenn Sie also einen Dual-Chip-, Dual-Core-Server haben, sollten Sie vier physische Datenbankdateien für die tempdb-Datenbank haben. Wenn Sie weitere Datenbankdateien hinzufügen, ist es wichtig, die Dateien auf dergleicher Ausgangsgröße und mit den gleichen WachstumseinstellungenAuf diese Weise verteilt SQL Server die Daten möglichst gleichmäßig auf die Dateien.

Datenbankdateigröße

Die Größe der tempdb-Datenbank kann die Leistung eines Systems beeinträchtigen. Wenn beispielsweise die für tempdb definierte Größe zu klein ist, kann ein Teil der Systemverarbeitungslastwird durch die automatische Vergrößerung von tempdb auf die zur Unterstützung der Arbeitslast erforderliche Größe bei jedem Neustart der Instanz von SQL Server belegtSie können diesen Mehraufwand vermeiden, indem Sie die Größe der Tempdb-Daten und der Protokolldatei erhöhen.

Die Bestimmung der geeigneten Größe für tempdb in einer Produktionsumgebung hängt von vielen Faktoren ab, einschließlich der vorhandenen Arbeitslast und der verwendeten SQL Server-Funktionen. Microsoft empfiehlt, dass Sie die vorhandene Arbeitslast analysieren, indem Sie die folgenden Aufgaben in einem SQL Server ausführenprüfenUmfeld:

  1. Aktivieren Sie „Autogrow“ für Tempdb(in einer Testumgebung!).
  2. Führen Sie einzelne Abfragen oder Workload-Trace-Dateien aus und überwachen Sie die Tempdb-Speicherplatznutzung.
  3. Führen Sie Indexwartungsvorgänge aus, z. B. das Neuerstellen von Indizes, und überwachen Sie den Tempdb-Speicherplatz.
  4. Verwenden Sie die Speichernutzungswerte aus den vorherigen Schritten, um Ihre gesamte Arbeitslast vorherzusagen. Passen Sie diesen Wert an die prognostizierte gleichzeitige Aktivität an und legen Sie dann die Größe von tempdb entsprechend fest.

Die Mindestgrößenempfehlungen für Tempdb lauten wie folgt:

  Umgebungsgröße DB-Größe (MB) Protokollgröße (MB)
  ----------- ------------ -----------
  Klein 1024 256
  Mittel 5120 1024
  Groß 10024 2048

Datenbankeinstellungen

Sie können die Leistung von tempdb weiter steigern, indem SieDeaktivieren der automatischen Statistikaktualisierung, was Ihrer Tempdb etwas Arbeit erspart. Sie können auch dieOption „Statistiken automatisch erstellen“ auf „False“.

Haftungsausschluss: Einstellungen sollten mit Vorsicht geändert werden. Je nach Art der Belastung Ihrer Tempdb kann sich das Ändern von Einstellungen negativ auf die Systemleistung auswirken.

Um eine optimale Tempdb-Leistung zu erzielen, befolgen Sie die Richtlinien und Empfehlungen inOptimieren der Tempdb-Leistung.

Wie überwacht man die Tempdb-Nutzung?

LäuftNicht genügend Speicherplatz in TempDBdürfenerhebliche Störungen verursachenin der SQL Server-Produktionsumgebung und kann verhindern, dass laufende Anwendungen Vorgänge abschließen.

Mit der sys.dm_db_file_space_usagedynamischen Verwaltungsansicht können Sie den Speicherplatz überwachen, der von diesen Features in den Tempdb-Dateien verwendet wird. Darüber hinaus können Sie die Seitenzuordnungs- oder -aufhebungsaktivität in Tempdb auf Sitzungs- oder Aufgabenebene mithilfe der sys.dm_db_session_space_usagedynamischen sys.dm_db_task_space_usageVerwaltungsansichten überwachen.

Mithilfe dieser Ansichten können Sie große Abfragen, temporäre Tabellen oder Tabellenvariablen identifizieren, die viel Tempdb-Festplattenspeicherplatz belegen. Darüber hinaus gibt es mehrere Leistungsindikatoren, mit denen Sie den in Tempdb verfügbaren freien Speicherplatz und die Ressourcen überwachen können, die Tempdb verwenden.

Links:

Antwort3

Die einfache allgemeine Antwort lautet: Alles, was hohe IO-Werte erfordert, sollte auf die RAID 10-Datenträgergruppe verschoben werden. Haben Sie sich auch für eine Partitionsstrategie oder diesen Teil der Frage entschieden?

Daher würde ich in Ihrer ersten Datenträgergruppe wahrscheinlich eine einzelne Partition (ca. 70 GB nutzbar) erstellen und das Betriebssystem und die MSSQL-Anwendung darauf platzieren.

Auf der zweiten würde ich folgende Partitionen erstellen

1) Partition für Auslagerungsdatei (hängt davon ab, wie viel Speicher Sie haben, aber ungefähr 10-20 GB 2) Partition für Transaktionsprotokolldateien 100 GB 3) Partition für Datendateien 100 GB

Dadurch bleiben etwa 50 GB übrig, die ich nicht zuweisen würde, sodass Sie entweder die Protokollpartition oder die Datenpartition erweitern können, wenn sich Ihre Anforderungen ändern.

Interessanterweise arbeite ich derzeit an einer Maschine mit genau denselben Spezifikationen, nur dass ich Linux und Oracle verwende. Sind Sie ich aus dem Paralleluniversum?

James

Antwort4

Entschuldigung, ich habe diese Frage als nicht registrierter Benutzer gestellt und kann sie jetzt nicht als beantwortet markieren. Ich warte auf eine Antwort der Administratoren, um zu sehen, ob sie mein Konto erneut mit der Frage verknüpfen können.

Um etwas mehr Einblick zu geben: Dieser Server wird keiner großen Belastung ausgesetzt sein, es handelt sich eigentlich um ein Quellcodeverwaltungs-Backend. Der Kauf eines Servers und eines DAS oder eines ISCSI SAN oder so etwas wäre übertrieben gewesen und die Kosten hätten die Projektchancen zunichte gemacht. Ich arbeite für ein KMU mit etwa 100 Mitarbeitern, daher ist unser IT-Budget besonders im Moment knapp.

@mrdenny

Wir haben die Frage an den Softwareanbieter gestellt, der diese Konfiguration empfohlen hat. Wir haben sie gekauft und als wir die Frage stellten, die ich hier gestellt habe, sagten sie, wir sollten Protokolle, Datenbanken und temporäre Datenbanken alle auf der RAID-10-Partition ablegen. Ich bin kein großer Datenbank-Fan (wirklich??), aber das klang komisch, da so ziemlich jeder weiß, dass man LDFs und MDFs nicht auf denselben Spindeln mischen sollte.

@splattne – Danke für die Einblicke in Tempdbs, das wird für diese und zukünftige SQL-Installationen nützlich sein.

@SuperCoolMoss - Ich habe mit einigen Leuten in meinem eigenen IT-Freundesnetzwerk gesprochen und sie stimmen Ihnen in diesem Punkt zu. OS, Pagefile und LDFs auf RAID1 und tempdb und MDFs auf RAID10

Vielen Dank an alle anderen, die kommentiert haben.

Nach meiner Lektüre sind dies die Grundregeln, die Sie beim Einsatz von SQL auf Festplatten befolgen sollten. Meiner Meinung nach sollten sie in dieser Reihenfolge befolgt werden. Lassen Sie mich wissen, ob Sie zustimmen oder nicht.

  1. Verwenden Sie redundante Festplatten (ziemlich offensichtlich)
  2. Verwenden Sie schnelle Festplatten (SCSI/SAS, wenn möglich 15k)
  3. Trennen Sie Ihre LDF- und MDF-Dateien auf verschiedene Spindeln
  4. Verwenden Sie kein RAID5 für LDFs oder TempDBs (verwenden Sie RAID10 oder RAID1).
  5. Platzieren Sie Ihre Tempdb auf Ihren schnellsten Spindeln. Trennen Sie wenn möglich Tempdbs von LDF- und MDF-Spindeln.

Bitte geben Sie Ihre geänderte Version dieser Liste gerne weiter.

verwandte Informationen