Frage Skalierung von Datenbanken mit billigen SSD-Festplatten


Ich hoffe, dass viele von Ihnen mit datenbankgestützten Websites mit hohem Datenaufkommen arbeiten und die meisten Probleme mit der Skalierbarkeit in der Datenbank liegen. Ich habe in letzter Zeit einige Dinge bemerkt:

  1. Die meisten großen Datenbanken erfordern ein Team von DBAs, um skalieren zu können. Sie kämpfen ständig mit den Einschränkungen von Festplatten und enden mit sehr teuren Lösungen (SANs oder große RAIDs, häufige Wartungsfenster zum Defragmentieren und Neupartitionieren usw.). Die tatsächlichen jährlichen Kosten für die Wartung solcher Datenbanken liegen im Bereich von $ 100K- $ 1M zu steil für mich :)

  2. Schließlich haben wir einige Firmen wie Intel, Samsung, FusionIO, etc. bekommen, die gerade angefangen haben, extrem schnelle aber erschwingliche SSD-Festplattenlaufwerke auf Basis der SLC-Flash-Technologie zu verkaufen. Diese Laufwerke sind beim wahlfreien Lesen / Schreiben 100-mal schneller als die besten rotierenden Festplatten auf dem Markt (bis zu 50.000 zufällige Schreibvorgänge pro Sekunde). Ihre Suchzeit ist praktisch Null, daher sind die Kosten für zufällige E / A-Operationen die gleichen wie für sequenzielle E / A, was für Datenbanken großartig ist. Diese SSD-Laufwerke kosten etwa 10 bis 20 Dollar pro Gigabyte und sind relativ klein (64 GB).

Es scheint also eine Möglichkeit zu geben, die riesigen Kosten der Skalierung von Datenbanken auf herkömmliche Weise zu vermeiden, indem einfach ein RAID-5-Array mit ausreichend großen SSD-Laufwerken gebaut 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 Plattenschreibvorgänge pro Sekunde leisten, ohne die Datenbank auf 100 Spindeln verteilen zu müssen. .

Interessiert sich sonst noch jemand? Ich habe ein paar SSD-Laufwerke getestet und kann meine Ergebnisse teilen. Wenn jemand auf dieser Seite seinen I / O-Engpass mit SSDs bereits gelöst hat, würde ich gerne Ihre Kriegsgeschichten hören!

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


Dave, NXC und Burly,

Danke für deine Antworten! Ich möchte klarstellen, dass das Wort "billig" in meiner Situation sehr wichtig ist. Also, ich muss billige Dell Server ($ 4K 2950s, die nur 8 Speicherbänke haben) verwenden. Ich habe bereits 32 GB RAM installiert, so kann ich nicht weiter skalieren. Außerdem spart das Hinzufügen von RAM nicht die WRITE-Engpässe der Festplatte, was momentan mein Hauptproblem ist.

Ich habe mich mit der Lebensdauer von SSDs beschäftigt, aber nachdem ich über die modernen Wear-Leveling-Algorithmen gelesen habe, bin ich mir ziemlich sicher, dass diese Laufwerke lange genug halten werden. Meine Datenbank schreibt 300 GB pro Tag und projektierte 2009 über 1 TB pro Tag. Die Enterprise-SSDs wurden entwickelt, um rund 10 TB Schreibvorgänge pro Tag über mehrere Jahre hinweg zu bewältigen.

Ich würde dem Argument von Burly nicht zustimmen, dass es zu viel Arbeit erfordert, um von SAS zu SSD zu wechseln. Meine Datenbank ist ein synchroner Spiegel, so dass ich eine Seite des Spiegels aktualisieren kann, dann sehe ich es für ein paar Monate, und wenn es bläst, kann ich auf den zweiten Server failover, der immer noch die alten guten SAS-Festplatten hat ...


25
2017-11-19 12:47


Ursprung


