Um die Leistung eines SQL-Servers zu verbessern, sollten Sie die schnellstmöglichen Festplatten mit RAID 5 usw. kaufen.
Also dachte ich, anstatt das ganze Geld für RAID 5 und superschnelle Festplatten (was übrigens nicht billig ist) auszugeben, warum man nicht einfach Tonnen RAM bekommt? Wir wissen, dass ein SQL Server die Datenbank in den Speicher lädt. Der Speicher ist viel schneller als alle Festplatten.
Warum nicht 100 GB RAM auf einem Server einbauen? Verwenden Sie dann einfach eine normale SCSI-Festplatte mit RAID 1. Wäre das nicht viel billiger und schneller?
performance
raid
sql
memory
hard-drive
user1034912
quelle
quelle
Antworten:
Ihre Analyse ist in Ordnung - bis zu einem gewissen Punkt -, da sie die Dinge auf jeden Fall beschleunigen wird. Sie müssen jedoch noch einige andere Probleme berücksichtigen:
Nicht jeder kann sich genug Gedächtnis leisten; Wenn Sie mehrere Terabyte an Daten haben, müssen Sie diese einige Zeit auf die Festplatte legen. Wenn Sie nicht viele Daten haben, ist alles schnell genug.
Die Schreibleistung für Ihre Datenbank wird weiterhin von den Datenträgern eingeschränkt, sodass Sie das Versprechen einhalten können, dass die Daten tatsächlich gespeichert wurden.
Wenn Sie einen kleinen Datensatz haben oder ihn nicht auf der Festplatte speichern müssen, ist Ihre Idee nicht falsch. Tools wie VoltDB arbeiten daran, den Overhead zu verringern, den ältere Annahmen in RDBMS-Implementierungen verursacht haben und der die reine In-Memory-Leistung einschränkt.
(Abgesehen davon sind die Leute, die Ihnen sagen, dass Sie RAID-5 für die Datenbankleistung verwenden sollen, wahrscheinlich nicht besonders empfehlenswert, da dies fast nie die beste Wahl ist - es bietet eine gute Leseleistung, aber eine schlechte Schreibleistung und Schreibvorgänge sind fast immer die Produktionsbeschränkung - weil Sie RAM in das Caching werfen können, um die meisten Performance-Probleme auf der Leseseite zu lösen.)
quelle
Kurzversion: Beachten Sie die Größe des Arbeitssets. Lange Version: Wie groß sind Ihre Daten? Wenn es in den Speicher eines modernen Servers passt, haben Sie absolut Recht. Leider kann der größte Xeon derzeit 2 TB RAM adressieren, und das ist kein so großer Datensatz mehr. Wenn Sie keine Maschine kaufen können, die groß genug ist, um Ihr gesamtes Arbeitsgerät im RAM unterzubringen, müssen Sie Probleme mit Ihrem Gehirn lösen, nicht mit Ihrem Geldbeutel.
quelle
Wenn Sie Geschwindigkeit wollen:
Befolgen Sie diese Schritte, und SQL Server wird fliegen.
Fügen Sie dann, wenn Sie möchten, mehr RAM hinzu, aber führen Sie zuerst die obigen Schritte aus, und Sie werden möglicherweise feststellen, dass Sie fertig sind.
quelle
In http://www.tbray.org/ongoing/When/200x/2006/05/24/On-Grids . Beachten Sie, dass es vor sechs Jahren war. Ja, wir haben Datenbanksysteme, die sich bemühen, den gesamten Datenbestand im RAM zu halten (und es auch zu versuchen) und die eher auf mehrere Computer verteilt sind, als den Datenträger zu verwenden, da der Datenträger ohnehin um ein Vielfaches langsamer ist. Sie müssen den Datensatz auf die Festplatte schreiben, aber wie im obigen Motto ist dies eher eine Hintergrund-Backup-Aufgabe als eine Online-Operation. Die Haltbarkeit wird erreicht, indem nur Protokolle mit diesen Datenbanken angehängt werden (ich denke MongoDB und Redis, aber es gibt Tonnen mehr).
quelle
Diese Frage ähnelt einer grundlegenden Frage, die in den letzten 5 bis 10 Jahren zu viel Forschung und Entwicklung in Bezug auf Datenbankarchitekturen geführt hat. Da es für viele Anwendungsfälle möglich ist, eine gesamte Datenbank im RAM zu speichern, muss die Datenbank so konzipiert werden, dass sie im RAM arbeitet, anstatt einfach ältere vererbte Architekturen auf RAM-basierten Speicher anzuwenden.
So wie in den letzten Jahren viele kleinere und speziellere Sprachen in großem Umfang eingeführt wurden, werden wir in eine Ära eintreten, in der speziellere Datenbanken benötigt werden.
Für eine weiterführende Lektüre zu diesem Thema empfehle ich die wissenschaftliche Arbeit The End of a Architectural Era (Es ist Zeit für ein vollständiges Umschreiben) . Es ist keine schwierige Lektüre.
Es ist unklar, ob sich diese Frage speziell auf SQL Server bezog. Das Originalplakat sollte dies verdeutlichen.
Daniel Pittman schrieb:
Das Reduzieren des Overheads von älteren Annahmen in RDBMS-Implementierungen war genau das Entwurfsziel von VoltDB . Es lässt sich jedoch ohne architektonische Beschränkung der Datengröße horizontal skalieren und kann mithilfe von Snapshots und Befehlsprotokollierung dauerhaft auf der Festplatte gespeichert werden.
quelle
Wenn Sie einen Server mit genügend RAM haben, um zumindest den wichtigen Teil Ihres Datasets zu speichern, ist alles in Ordnung. Auch RAID 1 und RAID 5 sind nicht die schnellste Methode, um Ihre Daten zu ordnen. RAID 0 ist schneller. Dann müssen Sie jedoch die höhere Wahrscheinlichkeit eines Dateisystemfehlers in Betracht ziehen, durch den Ihre Datenbank gelöscht wird . Sie können RAID 1 oder RAID 5 für Ihr RAID 0-Array verwenden, sofern Sie über genügend Laufwerke und Controller verfügen.
Sie können hier sogar mit der Replikation spielen - schreiben Sie auf einen festplattenintensiven Server, der auf einen oder mehrere speicherintensive Server repliziert, auf denen Sie komplizierte Abfragen ausführen.
Leider scheinen sich RDBMS im großen eisernen Bereich zu befinden - es ist nicht so einfach, sie horizontal zu vergrößern.
quelle
Dies ist ein Fall von "es hängt davon ab, was Sie tun." Vielleicht ist der "richtige" Rat, SQL ganz zu vermeiden und memcache / redis / etc zu verwenden!
Ich stimme Ihnen zu, dass zusätzlicher Arbeitsspeicher sehr hilfreich ist, insbesondere wenn Sie den gesamten Arbeitsspeicher in den Arbeitsspeicher einlesen können. Ja, es müssen noch Daten geschrieben werden, aber wenn Sie meistens gelesen haben, haben die Schreibvorgänge keine Auswirkungen auf die Festplatten-E / A.
Die Festplattenleistung ist jedoch häufig ein Engpass auf SQL-Servern und schwieriger als andere Dinge wie RAM, die später aktualisiert werden müssen (wenn Sie einen Server haben, der nicht vollständig mit DIMMs bestückt ist).
Es gab eine Reihe von Kommentaren darüber, dass RAID5 langsam ist, aber ich würde sagen, dass dies nicht immer der Fall ist. Seien Sie also vorsichtig, bevor Sie umfassende Aussagen machen. Wirklich High-End-Server mit schnellen RAID-Karten und viel BBWC sind in RAID5 (oder RAID50 mit mehr als 4 Festplatten) manchmal viel schneller als in RAID10 ...
Im Laufe der Jahre habe ich persönlich langsame RAID5-Arrays erlebt, aber nachdem wir im Jahr 2009 einen DL360 G5 mit 4 146G SAS-Festplatten getestet hatten, mussten wir unsere Tests noch einmal überprüfen. In der Tat ging das Array mit RAID5 in fast jedem Test schneller als mit RAID10. Durch BBWC-Berechnungen und schnelle Paritätsberechnungen konnte der Server die 4 Festplatten wesentlich effektiver als RAID5-Array als RAID10 einsetzen. Einige der Tests zeigten mit RAID5 einen um 50% besseren Durchsatz, und fast keiner war langsamer. Die Tests, die langsamer waren, waren nur 5-10% weg.
Ich warne die Leute, die pauschal behaupten, RAID5 sei langsam, jeder sagt es online, aber es ist einfach nicht in jedem Fall wahr.
quelle
Sie haben einen Mixbeutel mit Süßigkeiten zur Auswahl und es kommt wirklich darauf an, welchen Geschmack Sie haben möchten.
Investieren Sie einfach in das Wissen (kostenlos), bevor Sie Bargeld abheben. 1. Lernen Sie die Konfigurationen für Ihre Datenbank kennen und schauen Sie sich Ihre aktuelle Konfiguration an, um sie zu optimieren. 2. Sehen Sie sich die Programmier- und SQL-Anweisungen an. Unit-Test mit einfachen Skripten, die die beteiligten Vorgänge imitieren. Möglicherweise ist es nicht einmal das, was Sie für das Problem halten. WENN die einfachen Skripte mithilfe von SQL-Joins Zeit in Anspruch nehmen, teilen Sie sie auf und tun dasselbe mit einer programmierten Schleife, um dasselbe zu tun. Dies ist, wo Speicher helfen kann 3. Schauen Sie sich den Hosting-Plan und den Server an. Verwenden Sie ps aux in einer Linux-Konsole und prüfen Sie, ob etwas Ihren Speicher und den Prozessor aufgesaugt hat.
Das absolute Festplattenlaufwerk verbessert die Geschwindigkeit, ist jedoch in einem virtuellen Serverraum nicht an Sie gebunden. Der Speicher verbessert die Geschwindigkeit nur, wenn Sie die Dienste für diesen Zeitraum konfigurieren. Striped RAID (0,5), RPM und synchrones Lesen / Schreiben mit einem schnellen Bus helfen dabei. Ein Core-Prozessor mit einem guten l1-, l2-, l3-Cache hilft bei der Verarbeitung von Engpässen. kann ich es für Xeon hören!
quelle
Insgesamt müssen Sie Größe und Skalierbarkeit berücksichtigen. Während Sie mit einem geringen Speicherbedarf zu beginnen scheinen, werden Ihre Daten sehr schnell und exponentiell wachsen. DBs verwenden am besten atomare Daten, dh Daten, die auf die kleinstmögliche Größe heruntergebrochen werden. Aufgrund der geringen Größe bewegt es sich schneller im Data Warehouse. Dann berücksichtigen Sie auch die DB-Struktur. In Zukunft könnten Sie Verbindungen zu externen Datenbanken herstellen, weshalb die Struktur ebenfalls von entscheidender Bedeutung ist. In diesem Szenario würde es für Ihre Abfrage kaum einen Unterschied machen, ob die Hälfte der Daten außerhalb Ihres Data Marts gespeichert ist. Wenn Daten abgefragt werden, besteht der Punkt nicht darin, gespeicherte Daten im RAM zu behalten; Vielmehr sollte die Abfrage schnell auf Daten zugreifen und diese zurückgeben können.
quelle