Läuft hier jemand SQL Server auf Solid-State-Laufwerken? Haben Sie spezielle Optimierungstipps gefunden? Ich bin speziell an Möglichkeiten interessiert, die Häufigkeit zu verringern, mit der SQL Server kleine zufällige Schreibvorgänge ausführt, da sie die Nemesis der SSD-Leistung sind, insbesondere MLC-SSD-Laufwerke.
Natürlich gibt es einige offensichtliche Optimierungen: Leselastige Daten sollten von der SSD bereitgestellt werden, und schreibintensive Daten sollten herkömmlichen sich drehenden Datenträgern überlassen werden. Dazu gehören natürlich auch Transaktionsprotokolle!
Bei ausreichendem Budget möchte man natürlich SLC-SSD-Festplatten wie die X25-E- oder die Vertex Ex-Serie oder verschiedene Angebote auf Unternehmensebene verwenden. Ich interessiere mich aber auch für Tipps, die MLC-SSD-Setups zugute kommen könnten. Ich denke, das ist ein interessanter Bereich. Einer der Kunden meiner Kunden hat ein kleines Budget und einen Datensatz, der immens gewachsen ist, und sie stehen vor einer vollständigen Neufassung von fast hundert Abfragen, um ein anständiges Leistungsniveau aufrechtzuerhalten. Ich habe jedoch den Verdacht, dass weniger als 500 US-Dollar RAM und SSD-Speicherplatz zu einem größeren Leistungsgewinn führen könnten als Entwicklerzeit im Wert von Tausenden (möglicherweise Zehntausenden) US-Dollar.
quelle
Sie können die E / A-Eigenschaften von SQL Servern nicht ändern. Die Grundeinheit für den Datenträgerzugriff für Datendateien ist eine 8-KB-Seite. Es schreibt sie meistens während eines Checkpoints, schreibt sie aber auch faul, wenn es geht.
SQL wartet nicht auf den Abschluss der Schreibvorgänge auf die Datenfestplatte, bevor es zurückkehrt. Es müssen nur die Protokollschreibvorgänge abgeschlossen werden. Wenn Sie nur ein Datenbankprotokoll auf einer Festplatte speichern können, handelt es sich um sequentielle Schreibvorgänge, die auf normalen schnellen Festplatten in Ordnung sind.
Aus Sicht von SQL ist die Leistung beeinträchtigt, wenn die Festplatten gelesen werden müssen. Wenn Sie ihm mehr Speicher geben können, speichert SQL mehr Datenseiten im Speicher, was schneller ist als jede Art von Festplatte, SSD oder auf andere Weise. Natürlich können Sie auch die Anzahl der Festplattenlesevorgänge reduzieren, indem Sie geeignete Indizes erstellen. Ich gehe davon aus, dass eine SSD auch bei diesen Lesevorgängen helfen würde, da sie wahrscheinlich zufällig sind und darauf warten, dass sich die Laufwerksköpfe bewegen.
Ich weiß nicht, über welche Datenbankgröße wir hier sprechen, aber vielleicht möchten Sie sich HyperOS ansehen. Sie stellen Sata-Festplatten her, die eigentlich nur eine Ladung DDR2-RAM-Sticks sind, mit einer SSD oder einer 2,5-Zoll-Festplatte als Backup. Das Zugriffsmuster des Servers spielt dann keine Rolle. Ich würde die Protokolle jedoch nicht auf so etwas setzen. Protokolle sind das, was Ihre Daten konsistent hält. Sie müssen auf einem zuverlässigen Medium gespeichert werden. Trotz der Backup-SSD und des Akkus und des Servers mit wahrscheinlich einer USV usw. würde es mir immer noch unangenehm sein, meine Protokolle nicht auf einer echten Festplatte zu haben in einer Art fehlertolerantem RAID-Array.
quelle
Kleine zufällige Operationen sind aufgrund der Latenz bei der Kopfsuche die Nemesis herkömmlicher Festplatten ... SSDs können genau dies hervorragend angehen.
Bei langen, sequentiellen Vorgängen weisen Standardfestplatten eine recht gute Leistung auf, sodass die Verwendung von SSDs keinen Sinn hat (natürlich unter Leistungsgesichtspunkten).
quelle
Es ist hier noch nicht genug, um es dem Kommentarthread hinzuzufügen, aber wenn Sie die Seitengröße / Anzahl der Mehrfachlesevorgänge der Datenbank für irgendetwas auf den SSDs auf ein Vielfaches der Seitengröße der SSD einstellen, sollte dies kein Problem sein.
Ich habe lange nicht mehr an SQL Server gearbeitet, daher bin ich mir nicht sicher, ob diese Optionen dort verfügbar sind. Ich habe in den letzten Jahren Oracle und DB2 ausgeführt, und dies würde Ihre Bedenken lösen, da die Datenbank ordnungsgemäß auf die Festplatteneigenschaften abgestimmt wäre.
quelle
Ich würde empfehlen, die Partition auszurichten, in der Datenbankdateien gespeichert sind.
Ich würde auch empfehlen, zu entscheiden, was auf RAID 0 für perf (ldf und TempDB) läuft, und kritische Daten auf RAID 1 (mdf) zu platzieren.
Drittens sollten Sie die Firmware des Laufwerks sowie die Firmware / Treiber des SATA-Controllers wirklich aktualisieren. Auf diese Weise geben Sie dem Hardware-Unternehmen und seinen Entwicklern die Möglichkeit, die Leistung für Sie zu optimieren.
quelle