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:
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 :)
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.
quelle
Antworten:
Mögliche Probleme
Derzeit habe ich einige Probleme mit der Verwendung von SSDs für Produktionsdatenbanken
Vorgeschlagene Vorteile
Es gibt jedoch eine Reihe von Punkten, zumindest in Papierform, die sich für SSDs in der Zukunft eignen:
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:
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
quelle
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.
quelle
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
quelle
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
quelle
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.
quelle
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.
quelle