Skalieren von Datenbanken mit billigen SSD-Festplatten


25

Ich hoffe, dass viele von Ihnen mit datenbankgestützten Websites mit hohem Datenaufkommen arbeiten und die Wahrscheinlichkeit groß ist, dass Ihre wichtigsten Skalierbarkeitsprobleme in der Datenbank liegen. Ich habe in letzter Zeit ein paar Dinge bemerkt:

  1. Die meisten großen Datenbanken erfordern ein Team von Datenbankadministratoren, um skaliert werden zu können. Sie haben ständig mit den Einschränkungen von Festplatten zu kämpfen und erhalten sehr teure Lösungen (SANs oder große RAIDs, häufige Wartungsfenster für Defragmentierung und Neupartitionierung usw.) zu steil für mich :)

  2. Schließlich haben wir mehrere Unternehmen wie Intel, Samsung, FusionIO usw., die gerade damit begonnen haben, extrem schnelle und dennoch erschwingliche SSD-Festplatten auf Basis der SLC-Flash-Technologie zu verkaufen. Diese Laufwerke sind in zufälligen Lese- / Schreibvorgängen 100-mal schneller als die besten rotierenden Festplatten auf dem Markt (bis zu 50.000 zufällige Schreibvorgänge pro Sekunde). Ihre Suchzeit ist so gut wie Null, daher sind die Kosten für zufällige E / A dieselben wie für sequentielle E / A, was für Datenbanken fantastisch ist. Diese SSD-Laufwerke kosten etwa 10 bis 20 US-Dollar pro Gigabyte und sind relativ klein (64 GB).

Es scheint also eine Möglichkeit zu geben, die hohen Kosten für die Skalierung von Datenbanken auf herkömmliche Weise zu vermeiden, indem einfach ein ausreichend großes RAID 5-Array von SSD-Laufwerken erstellt wird (was nur ein paar tausend Dollar kosten würde). Dann ist es uns egal, ob die Datenbankdatei fragmentiert ist, und wir können uns 100 Mal mehr Schreibvorgänge auf der Festplatte pro Sekunde leisten, ohne die Datenbank auf 100 Spindeln verteilen zu müssen. .

Interessiert sich sonst noch jemand dafür? Ich habe ein paar SSD-Laufwerke getestet und kann meine Ergebnisse teilen. Wenn jemand auf dieser Site bereits seinen E / A-Engpass mit SSDs behoben hat, würde ich gerne Ihre Kriegsgeschichten hören!

PS. Ich weiß, dass es viele teure Lösungen gibt, die die Skalierbarkeit verbessern, zum Beispiel die bewährten RAM-basierten SANs. Ich möchte klarstellen, dass selbst 50.000 USD für mein Projekt zu teuer sind. Ich muss eine Lösung finden, die nicht mehr als 10.000 USD kostet und deren Implementierung nicht viel Zeit in Anspruch nimmt.


Dave, NXC und Burly,

Vielen Dank für Ihre Antworten! Ich möchte klarstellen, dass das Wort "billig" in meiner Situation sehr wichtig ist. Ich muss also billige Dell-Server verwenden (4.000 US-Dollar für 2950 mit nur 8 Speicherbänken). Ich habe bereits 32 GB RAM installiert, daher kann ich die Skalierung nicht auf diese Weise fortsetzen. Außerdem werden Sie durch das Hinzufügen von RAM nicht vor Festplatten-WRITE-Engpässen geschützt, was momentan mein Hauptproblem ist.

Früher beschäftigte ich mich mit der Lebensdauer von SSDs, aber nachdem ich mich mit den modernen Algorithmen für den Verschleißausgleich befasst habe, bin ich mir ziemlich sicher, dass diese Laufwerke lange genug halten werden. Meine Datenbank schreibt 300 GB pro Tag und soll 2009 mehr als 1 TB pro Tag erreichen. Die Enterprise-SSDs sind für die Verarbeitung von etwa 10 TB Schreibzugriff pro Tag über mehrere Jahre ausgelegt.

Ich würde Burlys Argument nicht zustimmen, dass die Migration von SAS auf SSD zu viel Arbeit erfordert. Meine Datenbank ist ein synchroner Spiegel, sodass ich eine Seite des Spiegels aktualisieren und dann einige Monate lang beobachten kann. Wenn er ausfällt, kann ich ein Failover auf den zweiten Server durchführen, auf dem sich noch die alten guten SAS-Festplatten befinden.


