Was ist für einen Datenbankserver wichtiger? Mem? Mem Geschwindigkeit? Kerne?

11

Ich werde meinen Datenbankserver auf etwas bessere neue Hardware umstellen. Der aktuelle Datenbankserver hat keine Probleme, außer dass er Centos 4 ausführt. Die aktuelle Hardware ist 2 Quad Core Xeon 5335, 4 15K U / min in RAID 10 und 4 GB (ja, es sind wirklich nur 4 GB) Speicher.

Die Hardware-Optionen in meinem Budget weisen fast keine Preisunterschiede auf und haben die gleichen 4 Festplatten mit 15.000 U / min in RAID 10. Sie sind:

  • 2 Quad Core Xeon 5335 mit 8 GB 533/667
  • 2 Hex Core Xeon 2620 mit 16 GB 1333
  • 4 Dual Core Opteron 8212 mit 8 GB 667
  • 1 Octo Core Xeon 2650 mit 8 GB 1333
  • 1 Quad Core Xeon 3460 mit 16 GB 1333

Wie lauten die wichtigen Teile eines Datenbankservers ohne Festplatten? Ist es so etwas wie: Speichergröße, Speichergeschwindigkeit, Kerne und dann Cache-Größe?

Echo sagt Reinstate Monica
quelle
3
Was ist Ihre aktuelle Auslastung auf der CPU? Laufen Sie mit 10%? 50%? Wenn Sie regelmäßig ~ 30-40% sind, dann scheint es, dass der 2620 mit 16 GB RAM das ist, was Sie wollen (ein Q1'12 Hexacore-Chip mit 16 GB FAST RAM? Ja bitte)
jcolebrand
@jcolebrand Das ist das, von dem ich dachte, es wäre das Beste. 10-20% Auslastung im Durchschnitt mit Spitzen auf 30-40% manchmal.
Echo sagt Reinstate Monica
XEON 2620 bei 2 GHz, XEON 3460 bei 2,8 GHz?
Nils

Antworten:

20

Nach meiner Erfahrung ist das, wonach Sie suchen, in dieser Prioritätsreihenfolge:

  1. Geschwindigkeit des Festplattensubsystems. RAID10 ist meiner Erfahrung nach am besten. Bonuspunkte für SSDs.
  2. Gesamtmenge an RAM Je mehr RAM, desto mehr Cache kann Ihr Server haben.
  3. Speichergeschwindigkeit. Schnelleres RAM ist offensichtlich besser als langsameres RAM, jedoch ist RAM immer schneller als Festplatten, sodass langsameres RAM besser ist als weniger schnelleres RAM.
  4. Anzahl der CPU-Kerne
  5. CPU geschwindigkeit

Dies hängt natürlich von der Anwendung ab. In der Regel besteht die Aufgabe eines Datenbankservers darin, einen sehr schnellen Zugriff auf Daten zu ermöglichen. Daher ist die CPU-Geschwindigkeit weniger wichtig als die Geschwindigkeit des Zugriffs auf die Daten (Festplatten und RAM). Wenn Sie jedoch in Ihren Abfragen viel Mathematik / Berechnungen verwenden, benötigen Sie natürlich mehr CPU-Ressourcen.

Josh
quelle
2
Abhängig von der Datenbankarchitektur würde ich sagen, dass insgesamt mehr Kerne besser sind als mehr CPU-Geschwindigkeit, da höhere Taktrate! = kürzere Pipeline, und es gibt zu viele Dinge, die dort berücksichtigt werden müssen, aber mit mehr Kernen kann das Betriebssystem mehr Platz haben Führen Sie Nebenprozesse durch, und die Engines sind normalerweise intelligent genug, um sich auf mehrere Kerne verteilen zu können.
Jcolebrand
@jcolebrand Punkt genommen und Antwort aktualisiert!
Josh
2
Da MySQL ausdrücklich erwähnt wurde, sind schnellere Prozessoren normalerweise die bessere Wahl als mehr (vorausgesetzt, Sie sprechen nicht nur von 1 oder 2), da die Geschwindigkeit einer einzelnen Abfrage grundlegend durch die Geschwindigkeit eines einzelnen Prozessors begrenzt ist. Selbst die neuesten MySQL-Versionen lassen sich aufgrund interner Mutex- und Semaphor-Konflikte nicht so gut skalieren wie einige andere RDBMS über mehrere Kerne hinweg. Ich betreibe mehrere 24-Core-Server und würde meinen linken Arm geben, um sie gegen halb so viele Kerne einzutauschen, die 1,5-mal schneller sind.
Aaron Brown
6

Wenn es um MySQL geht, müssen Sie auch die Standard-Speicher-Engine Ihrer Daten berücksichtigen.

Wenn Sie nur MyISAM-Daten verwenden, müssen Sie nur Folgendes berücksichtigen

Festplattengeschwindigkeit, Speichergeschwindigkeit, Gesamtspeicher, CPU

Die Anzahl der Kerne ist ein großer Nichtfaktor, da MyISAM (in der Tat mysqld) nicht mehrere Kerne verwendet.

Wenn Sie nur InnoDB-Daten verwenden, haben Sie jetzt etwas zu besprechen, wenn es um Kerne geht.

MySQL 5.5 bietet jetzt Multicore-Unterstützung für InnoDB.

Alle CPUs werden auf allen Zylindern für InnoDB ausgelöst, solange Sie InnoDB ordnungsgemäß konfigurieren. Ob Sie es glauben oder nicht, wenn Sie InnoDB nicht konfigurieren, gibt es Fälle, in denen ältere Versionen von InnoDB sofort einsatzbereit sind als neuere Versionen.

Hinweis für Moderatoren

Wenn es zu viele Links gibt, stimmen Sie bitte nicht ab. Benachrichtigen Sie mich einfach und ich kann aus Auszügen dieser Links paraphrasieren.

RolandoMySQLDBA
quelle
Das ist gut zu wissen. Viele der Tabellen sind MyISAM, aber die meisten, wenn nicht alle, können in InnoDB geändert werden, was ich sowieso überlegt habe. Ich werde auf 5.1 (von 4.1)
upgraden
Sie müssen auf 5.5 aktualisieren. MySQL 5.1 benötigt das Plugin. Es ist einfacher, einfach 5.5 zu gehen.
RolandoMySQLDBA
Das InnoDB Plugin kann einfach in 5.1 installiert werden. Außerdem basiert Percona Server 5.1 auf dem InnoDB-Plugin.
Aaron Brown
@AaronBrown: Da Echo MySQL 4.1 hat, würde es entweder Percona 5.1 oder MySQL 5.5 tun. Obwohl ich die Semisync 5.5-Plugins schon einmal installiert habe, bin ich bei Plugins nur ein bisschen faul.
RolandoMySQLDBA
0

Nach allem, was bereits gesagt wurde und was ich von DB-Servern gesehen habe: "2 Hex Core Xeon 2620 mit 16 GB 1333" scheint mir die erste Wahl zu sein.

Verwenden Sie RDIMM3 mit einer Geschwindigkeit von 1333 MHz - 12 oder 15 GB sind wahrscheinlich schneller als 16 GB, da Sie die Anzahl der DIMMs durch 3 teilen können.

Wenn Ihre Datenbank viele Schreibvorgänge ausführt, achten Sie auch auf eine gute Festplatten-E / A-Leistung.

Nils
quelle