Ist die CPU-Leistung für einen Datenbankserver relevant?

33

Dies ist eine rein theoretische Frage. Angenommen, ich habe eine Anwendung auf mehreren Servern bereitgestellt.

  1. Einen Load Balancer,
  2. Mehrere / skalierbare Anwendungsserver
  3. 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.

Zenklys
quelle
Nun, es muss einen haben.
ConcernedOfTunbridgeWells

Antworten:

29

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.)

kgrittn
quelle
Hey, ich habe das Buch. Gibt es eine bestimmte Seite, einen bestimmten Abschnitt oder ein bestimmtes Kapitel, auf das Sie sich beziehen? (BTW +1 für PostgreSQL Perspektive)
RolandoMySQLDBA
Vielen Dank für die Informationen zu PostgreSQL. Ich werde das Buch überprüfen. ;)
Zenklys
1
Gute Sachen von den Seiten 21-23
RolandoMySQLDBA
Ich kann die Weisheit Ihres zweiten Absatzes im Vergleich zu den Seiten 21-23 sehen.
RolandoMySQLDBA
23

Aus Sicht von MySQL ist das eine sehr geladene Frage

CPU-Frequenz relevant für einen Datenbankserver?

Während schnellere CPU und Motherboard großartig sind, können andere Engpässe im Wege stehen. Solche Engpässe sind:

  • Festplatten-E / A
  • Verbindungsmaxima
  • Netzwerk-Latenz
  • Abfrageleistung pro Verbindung

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?

Sind mehrere Core-CPUs relevant?

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 .

Ist RAM wichtiger als CPU?

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.

RolandoMySQLDBA
quelle
2
Gute Antwort. Ich werde alle diese Links überprüfen, danke.
Zenklys
6
  • Nein
  • Nein
  • Ja

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.)

gbn
quelle
Danke für die Antwort. SSDs sind dann eine gute Wahl? Über CPU-Leistung?
Zenklys
@Zenklys: Schwer zu sagen. Welche Datenbankgröße haben Sie? Volumen schreiben? Laden lesen? OLTP oder OLAP? etc
gbn
Maximal 20 bis 30 GB. 10 zu 1 Lese / Schreib-Verhältnis, nur kleine Daten, OLTP.
Zenklys
2
@Zenklys: In welchem ​​Fall ist es eigentlich egal. Kaufen Sie einfach RAM speziell für MySQL, damit so viele Daten wie möglich zwischengespeichert werden
gbn
3
Nicht sicher, warum dies die akzeptierte Antwort ist. Es ist einfach, da es nicht die Anwendung, die Arbeitslast oder die Größe des Datensatzes berücksichtigt. @kgrittn gab eine bessere Antwort, die auf Erfahrungen aus der Praxis basiert, und ein besseres Verständnis der Betriebstheorie für Postgres.
Dbenhur