2
Übrigens, während Sie angeben, wie die verbesserte Leistung möglicherweise die Hardwarekosten senken würde, können Sie nicht klar ausdrücken, wie die SSDs Ihre Hauptkosten senken würden - den Arbeitsaufwand. Ich gehe davon aus, dass sich wahrscheinlich die Tatsache abzeichnet, dass eine Reduzierung der Installationsgröße Ihren Personalbedarf verringern kann
Burly,

2
Meine Datenbank lief 3 Jahre lang ohne Vollzeit-DBAs oder Berater. Dann stieg die Last bis zu dem Punkt, an dem wir auf E / A-Engpässe stoßen. Daher muss ich möglicherweise viel Geld an die Datenbankadministratoren zahlen, um die Datenbank zu partitionieren und zu defragmentieren. Oder einfach ein paar billige SSDs kaufen.
Dennis Kashkin

Ich habe meine Antwort aktualisiert, um die von Ihnen hinzugefügten Kostenbeschränkungen zu erörtern. Abhängig von Platzbedarf, Größe, Leistung, Wartung und Änderungsanforderungen Ihrer Datenbank bieten SSDs möglicherweise eine kostengünstige Lösung. Das Lösungsdesign und die Kostenanalyse gehen hier über unseren Rahmen hinaus. Viel Glück!
Burly

Sie haben zu viel Koolaid getrunken, SSD ist zum Lesen bestenfalls 1,5-mal schneller als ein RAID-Laufwerk, aber das Schreiben ist langsamer als bei Magnetplatten. Ein Glasfaser-basierter SANS mit einem Hochgeschwindigkeits-RAID zerstört jede SSD, egal wie gut sie ist.
TravisO

Wollte nur teilen - wir betreiben seit 5 Monaten eine 400-GB-Datenbank auf SSDs. Diese Datenbank erhält viel Schreibaktivität (bis zu 1200 Transaktionen pro Sekunde). Bisher gab es keine Probleme, und die Leistung war im Vergleich zu RAID 10 mit SAS-Laufwerken mit 15.000 U / min erheblich besser. Die Festplatten bleiben zu 96% im Leerlauf. Angesichts der Tatsache, dass SSDs derzeit erstaunlich günstig sind (600 US-Dollar für ein 160-GB-Intel-Laufwerk), würde ich behaupten, dass dies eine bessere Möglichkeit zur Skalierung von E / A als SANs darstellt.
Dennis Kashkin

Antworten:


20

Mögliche Probleme

Derzeit habe ich einige Probleme mit der Verwendung von SSDs für Produktionsdatenbanken

  • Die meisten Datenbanktransaktionen auf den meisten Websites werden gelesen und nicht geschrieben. Wie Dave Markle sagte, maximieren Sie diese Leistung zuerst mit RAM.
  • SSDs sind neu auf dem Mainstream- und Enterprise-Markt und kein Administrator, der es wert ist, eine Produktionsdatenbank zu verschieben, für die derzeit U320-Festplatten mit 15.000 U / min in RAID5 erforderlich sind, die über Glasfaserkanäle mit einer nicht getesteten Technologie kommunizieren.
  • Die Kosten für die Forschung und das Testen der Umstellung auf diese neue Technologie, die Überprüfung ihrer Umgebung, die Aktualisierung der Betriebsabläufe usw. sind im Voraus zeit- und kostenintensiver als die meisten Geschäfte.

Vorgeschlagene Vorteile

Es gibt jedoch eine Reihe von Punkten, zumindest in Papierform, die sich für SSDs in der Zukunft eignen:

  • Geringerer Stromverbrauch im Vergleich zu einer Festplatte
  • Deutlich geringere Wärmeentwicklung
  • Höhere Leistung pro Watt im Vergleich zu einer Festplatte
  • Viel höherer Durchsatz
  • Viel geringere Latenz
  • Die meisten SSDs der aktuellen Generation haben eine Schreibfestigkeit in der Größenordnung von Millionen von Zyklen. Hier finden Sie eine etwas veraltet Artikel hier

