2008-10-03 8 views
15

Wir haben ein SQL 2005-Datenbank-Backend für unsere Website, derzeit etwa 10 GB groß. Es gibt viel mehr Lesevorgänge als Schreibvorgänge, obwohl ich nicht die genauen Statistiken habe.Optimales RAID-Setup für SQL-Server

Wir aktualisieren unseren Datenbankserver und ich dachte daran, 4 Festplatten zu bekommen und sie in zwei RAID 1-Arrays einzurichten - eins für die Datendateien und das andere für die Betriebssystem- und Protokolldateien. Wäre dies das optimale Setup oder wäre RAID 5 besser für die Datendateien? RAID 10 wird ein bisschen teuer und ist wahrscheinlich zu viel für uns.

Zu diesem Zeitpunkt sollte SQL Server einen Großteil der Datenbank im RAM (8GB) behalten, aber es wird wachsen, also möchte ich nicht vollständig darauf verlassen.

Edit: wir wollen auf jeden Fall Redundanz auf einem Produktionsserver, so RAID 0 selbst ist out. RAID 10 ist nett, aber könnte für uns ein bisschen teuer sein.

Antwort

16

Ihr Konzept der Verwendung unabhängiger RAID 1-Spiegel ist die richtige Strategie.

Wir haben ähnliche Szenarien bei meiner Arbeit implementiert und sie funktionieren sehr gut.

RAID 1

RAID 1 bietet Ihnen die Geschwindigkeit von 1 Platte zum Schreiben, aber 2 Scheiben zum Lesen.

Wenn Sie Daten auf einen RAID 1-Array zu schreiben, es, dass die Daten auf beiden Festplatten zu schreiben hat, so dass Sie jede Leistungssteigerung nicht gewinnen, aber das ist, wo Sie Ihre Datensicherheit erhalten.

Beim Lesen von einem RAID 1-Array liest der Controller von beiden Festplatten, da sie dieselben Daten enthalten.

RAID 5

Dies ist nützlich für größere Datenmengen zu schützen.Die Kosten von RAID 5 steigen bei gleicher Datenmenge erheblich langsamer als RAID 1 (oder RAID 0 + 1, wenn Sie Kapazitäten über die Größe der einzelnen Festplatten hinaus ausführen).

Wenn Sie 600gb mit RAID 5 schützen möchten, können Sie dies mit 4x200gb-Laufwerken oder 3x300gb-Laufwerken erreichen, die 800-900g des insgesamt gekauften Laufwerks erfordern. RAID 1 wäre 2x600GB Laufwerke erfordern 1.200GB gekauften Speicherplatz (mit 600GB Laufwerke sind sehr viel teurer) oder RAID 0 + 1 so dass Sie weniger teure Kapazität Laufwerke (dh: 4x300GB oder 6x200GB) verwenden, aber immer noch benötigt insgesamt 1.200GB gekaufter Raum.

RAID 0 + 1

Angebote ähnliche Vorteile wie RAID 1 es auf eine andere Kerbe mit dem Striping über Platten nehmen. Ich gehe davon aus, dass Sie auch Multi-Prozessoren/Multi-Cores verwenden, wenn Sie sich über höhere simultane Lesevorgänge Sorgen machen. Sie werden mehrere Abfragen gleichzeitig bearbeiten, und das Striping wird nicht so viel helfen. Sie würden einen besseren Vorteil für ein RAID 0 + 1 für einzelne Anwendungen mit großen Datendateien, z. B. Videobearbeitung, sehen.

Als ich dieses Problem vor einiger Zeit für einen Kunden recherchierte, fand ich diesen Artikel sehr interessant http://blogs.zdnet.com/Ou/?p=484. Auf der zweiten Seite erläutert er den Wechsel von einem RAID 0 + 1 zu unabhängigen RAID 1 Arrays, wodurch eine Menge an Performance-Verbesserungen erreicht wird. Dies war in einem viel größeren Maßstab (ein SAN mit 20 Festplatten und 16 Festplatten), aber die gleichen Konzepte. Es ist ein großartiges Konzept, dass SQL Server die Daten auf mehrere Volumes ausgleichen kann, anstatt nur das uninformierte Striping von RAID 0 + 1 zu verwenden.

+1

Vielen Dank für die detaillierte Antwort und Blog-Post-Link. Das ist genau die Art von Information, nach der ich gesucht habe. – EMP

+1

Siehe auch http://blogs.msdn.com/b/teamcenteronsql/archive/2010/04/27/raid-1-0-and-sql-server.aspx für die Verwendung von RAID1 mit "SQL Striping" statt von 1 + 0. –

1

Angesichts der Tatsache, dass es viel mehr Lesevorgänge als Schreibvorgänge gibt, wird RAID 5 für Ihre Datendateien schneller sein.

Wenn möglich, verwenden Sie ein separates RAID 1 + 0-Array für die Transaktionsprotokolldateien.

BEARBEITEN: Sie benötigen mindestens 3 Festplatten, um ein RAID 5-Array zu erstellen.

+0

Aber Sie erhalten eine bessere Ausbeute von 5 Festplatten, um bessere Lesezeiten zu erwähnen. Holen Sie sich einen hochwertigen Hardware-RAID5-Controller mit einem dümmlich großen Cache, und Sie werden nie bemerken, dass RAID5 langsamer ist als ein einzelner Datenträger für Schreibvorgänge, und für Lesevorgänge sind 5 Spindeln nicht zu schlagen. RAID10 für Log Ich stimme zu. –

1