Während Sie angeben, wie die verbesserte Leistung die Hardwarekosten potenziell senken könnte, geben Sie nicht klar aus, wie die SSDs Ihre Hauptkosten reduzieren würden. Ich gehe davon aus, dass wahrscheinlich die Tatsache, dass eine Verringerung der Installationsgröße Ihre Personalanforderungen reduzieren kann, zu verstehen ist - Burly
Meine Datenbank lief 3 Jahre lang ohne jegliche Vollzeit-DBAs oder Berater auf der Produktion. Dann stieg die Last bis zu dem Punkt, an dem wir auf I / O-Bottlenecks stoßen. Daher muss ich DBAs möglicherweise viel Geld für die Partitionierung und Defragmentierung der Datenbank zahlen. Oder hol dir einfach ein paar billige SSDs. - Dennis Kashkin
Ich habe meine Antwort aktualisiert, um die von Ihnen hinzugefügten Kostenbeschränkungen zu besprechen. Abhängig von den Platz-, Größen-, Leistungs-, Wartungs- und Modifikationsanforderungen Ihrer DB können SSDs sicherlich eine kosteneffektive Lösung bieten. Das Lösungsdesign und die Kostenanalyse sind hier nicht möglich. Viel Glück! - Burly
Sie haben zu viel Koolaid getrunken, SSD ist im besten Fall 1,5 mal schneller zum Lesen als ein RAID-Laufwerk, aber Schreibvorgänge sind langsamer als Magnetplatten. Ein faserbasiertes SANS mit einem Hochgeschwindigkeits-RAID wird jede SSD zerstören, egal wie gut sie ist. - TravisO
Ich wollte nur teilen - wir betreiben seit 5 Monaten eine Datenbank mit 400 GB auf SSDs. Diese Datenbank erhält eine Menge Schreibaktivität (bis zu 1200 Transaktionen pro Sekunde). Wir hatten bisher keine Probleme und die Leistung war im Vergleich zu RAID 10 mit SAS-Laufwerken mit 15.000 U / min deutlich besser. Die Festplatten bleiben zu 96% im Leerlauf. Wenn man bedenkt, dass SSDs jetzt erstaunlich billig werden (600 US-Dollar für 160 GB Intel-Festplatten), würde ich behaupten, dass dies eine bessere Möglichkeit ist, I / O zu skalieren als SANs. - Dennis Kashkin


Antworten:


Mögliche Probleme

Ich habe derzeit einige Probleme mit der Verwendung von SSDs für Produktionsdatenbanken

  • Die Mehrheit der Datenbanktransaktionen auf der Mehrzahl der Websites liest nicht. Wie Dave Markle sagte, maximieren Sie diese Leistung zuerst mit RAM.
  • SSDs sind neu auf dem Mainstream- und Enterprise-Markt, und kein Administrator, der sich lohnt, wird eine Produktionsdatenbank verschieben, die derzeit 15K U320-Festplatten in RAID5 benötigt, die über Fibrechannel mit einer unbewiesenen Technologie kommunizieren.
  • Die Kosten für die Erforschung und Erprobung des Umzugs auf diese neue Technologie, die Überprüfung in ihrer Umgebung, die Aktualisierung der Betriebsverfahren usw. sind höhere Vorlaufkosten, sowohl in Bezug auf die Zeit als auch auf das Geld, die die meisten Läden zu tragen haben.

Vorgeschlagene Vorteile

Nichtsdestoweniger gibt es zumindest auf dem Papier einige Dinge, die SSD in Zukunft unterstützen:

  • Geringerer Stromverbrauch im Vergleich zu einer Festplatte
  • Viel geringere Wärmeentwicklung
  • Höhere Leistung pro Watt im Vergleich zu einer Festplatte
  • Viel höherer Durchsatz
  • Viel niedrigere Latenz
  • Die meisten SSDs der aktuellen Generation haben in der Größenordnung von Millionen Zyklen Schreibdauer, so dass die Schreibdauer kein Problem ist, wie es einmal war. Siehe einen etwas veralteten Artikel Hier

Bei einem bestimmten Leistungs-Benchmark können die SSDs sehr attraktiv werden, wenn Sie die Gesamtbetriebskosten einschließlich der direkten Strom- und indirekten Kühlkosten berücksichtigen. Darüber hinaus kann die Reduzierung der Anzahl der erforderlichen Geräte für ein gegebenes Leistungsniveau auch zu einer Verringerung des Personalbedarfs und damit zu einer Reduzierung der Arbeitskosten führen.

Kosten und Leistung

Sie haben hinzugefügt, dass Sie eine Kostenbeschränkung unter $ 50K USD haben und Sie wirklich unter $ 10K behalten möchten. Sie haben auch in einem Kommentar gesagt, dass Sie einige "billige" SSDs bekommen können, ohne dass die SSDs billiger sind als die DBAs oder Berater. Dies kann abhängig von der Anzahl der Stunden sein, die Sie für einen Datenbankadministrator benötigen, und ob es sich um wiederkehrende Kosten handelt oder nicht. Ich kann die Kostenanalyse nicht für Sie durchführen.

Aber eins musst du sein sehr vorsichtig von ist der nett von SSD bekommst du. Nicht alle SSDs sind gleich. Im Großen und Ganzen sind die "billigen" SSDs, die Sie in den $ 200-400 Dollar (2008/11/20) zum Verkauf sehen, für Umgebungen mit geringem Stromverbrauch / Wärme wie Laptops gedacht. Diese Laufwerke haben im Vergleich zu einer 10K- oder 15K-RPM-HDD tatsächlich eine geringere Leistung - insbesondere für Schreibvorgänge. Die Enterprise-Level-Laufwerke, die die von Ihnen gewünschte Killerleistung haben - wie die Mtron Pro-Serie - sind ziemlich teuer. Momentan sind sie da:

  • 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önnten Sie Ihr Budget sprengen.