Wenn Sie also für einen bestimmten Leistungsmaßstab die Gesamtbetriebskosten einschließlich der direkten Stromkosten und der indirekten Kühlkosten berücksichtigen, können die SSDs sehr attraktiv werden. Abhängig von den Besonderheiten Ihrer Umgebung kann die Reduzierung der Anzahl der erforderlichen Geräte für ein bestimmtes Leistungsniveau auch zu einer Reduzierung des Personalbedarfs führen und die Arbeitskosten senken.

Kosten und Leistung

Sie haben hinzugefügt, dass Sie eine Kostenbeschränkung von weniger als 50.000 USD haben und dass Sie diese wirklich unter 10.000 USD halten möchten. Sie haben auch in einem Kommentar angegeben, dass Sie einige "billige" SSDs bekommen können, ohne zu befürchten, dass die SSDs billiger sind als die DBAs oder Berater. Dies kann zutreffen, je nachdem, wie viele Stunden Sie einen DBA benötigen und ob es sich um wiederkehrende Kosten handelt oder nicht. Ich kann die Kostenanalyse nicht für Sie durchführen.

Eine Sache, bei der Sie jedoch sehr vorsichtig sein müssen, ist die Art der SSD, die Sie erhalten. Nicht alle SSDs sind gleich. Im Großen und Ganzen sind die "billigen" SSDs, die Sie für 200-400 US-Dollar (20.11.2008) kaufen, für Umgebungen mit geringem Stromverbrauch und geringer Wärmeentwicklung wie Laptops gedacht. Diese Laufwerke weisen tatsächlich niedrigere Leistungsniveaus auf als Festplatten mit 10 KB oder 15 KB U / min - insbesondere für Schreibvorgänge. Die Laufwerke der Enterprise-Klasse, von denen Sie sprechen, wie die Mtron Pro-Serie, sind recht teuer. Derzeit sind sie in der Nähe:

  • 400 USD für 16 GB
  • 900 USD für 32 GB
  • 1400 USD für 64 GB
  • 3200 USD für 128 GB

Abhängig von Ihren Platz-, Leistungs- und Redundanzanforderungen können Sie leicht Ihr Budget sprengen.

Wenn Ihre Anforderungen beispielsweise insgesamt 128 GB verfügbaren Speicherplatz erforderten, wäre RAID 0 + 1/10 oder RAID 5 mit 1 Hotspare ~ 5600 US-Dollar

Wenn Sie jedoch eine TB verfügbaren Speicherplatzes benötigen, beträgt RAID 0 + 1/10 ~ 51.000 USD und RAID 5 mit 2 Hotspares ~ 32.000 USD.

Großes Bild

Die Installation, Konfiguration und Wartung einer großen Produktionsdatenbank erfordert jedoch eine hochqualifizierte Person. Die Daten innerhalb der DB und die aus diesen Daten bereitgestellten Dienstleistungen sind für Unternehmen mit diesen Leistungsanforderungen von außerordentlich hohem Wert. Darüber hinaus gibt es viele Dinge, die einfach nicht gelöst werden können, indem Hardware auf das Problem geworfen wird. Ein falsch konfiguriertes DBMS, ein schlechtes Datenbankschema oder eine schlechte Indizierungsstrategie können die Leistung einer DB beeinträchtigen. Schauen Sie sich hier und hier die Probleme an, die bei der Migration auf SQL Server 2008 mit Stackoverflow aufgetreten sind. Tatsache ist, dass eine Datenbank nicht nur auf der Festplatte, sondern auch auf dem RAM und der CPU eine anstrengende Aufgabe ist. Es ist eine schwierige Aufgabe, das Problem der Multi-Variate-Leistung mit Datenintegrität, Sicherheit, Redundanz und Sicherung in Einklang zu bringen.

Zusammenfassend lässt sich sagen, dass, obwohl ich denke, dass alle Verbesserungen sowohl an der Hardware- als auch an der Softwaretechnologie von der Community begrüßt werden, eine umfangreiche Datenbankverwaltung - wie die Softwareentwicklung - ein schwieriges Problem darstellt und weiterhin Fachkräfte erfordern wird. Eine gegebene Verbesserung kann möglicherweise nicht die Personalkosten ernten, auf die Sie oder ein Unternehmen hoffen.

