Dies ist eine rein theoretische Frage. Angenommen, ich habe eine Anwendung auf mehreren Servern bereitgestellt.
- Einen Load Balancer,
- Mehrere / skalierbare Anwendungsserver
- Ein (einziger) Datenbankserver (für den Moment)
Bei den beiden ersten Teilen weiß ich, wonach ich suchen muss. Aber was ist mit dem Datenbankserver? Nach welcher Hardware soll ich suchen?
- Ist die CPU-Frequenz für einen Datenbankserver relevant?
- Sind mehrere Core-CPUs relevant?
- Ist RAM wichtiger als CPU?
PS: Angenommen, die ausgewählte Datenbank ist MySQL oder PostgreSQL.
mysql
postgresql
performance
Zenklys
quelle
quelle
Antworten:
Für PostgreSQL kann die CPU-Leistung sehr relevant sein, insbesondere wenn ein relativ hoher Prozentsatz der aktiven Arbeitsmenge Ihrer Daten in den Arbeitsspeicher passt. Die meisten Datenbanken, mit denen ich gearbeitet habe, hatten die meiste Zeit CPU-Leistung als Hauptengpass. (Ich habe gerade vmstat auf einem Server überprüft, auf dem Websites mit Millionen von Treffern pro Tag gehostet werden, auf denen mehr als 5 TB Datenbankspeicherplatz vorhanden sind, und ich habe nie mehr als 2% Wartezeit auf die Festplatte gesehen, aber einen Spitzenwert von 12% der Benutzer-CPU-Zeit.)
Da PostgreSQL prozessbasiert ist, kann jeder einzelne Prozess nur so schnell wie ein Kern ausgeführt werden. In einer Mischung wie der oben genannten auf dem Server ist jedoch bei einem hohen Volumen kleiner Anforderungen die Gesamt-CPU aller Kerne am wichtigsten. Bei gleicher Gesamt-CPU-Leistung ist PostgreSQL im Allgemeinen mit weniger, schnelleren Kernen besser als mit vielen, langsameren Kernen.
Bis zu dem Punkt, an dem ein hoher Prozentsatz Ihres aktiven Datensatzes zwischengespeichert wird, bringt das Hinzufügen von RAM in der Regel mehr Leistung als das Hinzufügen von Kernen. Wenn Sie genügend Cache-Speicher haben, sinkt der Nutzen des zusätzlichen Arbeitsspeichers und Sie sollten die CPU-Leistung steigern.
Für weitere Details zu diesem Thema, was PostgreSQL betrifft, gibt es meines Erachtens keine bessere Quelle als PostgreSQL 9.0 High Performance von Greg Smith . (Vollständige Offenlegung, ich war ein technischer Rezensent für das Buch, erhalte aber keinen finanziellen Vorteil aufgrund des Umsatzes.)
quelle
Aus Sicht von MySQL ist das eine sehr geladene Frage
Während schnellere CPU und Motherboard großartig sind, können andere Engpässe im Wege stehen. Solche Engpässe sind:
Jeder kleine Vorteil hilft, aber ich muss Nein sagen, weil die CPU-Geschwindigkeit an sich die oben genannten Engpässe nicht verbessert. Was kann ein Formel-1-Rennwagen mit offenem Fallschirm oder mit einem 800-Pfund-Gorilla am Steuer bringen?
Das hängt ganz davon ab, welche MySQL-Version Sie verwenden. Das MySQL 5.1 InnoDB-Plugin, MySQL 5.5 und die XtraDB von Percona Server haben alle Einstellungen, die Sie korrekt konfigurieren müssen , damit InnoDB auf alle Kerne zugreifen kann. Der eigentliche Anreiz dafür liegt in der Tatsache, dass einige ältere Versionen von MySQL LEFT UNCONFIGURED schneller sind als neuere Versionen, wie ich in meinen früheren Beiträgen beschrieben habe:
Daher sind , wenn Sie nicht bereit InnoDB zu konfigurieren für alle CPUs zugreifen, Sie absolut mehrere Kerne buys nichts mit .
Oh ja in der Tat. Die Speicherkonfiguration für MySQL erfordert die Einrichtung
Wenn Sie zu wenig oder zu viel von einer Kombination dieser Dinge und von MySQL verlangen, kommen Sie zurück, um Sie zu beißen. Eine schnellere CPU mit MySQL, die nicht richtig für RAM konfiguriert ist, bringt MySQL nur dazu, Sie schneller zu beißen.
quelle
Einfach ausgedrückt, benötigen Sie RAM- und IO-Leistung (Latenz + Lesegeschwindigkeit + Schreibgeschwindigkeit) für Datenbanken.
Die Wahl von 4 oder 6 Kernen oder 2,5 GHz gegenüber 3 GHz ist nicht wirklich relevant (ich nehme an, Sie müssen sich nicht zwischen einem P3-450 mit 32 GB RAM oder dem neuesten Xeon mit 1 GB RAM entscheiden).
Wenn Sie CPU-gebunden sind, haben Sie andere Probleme (schlechtes Design, schlechte Indizes, Auslagerungen, nicht dedizierter Server usw.)
quelle