Kennt jemand Vergleiche, die zeigen, wie SSDs mit HDDs verglichen werden, um die Leistung in einer SQL-Umgebung zu gewährleisten?
Ich versuche zu verstehen, welche Art von Leistungsvorteil durch die Umstellung auf SSD erzielt werden kann.
Kennt jemand Vergleiche, die zeigen, wie SSDs mit HDDs verglichen werden, um die Leistung in einer SQL-Umgebung zu gewährleisten?
Ich versuche zu verstehen, welche Art von Leistungsvorteil durch die Umstellung auf SSD erzielt werden kann.
Antworten:
Wenn Sie eine große Anzahl kleiner Lesevorgänge ausführen, sind SSDs viel schneller. Hier ist einer der wenigen Vergleiche zur Datenbankleistung. In der unteren Grafik finden Sie die kurze Antwort.
Für die Rohleistung bieten SSDs viele Vorteile. Der Hauptvorteil besteht darin, dass die Suchzeit effektiv 0 beträgt, was bedeutet, dass alle kleinen HD-Treffer einer Datenbank viel schneller verarbeitet werden.
Bei der aktuellen Generation gibt es jedoch einige Bedenken hinsichtlich der Schreiblebensdauer, da nach so vielen Schreibvorgängen ein Block nicht mehr verwendet werden kann. Sie können ziemlich viel schreiben, ich glaube, die Informationen sagen ein Petabyte Bytes für ihre 32-GB-Laufwerke, bevor sie gefährliche Warenniveaus erreichen ... dies wird erst mit der Zeit besser.
Lesen Sie diesen Artikel von Anandtech über SSDs , um besser zu verstehen, warum sie so viel besser funktionieren . Er geht sehr detailliert auf Laufwerke ein, was gut ist, was nicht und wie sie funktionieren. Oben befindet sich auch ein Link zu einem Folgeartikel, der die neueste Serie von Laufwerken abdeckt.
Sie können Ihr Betriebssystem und Ihre SQL-Software auf einer Standardfestplatte installieren und dann eine SSD hinzufügen, um nur Ihre Datenbankdateien zu speichern. Dies sollte die Anzahl der Schreibvorgänge auf dem SSD-Laufwerk begrenzen und den verfügbaren Speicherplatz für Ihre Daten auf dem Laufwerk maximieren.
Ich empfehle Ihnen, das folgende Dokument Migrieren von Serverspeicher auf SSDs zu lesen : Analyse von Kompromissen , es ist eine ziemlich gute Lektüre.
Meiner Meinung nach gibt es im Serverbereich noch nicht genug Vorteile von SDDs. Vielleicht sind sie in ein paar Jahren einen Kauf wert, aber für den Moment sind Festplatten die bessere Wahl.
Die Antwort von Nick Craver ist gut; Ich möchte SSDs nur zwei Vorbehalte hinzufügen, von denen ich denke, dass die Leute sich dessen bewusst sein sollten:
a) Die Probleme der SSD mit dem Schreibverschleiß verschwinden nicht, sie sind für die verwendeten Flash-Zellen von grundlegender Bedeutung . SLC-Zellen haben eine viel höhere Schreibdauer als MLC, daher sollte das OP in Betracht ziehen, ein SLC-Laufwerk über MLC zu erhalten. Natürlich ist SLC auch deutlich teurer.
b) Aktuelle Laufwerke speichern Daten auf dem Laufwerk, bevor sie ausgeschrieben werden. Daher besteht die Gefahr eines Datenverlusts, wenn die Stromversorgung während eines Schreibvorgangs unterbrochen wird . Es ist etwas, das Sie umgehen können, aber der Cache dient sowohl der Leistung als auch der Reduzierung der Schreibverstärkung.
IMHO sind keine der oben genannten Dealbreaker. Ich wäre bereit, SSDs heute für die Produktion bereitzustellen, aber mit etwas Planung zuerst.
Einige Dinge zu beachten.
Wenn Sie die Datenbank so stark erreichen, dass Ihre Lesevorgänge langsamer werden und Sie SSDs benötigen, müssen Sie Ihre Indizes korrigieren oder versuchen, dem Server mehr RAM hinzuzufügen.
Die meisten Datenbankserver benötigen nach vollständiger Optimierung keine SSDs, um ordnungsgemäß zu funktionieren.
Lesen Sie diesen Artikel (ziemlich alt - 2009):
Zusammenfassung: Ersetzen Sie SAS-Laufwerke mit 24 x 15.000 U / min durch 6 (ja sechs) SSDs und erhalten Sie dennoch 35% mehr Leistung. Dies war bei Intel X25Ms der Fall, die für SSDs nicht mehr der Spitzenreiter sind.
Für Datenbankleute ist dies fantastisch, da Sie kleinere, schnellere Server mit weniger Strom haben können.
Eine zu berücksichtigende Sache ist, das Transatcion-Protokoll auf einer Festplatte und Ihr MDF auf einer SSD zu haben. Auch die Lebensdauer hängt stark vom Anwendungstyp ab. OLTP kann jedoch schnell brennen, wenn relativ statische Daten keine Probleme haben sollten.
Meine eigenen Erfahrungen waren hier gemischt ...
Testen unter Windows 7 mit SQL Server 2008 Express R2. Läuft auf einem i7-Desktop mit einer Sandy Bridge und einem installierten 12G-RAM (DDR3, glaube ich?). Entschuldigen Sie, dass das Setup Desktop ist. Ich habe kurz nach dem Entwurf festgestellt, wie viele Datensätze ich auf der i7-Plattform verwalten kann, bevor ich einen Server erstelle.
Ich habe diese Tests zuerst auf dem installierten 1,5-TB-Laufwerk mit 7200 U / min ausgeführt, um die Basiszeiten zu ermitteln.
10.000 Datensätze mit aktualisierten Prozessen, optimierte die Tabellen, um die zuvor verwandten Daten in einer flachen Tabelle zu speichern, fügte Indizes hinzu, bis ich die Zeitangaben auf einige Sekunden als Ausgangspunkt reduzierte, dann duplizierte ich die Datensätze auf 1,2 Millionen und bekam ein Zeitplan von 0: 3: 37 für die gleichen Updates. 3 1/2 Minuten sind nicht schlecht für dieses Nicht-Raid-Setup.
Wenn ich die Rekorde auf 2,56 Millionen übertrug, bekam ich ein Timing von 0:15:57 - fast eine 5-fache Steigerung. Wahrscheinlich hauptsächlich aufgrund von Paging über den installierten 12G-Speicher hinaus.
Installierte das SSD-Laufwerk und verschob die Datenbanken, das Timing erhöhte sich tatsächlich auf etwas mehr als 20 Minuten. Ich gehe davon aus, dass dies daran liegt, dass sich Auslagerungsdateien pro Festplatte befinden und standardmäßig keine auf dem SSD-Laufwerk vorhanden waren, da es nicht als Betriebssystemlaufwerk installiert war (Bluescreens in Hülle und Fülle, als ich das versuchte).
Es wurde eine Auslagerungsdatei zum SSD-Laufwerk hinzugefügt und der Test erneut durchgeführt, 0: 5: 52-m, sodass die Auslagerungsdatei den Trick ausgeführt zu haben scheint, aber ich bin mir aus den oben genannten Gründen nicht sicher, ob eine Auslagerungsdatei für ein SSD-Laufwerk gut geeignet ist. Sie sind stark beschriftet und können zu einer übermäßigen Abnutzung des Laufwerks führen.
Eine Einschränkung, ich habe auch Smartboost auf diesem Laufwerk aktiviert und das hat möglicherweise auch das Timing beeinflusst, wird ohne es erneut ausgeführt.
Mein bester Eindruck davon ist, dass es heutzutage einfacher ist, Speicher hinzuzufügen, und für die Kosten würde ein Raid 0 + 1 von Hybrid-Festplatten ohne die Probleme fast genauso gut funktionieren.
Bearbeiten: Deaktivierte die Auslagerungsdatei auf der SSD und ließ Smart Boost seine Sache machen. Das Timing verbesserte sich von 5:52 Minuten auf 4:55 Minuten für 2,56 Millionen Datensätze mit jeweils 3 Updates. Ich werde als nächstes den 8G-SSD-Cache auf dem 750G-Hybridlaufwerk von Seagate ausprobieren. dann, wenn das nicht schlecht ist, werde ich sie in Raid 0 + 1 versuchen.
Letztes Update dazu, da dies ein alter Thread ist - aber ich wollte die Ergebnisse, die ich dort veröffentlicht habe, veröffentlichen, damit jemand sie finden kann.
Verschieben der Datenbank auf den Seagate 750G Hybrid mit einem 8G SSD-Cache Ich habe den Test einige Male ausgeführt, damit der SSD-Cache lernen kann. Ich habe 5:15 m: s Zeit für denselben Test und aktualisiere 2,56 Millionen Datensätze - das ist nahe genug an der SSD-Leistung (4:55 m: s mit Intel Smartboost), damit ich die Kosten berücksichtigen kann.
Mit rund 50 US-Dollar mehr (239 US-Dollar gegenüber derzeit 189 US-Dollar) bietet der Hybrid mehr als das 6-fache des Speichers und nahezu die gleiche Leistung, ohne dass zusätzliche Software zur Optimierung ausgeführt werden muss. Bei einem Raid 0 + 1 erwarte ich, dass sich das Timing erheblich verbessert und dieses Laufwerk eine 5-jährige Garantie hat. Ich hoffe, ich brauche es nicht.
Persönlich würde ich aus den bereits genannten Gründen keine SSDs verwenden. Sie werden allmählich langsamer, bevor sie schließlich versagen. Wir wissen noch nicht genau, wann dies sein wird - aktuelle Schätzungen sind genau das - Schätzungen. Erinnerst du dich, als wir alle Anfang / Mitte der 80er Jahre diese "unzerstörbaren" CDs gekauft haben? Einige Jahre später betrachteten wir die Speicherung von Daten auf CD als ebenso töricht wie die Verwendung von Disketten.
Wenn Sie Ihre Hardware, Ihr Betriebssystem und Ihre Datenbank richtig konfiguriert haben, müssen Sie nicht auf SSDs spielen.
In einigen Jahren, wenn die Produkte etwas gereift sind, wird es ein anderes Szenario geben. Aber bis dann...
Der Microsoft Research-Artikel befasst sich eher mit den Kosten pro GB als mit dem Leistungsgewinn. Es passt nicht zu den Laufwerken und testet sie, verwendet jedoch einen Retro-Casting-Algorithmus, der auf Protokolldateien von tatsächlichen Servern basiert.
Einige Dinge, die bei SSD und SQL in den Sinn kommen:
1 / Wenn Sie es versäumen, die richtigen Indizes hinzuzufügen, ist SSD viel verzeihender, da die zufälligen Suchzeiten so niedrig sind.
2 / Die Kosten sind deutlich niedriger als zu dem Zeitpunkt, als diese Studie durchgeführt wurde, und bei kleinen Webanwendungen, z. B. beim Ausführen des Back-End einer Telefon-App und nicht von Exchange-Unternehmensservern, kann die Leistung Kosten bei der Einstellung eines Beraters für die Optimierung von SQL Server sparen.
3 / Ein einzelnes SSD-Laufwerk mit Schattenkopie muss sicherlich billiger sein als ein Bündel Spindeln in einem RAID-Gehäuse sowie der Controller und die Anschlüsse. Ganz zu schweigen von Strom, Heizung und Platz im Rack.
4 / Spindeln sind bekannt dafür, dass sie der Teil sind, der am häufigsten auf einem Computer stirbt. SSD hat keine beweglichen Teile und eine Stunde Ausfallzeit kann den Preis einer SSD auf einmal kosten.
5 / Verschleiß ist ein Problem, aber sie haben Möglichkeiten, es zu verwalten (mit Streublöcken), die möglich sind, weil zufällig fragmentierte Daten eine SSD nicht verlangsamen. Außerdem wird eine kleine Datenbank auf einer großen Festplatte wahrscheinlich nicht rechtzeitig abgenutzt sein, um in Zukunft eine billigere neue zu kaufen.
6 / Es gibt einen Trend zu nicht relationalen Datenbanken und Joins in der mittleren Ebene. Dies könnte die Dinge wirklich ändern: E / A zu einfachen nicht indizierten Tabellen auf SSD-Laufwerken auf Shards ohne Leistungseinbußen und mit einem viel einfacheren Skalierungsvorschlag. Speichern Sie auch SQL Server-Lizenzen pro Shard.
7 / Das ist alles theoretisch. Wenn jemand reale Leistungstests gegen Spindeln hat, würde ich gerne sehen.
Luke