Ein guter Ausgangspunkt für einige Recherchen könnte Brent Ozars Website / Blog hier sein . Vielleicht erkennen Sie seinen Namen - er ist derjenige, der die Stackoverflow-Crew bei ihren Leistungsproblemen mit MS SQL Server 2008 unterstützt hat. Sein Blog und seine Ressourcen, die er verlinkt, bieten einiges an Breite und Tiefe.

Aktualisieren

Stackoverflow selbst gehen für ihre Speicherung den Weg auf der Basis von Consumer-SSDs. Lesen Sie hier: http://blog.serverfault.com/post/our-storage-decision/

Verweise


Hervorragende Antwort.
NotMe

Sie haben viel zu viel Zeit damit verbracht: P
TravisO

Tolle Erklärungen. Für jeden etwas aus Holz. Gute Arbeit!
BerggreenDK

4

Wenn Sie eine sehr, sehr stark frequentierte Site haben, die von einer SSD für eine höhere Schreibleistung profitieren kann, haben Sie wahrscheinlich ein Problem mit der Lebensdauer der SSD, daher bin ich noch nicht für sie verkauft.

Was ist in diesem Zusammenhang mit Datenbanken zu tun, die eine hohe Anzahl an Lesevorgängen aufweisen? Die Antwort ist einfach: Stören Sie den Server mit so viel RAM, wie Sie aushalten können. Sie werden feststellen, dass die heißesten Tabellen sowieso fast immer im RAM-Cache gespeichert sind, und jeder große Treffer auf der Festplatte wird wahrscheinlich auf einen großen Tabellen- oder Index-Scan zurückzuführen sein, der häufig durch eine ordnungsgemäße Indizierung optimiert werden kann.


Ich würde Ihre Bemerkung zur Sorge um die Lebensdauer der SSD noch einmal wiederholen. In Bezug auf MTBF hat die SSD eine viel höhere Bewertung als eine Festplatte. In Bezug auf die Lebensdauer der Schreibzyklen - zuvor ein Problem - beträgt die aktuelle Generation mehr als 1 Million Schreibzyklen. Dies ist insbesondere in RAID-Konfigurationen kein Problem.
Burly

(Out of characters) ... Es ist nicht so, dass Sie sich keine Gedanken über die Lebensdauer einer SSD machen sollten, nur, dass die aktuellen technischen Bewertungen darauf hindeuten, dass SSDs einem HDD-Gegenstück gleich oder überlegen sind. Die Tatsache, dass SSDs nicht über jahrzehntelange Erfahrung in der Produktion verfügen, bedeutet, dass sie nicht bewiesen sind.
Burly

SSDs schreiben langsamer als HDs
TravisO

SSDs sind bei zufälligen Schreibvorgängen im Allgemeinen wesentlich schneller, insbesondere bei zufälligen 4K-Schreibvorgängen. Sie können für sequenzielle Schreibvorgänge langsamer sein, dies ist jedoch für Datenbankserver nicht unbedingt wichtig.
ChrisInEdmonton

1

Ich habe über 5 Jahre als DBA gearbeitet und über Möglichkeiten zur Verbesserung der DB-Leistung nachgedacht. Ich habe den SSD-Raum beobachtet und denke, dass sie definitiv mehr und mehr zu einer praktikablen Option werden.

Überprüfen Sie dies aus;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Es gibt auch ein neues von Acard hergestelltes Produkt namens ANS-9010, eine verbesserte Version der GC-Ramdisc, mit der Sie mit DDR2-RAM ein SATA-Laufwerk (bis zu 64 GB) mit DDR2-Sticks mit einer theoretischen Geschwindigkeit von 400 MB / s erstellen können maximal.

http://techreport.com/articles.x/16255/3

^^ Aber die andere Sache, die in diesem Artikel nützlich ist, ist, dass der ANS-9010 mit allen Spielern auf dem SSD-Markt verglichen wird und dass Intel über eine 64 GB x 25 E SSD verfügt, die mit einer Hardware-Ramdisk vergleichbar ist.

Das, was mich an der SSD beunruhigen würde, ist, dass sie bei all dem Stress, den eine große Datenbank mit sich bringen würde, erschöpft sind. Daher müssten Sie Raid verwenden, um die Laufwerke zu spiegeln, was bedeutet, dass Sie doppelt so viel bezahlen.