Wenn beispielsweise Ihre Anforderungen insgesamt 128 GB verfügbaren Speicher erforderten, wären RAID 0 + 1/10 oder RAID 5 mit einem Hotspare ~ 5600

Wenn Sie jedoch einen TB verfügbaren Speicherplatz benötigen, dann wäre RAID 0 + 1/10 ~ 51K und RAID 5 mit 2 Hotspots wäre ~ 32K.

Großes Bild

Die Installation, Konfiguration und Wartung einer großen Produktionsdatenbank erfordert jedoch eine hochqualifizierte Person. Die Daten innerhalb der DB und die daraus resultierenden Dienstleistungen sind für Unternehmen mit diesen Leistungsanforderungen von extrem 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 Indexierungsstrategie können die Leistung einer Datenbank beeinträchtigen. Sehen Sie sich die Probleme an, die Stackoverflow bei der Migration zu SQL Server 2008 festgestellt hat Hier und Hier. Tatsache ist, eine Datenbank ist eine anstrengende Anwendung nicht nur auf der Festplatte, sondern auch auf RAM und CPU. Es ist ein schwieriges Unterfangen, das Problem der multiplen Leistung mit Datenintegrität, Sicherheit, Redundanz und Backup in Einklang zu bringen.

Obwohl ich der Meinung bin, dass sowohl die Hardware- als auch die Softwaretechnologie von der Community positiv aufgenommen wird, ist eine umfangreiche Datenbankadministration - wie die Softwareentwicklung - ein schweres Problem und erfordert weiterhin qualifizierte Mitarbeiter. Eine gegebene Verbesserung kann nicht die Kosten für die Personalreduzierung ernten, die Sie oder ein Unternehmen erhoffen.

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

Aktualisieren

Stackoverflow selbst gehen die Consumer-SSD-basierte Route für ihre Speicherung. Lesen Sie hier darüber nach: http://blog.serverfault.com/post/our-storage-decision/

Verweise


20
2017-11-19 13:29



Ausgezeichnete Antwort. - NotMe
Sie haben viel zu viel Zeit damit verbracht: P - TravisO
Tolle Erklärungen. Für alle in Holz geschnitten. Gut gemacht! - BerggreenDK


Wenn Sie eine wirklich, sehr stark frequentierte Website haben, die von einer SSD für erhöhte Schreibleistung profitieren kann, werden Sie wahrscheinlich ein Problem mit der Lebensdauer der SSD haben, also bin ich dafür noch nicht verkauft.

In diesem Sinne, was tun mit Datenbanken, die hohe Lesewerte haben? Die Antwort ist einfach: jam den Server mit so viel RAM wie Sie können Bauch. Sie werden feststellen, dass die heißesten Tabellen sowieso fast immer im RAM-Cache gehalten werden, und jeder große Treffer auf die Festplatte wird wahrscheinlich auf einen großen Tabellen- oder Index-Scan zurückzuführen sein, der oft mit der richtigen Indexierung optimiert werden kann.


4
2017-11-19 13:04



Ich würde Ihren Kommentar über das Problem der Lebensdauer der SSD noch einmal Revue passieren lassen. In Bezug auf MTBF hat die SSD eine viel höhere Bewertung als eine HDD. In Bezug auf Schreibzyklusausdauer - früher ein Problem, die aktuelle Generation ist> 1 Millionen Schreibzyklen, was dies zu einem Nicht-Problem macht, besonders in RAID-Konfigurationen. - Burly
(Keine Charaktere) ... Es ist nicht so, dass Sie sich keine Gedanken über die Lebensdauer einer SSD machen sollten. Die aktuellen technischen Bewertungen legen nahe, dass SSDs einem HDD-Pendant ebenbürtig oder überlegen sind. Die Tatsache, dass SSDs nicht über die jahrzehntelange Erfahrung in der Produktion verfügen, ist unbewiesen. - Burly
SSDs sind beim Schreiben langsamer als HDs - TravisO
SSDs sind im Allgemeinen wesentlich schneller bei zufälligen Schreibvorgängen, insbesondere bei 4K-Schreibvorgängen. Sie können für sequentielle Schreibvorgänge langsamer sein, aber das ist nicht unbedingt wichtig für Datenbankserver. - ChrisInEdmonton


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

Sieh dir das an.

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

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

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