Beachten Sie, dass die Schlüsselleistungsmetrik die Suchrate und nicht die Datenrate ist. Das heißt, eine typische Datenbank, die an die Festplatte gebunden ist (wie Ihre Datenbank beim Wachstum sein kann), wird durch die Anzahl der IOs pro Sekunde begrenzt, die die Festplatten unterstützen können, und nicht durch die maximale Datenrate, die sie für sequenzielle Lesevorgänge unterstützen können.

Das bedeutet, wenn Sie sich fragen, wie Sie beispielsweise 4 Festplatten verwenden, sollten zwei RAID1-Paare eine bessere Leistung als ein 4-Festplatten-RAID5-Array bieten. Natürlich werden Sie nicht so viel nutzbaren Speicher von den zwei RAID1-Paaren bekommen.

0

RAID 5 ist gut, wenn Sie einen Hardware-Controller mit einer ordentlichen Menge an batteriegestütztem Cache-RAM verwenden. Wählen Sie eine Chunk-Größe aus, und konfigurieren Sie die DB so, dass die Stripe-Größe (Datenplatten * Chunk-Größe) der DB-Schreibgröße entspricht. Stellen Sie sicher, dass Ihre Datenpartition [ist die Stripe-Größe ausgerichtet/ist ein Vielfaches von].

Ansonsten ist RAID 1 + 0 immer eine gute Wahl für DB-Server.

1

Angesichts der geringen Größe der Datenbank würde ich vier 15 Krpm 2,5 "SFF SAS-Festplatten, Setup als zwei separate RAID 1 Spiegel. Ich würde sie durch so etwas wie ein Adaptec 5805 PCI-e x 8 SAS-Controller Ich würde die Daten auf ein Array und die Logs auf ein anderes legen, um die Sicherheit zu gewährleisten: Speicher-Mapping für die gesamte Datenbank, ein sehr großes/teures SAN oder die Verwendung von SSDs Ich bin ziemlich überzeugt, dass dies nur das schnellste Setup für das Geld sein wird.

hoffe, das hilft

3

ich, damit ich ein wenig Zeit damit verbringen würde, dass Ihre Datenbank effizient indiziert ist;. überwacht es für Full Table Scans, stellen sie sicher, dass die häufigsten Abfragen so wenig Daten wie möglich zu lesen, ich würde nimm ein effizient gestaltetes da Tabase auf einem langsamen Datenträger Setup über eine Datenbank mit ungültigen Indizes für SSDs.

0

Ich würde auch empfehlen, eine Reihe von Grundlinienwerten zu erstellen, die es Ihnen ermöglichen, fundiertere Vorhersagen zu treffen, als nur den Finger in die Luft zu legen (oder StackOverflow zu fragen, scheint diesen beiden Begriffen vage und seltsam ähnlich).

Bei einigen Ausgangswerten auch die Effektivität Ihrer Änderungen und sein eine gute Grundlage für zukünftige Upgrades messen ...

(Falls nicht bekannt, einige Literatur holen (oder wikipedia) auf Performance Engineering. Es ist ein ganzer Zweig von Sachen, der sich nur mit dieser Art von Problemen beschäftigt).

1

Zwei Dinge,

Die Theorie RAID für einen Lese 1 bietet zwei Laufwerke, aber nicht‘denken, dass zwei mal die Leistung entspricht. In der Tat ist es nicht, in der Regel die sequentielle Lese-Geschwindigkeit endet genau gleich wie ein Laufwerk. Überraschend, aber wahr .... machen Sie reale Tests, verlassen Sie sich nicht auf die Theorie.

Mit dem gesagt, ich würde mit zwei RAID 1 gehen ... aber nicht wie du sagtest, eins für OS, und das andere für Daten. Ich würde eine kleine OS-Partition auf einem von ihnen haben, aber geben Sie auf jeden Fall beide Überfälle auf SQL-Server für Daten. Gib Sql Server alle Sätze, die Sie können.

SQL Server kann Streifen über die Paare, Sie wollen absolut nicht mit 0 + 1 trotz was hier jemand sagt. Sie sehen sich wieder theoretische Benchmarks an und verstehen nicht, dass SQL Server all seine Daten über die Festplatten streichen kann und dies auf eine optimierte Art und Weise tun kann.

Raid 1 ist nur für die Datenredundanz ... abgesehen davon, geben Sie so viel wie möglich auf SQL-Server, und lassen Sie es sein Ding tun ... es ist sehr gut, was es tut.

Sie haben eine 0 + 1 und brechen sie in zwei Raid 1 .... real-world testen, werden Sie überrascht sein, welche für SQL-Server-Arbeit schneller ist.

0

BTW, wo ich arbeite, haben sie eine High-End-San, die einen TableScan in etwa 2 Minuten macht. Ich habe die Laufwerke in einfache Raid 1-Sets aufgeteilt und lasse den SQL-Server mit dem Striping umgehen ... nicht mit dem San. 2 Minuten fielen auf 45 Sekunden.

es gibt andere Artikel im Netz darüber ... es ist sehr schwer, "wahre Gläubige" zu überfallen, dies zu akzeptieren, deshalb bin ich so entschieden über diesen Punkt.

+0

Sie wissen, dass die meisten SAN-Software Optionen zur Auswahl von Modi für hohe Datenbankleistung bietet. Du musst sie nur finden. Einige haben sogar prädiktive Lesevorgänge, die für die Zusammenarbeit mit Oracle und anderen entwickelt wurden. –

0

Ich bevorzuge Raid 10, die ich bereits auf meinem Dell R210-II Linux-Server konfiguriert habe. Erstaunliche Leistung ...