Und der Nachteil der Hardware-RAM-Disk ist, dass der Akku im Falle eines Stromausfalls nur so lange mit Strom versorgt wird, dass Sie eine ausgefallene Methode zur Sicherung finden müssen. Ich glaube, dass Sie auch einen Netzstecker für sie kaufen können, aber das hängt dann immer noch von Ihrer USV ab.

Ich schlage vor, dass Sie die Hardware-RAM-Festplatte für die temporäre Datenbank und die Windows-Auslagerungsdatei verwenden - und die Datenbank auf dem Intel X25-E Extreme (ca. 600 USD für 64 Gig) speichern.

Auf jeden Fall würde es schreien und uns alle sehr eifersüchtig machen.

(Erwägen Sie auch die Verwendung eines anderen ANS-9010 zum Hosten der Website.)

Prost, Dave


1

Wir haben gerade einen w2k3 r2 64bit Sql 2008-Server auf einem doppelten 2,5-Zoll-Seagate Momentus XT-Hybridspiegel zusammengestellt - 1/4 Strich für das Betriebssystem und 1/4 Strich für die DB. Also wurden 125GB für OS und 125GB für DB verwendet. bekamen 1500MB / s bis 1900MB / s seq liest. Auf einem Intel i7 2600K 3,4 GHz 8 GB


0

Es gibt Produkte auf dem Markt wie das Folgende , die so etwas tun. Wie auf dem anderen Poster zu sehen ist, führt das Hinzufügen von zusätzlichem RAM zum DB-Server zu besseren Cache-Trefferraten, wodurch der Festplattenverkehr verringert wird.

Mit Opteron-Servern mit 8 Sockeln, wie einem Sun X4600 , können Sie bis zu 256 GB RAM darin unterbringen, zu Preisen, die immer noch günstiger sind als die eines großen DBA-Teams. Sie können auch Flachdateien anstelle eines DBMS verwenden (wie dies bei dieser Firma der Fall war ), wodurch Sie eine bessere Leistung als bei einem DBMS erzielen. In diesem Fall bietet Ihnen ein SAN einen gewissen Grad an Datenintegrität. Sie müssen jedoch Ihre Datenzugriffsstrategie sorgfältig festlegen, um nicht in Unordnung zu geraten. Anscheinend machen das einige großvolumige Dotcom-Outfits. Es ist wesentlich effizienter als ein DBMS und ermöglicht es einer Hardware für Fußgänger, große Lasten zu bewältigen, und vermeidet DBMS-Lizenzgebühren.


-1

SSD-Laufwerke basieren auf NAND-Flash-Speicher (MLC oder SLC). Wenn Sie SSD-Laufwerke in einem SATA-Formfaktor (2 oder 3) kaufen, schränken Sie die Leistung ein, die Sie aus ihnen herausholen können. Normalerweise liefern SSD-Laufwerke, die auf dem schnellen Sandforce SF-1200-Controller basieren, Lesevorgänge von 220 MB / s und Schreibvorgänge von 205 MB / s - viel schneller als herkömmliche mechanische Rotationsplatten.

Wenn Sie jedoch zu einer PCIe-Lösung wie FusioIO wechseln, bei der der langsame SATA 2- oder SATA 3-Anschluss fehlt, sehen Sie Lösungen, die 10-50-mal schneller sind als rotierende mechanische Bulls (ich meine Festplatten).

Entscheiden Sie sich für Ihre "billige" Lösung für eine SATA 2/3 SDD, die auf dem Sandforce SF-1200-Controller basiert. Dies führt zu einer Verbesserung der Geschwindigkeit um das 3-5-fache (basierend auf der Erfahrung aus der Praxis). Wenn Sie das Budget haben, dann entscheiden Sie sich für den FusioIO. An Leistung ist nichts zu übertreffen. Es ist wahnsinnig schnell. Erwarten Sie jedoch, 20.000 bis 50.000 USD auszugeben.


2
Irrtum. Eine moderne SSD ist für ca. 50.000 IOPS geeignet und liefert einen Durchsatz von 580 MB. Eine SAS macht weniger als 500 IOPS. Datenbanken sind keine Dateiserver.
TomTom
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.