Quoi de plus important pour un serveur de base de données? Mem? Vitesse Mem? Noyaux?

11

Je vais déplacer mon serveur de base de données vers un nouveau matériel un peu meilleur. Le serveur de base de données actuel n'a aucun problème, sauf qu'il exécute Centos 4. Le matériel actuel est 2 xeon 5335 à quatre cœurs, 4 15 000 tr / min en RAID 10 et 4 Go (oui, il ne s'agit en réalité que de 4 Go) de mémoire.

Les choix matériels de mon budget n'ont pratiquement aucune différence de prix et auront les mêmes 4 disques durs 15K RPM en RAID 10. Ils sont:

  • 2 quad core xeon 5335 avec 8 Go 533/667
  • 2 noyaux hexagonaux xeon 2620 avec 16 Go 1333
  • 4 double cœur opteron 8212 avec 8 Go 667
  • 1 octo core xeon 2650 avec 8 Go 1333
  • 1 quad core xeon 3460 avec 16 Go 1333

À l'exception des disques durs, quel est l'ordre des parties importantes d'un serveur de base de données? S'agit-il de quelque chose comme: la taille de la mémoire, la vitesse de la mémoire, les cœurs, puis la taille du cache?

Echo dit de réintégrer Monica
la source
3
Quelle est votre utilisation actuelle sur le CPU? Courez-vous à 10%? 50%? Si vous êtes ~ 30-40% sur une base régulière, alors il semble que le 2620 avec 16 Go de RAM soit ce que vous voulez (une puce hexacore Q1`12 avec 16 Go de RAM RAPIDE? Oui s'il vous plaît)
jcolebrand
@jcolebrand C'est celle que je pensais être la meilleure. 10-20% d'utilisation en moyenne avec des pointes à 30-40% parfois.
Echo dit Réintégrer Monica le
XEON 2620 à 2 GHz, XEON 3460 à 2,8 GHz?
Nils

Réponses:

21

D'après mon expérience, ce que vous recherchez serait dans cet ordre de priorité:

  1. Vitesse du sous-système de disque. RAID10 selon mon expérience est le meilleur. Points bonus pour les SSD.
  2. Quantité totale de RAM Plus il y a de RAM, plus votre serveur aura de cache.
  3. Vitesse de mémoire. Une RAM plus rapide est évidemment meilleure qu'une RAM plus lente, mais la RAM est toujours plus rapide que les disques, donc une RAM plus lente est meilleure qu'une RAM moins rapide.
  4. Nombre de cœurs CPU
  5. vitesse CPU

Cela dépend évidemment de l'application, mais généralement le travail d'un serveur de base de données est de fournir très rapidement l' accès aux données, de sorte que la vitesse du processeur est moins importante que la vitesse d'accès aux données (disques et RAM). Mais évidemment, si vous utilisez beaucoup de mathématiques / calculs dans vos requêtes, vous avez besoin de plus de ressources CPU.

Josh
la source
2
selon l'architecture de la base de données, je dirais que plus de cœurs seraient mieux dans l'ensemble que plus de vitesse de processeur, car une fréquence d'horloge plus élevée! = pipeline plus court, et il y a trop de choses à prendre en compte, mais avec plus de cœurs, le système d'exploitation peut avoir plus de place pour faire des processus secondaires, et les moteurs sont généralement assez intelligents pour pouvoir se propager sur plus de cœurs.
jcolebrand
@jcolebrand point pris et réponse mise à jour!
Josh
2
Puisque MySQL a été spécifiquement mentionné, les processeurs plus rapides sont généralement un meilleur choix que plus (en supposant que vous ne parlez pas seulement de 1 ou 2), car la vitesse d'une seule requête est fondamentalement limitée par la vitesse d'un seul processeur. Même les versions les plus récentes de MySQL n'évoluent pas aussi bien que certains autres SGBDR sur plusieurs cœurs en raison de conflits internes de mutex et de sémaphore. Je gère plusieurs serveurs à 24 cœurs et je donnerais mon bras gauche pour les échanger contre la moitié du nombre de cœurs 1,5 fois plus rapides.
Aaron Brown
7

En ce qui concerne MySQL, vous devez également considérer le moteur de stockage par défaut de vos données.

Si vous utilisez uniquement les données MyISAM, vous devez uniquement prendre en compte les éléments suivants

Vitesse du disque, vitesse de la mémoire, RAM totale, CPU

Le nombre de cœurs est un gros non-facteur car MyISAM (en fait, mysqld) n'utilise pas plusieurs cœurs.

Si vous utilisez uniquement les données InnoDB, vous avez maintenant quelque chose à dire en ce qui concerne les cœurs.

MySQL 5.5 est désormais livré avec une prise en charge multicœur pour InnoDB.

Tous les processeurs fonctionneront sur tous les cylindres pour InnoDB tant que vous configurerez correctement InnoDB. Croyez-le ou non, si vous ne configurez pas InnoDB, il existe des cas où les anciennes versions d'InnoDB seront plus rapidement prêtes à l'emploi que les versions plus récentes.

Note aux modérateurs

S'il y a trop de liens, veuillez ne pas voter contre. Alertez-moi et je pourrai paraphraser des extraits de ces liens.

RolandoMySQLDBA
la source
C'est bon à savoir. Beaucoup de tableaux sont MyISAM, mais la plupart sinon tous peuvent être modifiés en InnoDB, ce que je pensais faire de toute façon. Je vais passer à 5.1 (à partir de 4.1)
Echo dit Reinstate Monica
Vous devez passer à 5.5. MySQL 5.1 nécessite le plugin. Il est plus simple de passer à 5.5.
RolandoMySQLDBA
Le plugin InnoDB peut être installé facilement en 5.1. De plus, Percona Server 5.1 est basé sur le plugin InnoDB.
Aaron Brown
@AaronBrown: Puisque Echo a MySQL 4.1, Percona 5.1 ou MySQL 5.5 le feraient. Même si j'ai déjà installé les plugins semisync 5.5, je suis juste un peu paresseux sur les plugins.
RolandoMySQLDBA
0

D'après tout ce qui a déjà été dit et ce que je pense des serveurs DB: "2 hex core xeon 2620 avec 16 Go 1333" me semble être le premier choix.

Utilisez RDIMM3 avec une vitesse de 1333 MHz - 12 ou 15 Go est probablement plus rapide que 16 Go, car vous pouvez diviser le nombre de modules DIMM par 3.

Si votre base de données est lourde en écriture, recherchez également de bonnes performances d'E / S sur disque.

Nils
la source