^^ Aber die andere Sache, die in diesem Artikel nützlich ist, ist, dass es den ANS-9010 gegen alle Spieler auf dem SSD-Markt vergleicht und es sich herausstellt, dass Intel eine 64GB x25-E SSD hat, die ziemlich vergleichbar ist mit einer Hardware-Ramdisk.

Die Sache, die mich über die SSD beunruhigen würde, ist, sie mit all dem Stress zu tragen, den eine große DB durchmachen würde, und so müsste man RAID benutzen, um die Laufwerke zu spiegeln, was bedeutet, dass du doppelt so viel bezahlst;

Und der Nachteil bei der Hardware-Ramdisk ist, dass die Batterie, im Falle eines Stromausfalls, nur so lange antreibt, dass man sich etwas einfallen lassen muss, um sie abzusichern. Ich glaube, dass man für sie auch einen Netzstecker kaufen kann, der aber immer noch auf die USV angewiesen ist.

Ich schlage vor, dass Sie den Hardware-RAM-Disk für die temporäre DB und Windows-Swap-Datei verwenden - und legen Sie die Datenbank auf dem Intel X25-E Extreme (ca. 600 USD für 64 Gig).

Jedenfalls würde es schreien und den ganzen Rest von uns sehr eifersüchtig machen.

(Überlegen Sie auch, ob Sie ein anderes ANS-9010 zum Hosten der Website verwenden)

Prost, Dave


1
2018-03-19 14:16





Wir haben gerade einen w2k3 r2 64bit Sql 2008 Server auf dem Dual 2.5in Seagate Momentus XT Hybridspiegel zusammengestellt - 1/4 Takt für OS und 1/4 Strich für DB. Also waren 125GB für OS und 125GB für DB. wurden 1500 MB / s bis 1900 MB / s Seq liest. Auf einem Intel i7 2600K 3.4Ghz 8GB


1
2018-06-26 05:08





Es gibt Produkte auf dem Markt wie Dieses das macht so etwas. Wie das andere Poster schon sagt, erhöht das Hinzufügen von zusätzlichem RAM zum DB-Server die Cache-Trefferraten, was den Festplattenverkehr verringert.

8-Socket-Opteron-Server wie z Sun X 4600 Damit können Sie bis zu 256 GB RAM für Preise verbuchen, die immer noch günstiger sind als ein großes DBA-Team. Sie könnten auch die Verwendung von flachen Dateien anstelle eines DBMS in Erwägung ziehen (z. B. diese Firma hat), die Ihnen bessere Leistung als ein DBMS geben wird. In diesem Fall bietet ein SAN eine gewisse Datenintegrität. Allerdings müssen Sie Ihre Datenzugriffsstrategie sorgfältig planen, um sich nicht in Unordnung zu verlieren. Scheinbar machen das einige großvolumige Dotcom-Outfits. Es ist erheblich effizienter als ein DBMS, erlaubt ziemlich fußgängerfreundliche Hardware, große Lasten zu handhaben, und vermeidet DBMS-Lizenzgebühren.


0
2017-11-19 13:22





SSD-Laufwerke basieren auf NAND-Flash-Speicher (MLC oder SLC). Wenn Sie SSD-Laufwerke in einem SATA (2 oder 3) Formfaktor kaufen, begrenzen Sie die Leistung, die Sie aus ihnen erhalten können. Typischerweise liefern SSD-Laufwerke, die auf dem schnellen Sandforce SF-1200-Controller basieren, 220 MB / Sekunde Lesevorgänge und 205 MB / Sekunde Schreibvorgänge - viel schneller als eine altmodische mechanische rotierende Festplatte.

Wenn Sie jedoch zu einer PCIe-Lösung wie FusioIO wechseln, die nicht über den langsamen SATA 2- oder SATA 3-Anschluss verfügt, suchen Sie nach Lösungen, die 10-50 Mal schneller sind als rotierende mechanische Bullen (ich meine Festplatten).

Also für Ihre "billige" Lösung, gehen Sie mit einem SATA 2/3 SDD basierend auf dem Sandforce SF-1200 Controller. Dies wird Ihnen eine 3- bis 5-fache Geschwindigkeitsverbesserung bringen (basierend auf realen Erfahrungen). Wenn Sie das Budget haben, dann gehen Sie zum FusioIO. Nichts wird es in Bezug auf die Leistung schlagen. Es ist wahnsinnig schnell. Erwarte jedoch, 20.000 bis 50.000 Dollar auszugeben.


-1
2018-03-07 16:15



Irrtum. Eine moderne SSD ist für etwa 50.000 IOPS geeignet und liefert einen Durchsatz von 580 MB. Ein SAS macht weniger als 500 IOPS. Datenbanken sind keine Dateiserver. - TomTom