web-dev-qa-db-fra.com

Les performances du processeur sont-elles pertinentes pour un serveur de base de données?

Il s'agit d'une question purement théorique. Disons que j'ai une application déployée sur plusieurs serveurs.

  1. Un équilibreur de charge,
  2. Serveurs d'applications multiples/évolutifs
  3. A (single) database server (for the moment)

Sur les deux premières parties, je sais quoi chercher. Mais qu'en est-il du serveur de base de données? Quel type de matériel dois-je rechercher?

  • La fréquence du processeur est-elle pertinente pour un serveur de base de données?
  • Les processeurs multi-cœurs sont-ils pertinents?
  • RAM est-il plus important que le CPU?

PS: Supposons que la base de données choisie soit MySQL ou PostgreSQL.

33
Zenklys

Pour PostgreSQL, la puissance du processeur peut être très pertinente, surtout si un pourcentage assez élevé de l'ensemble de travail actif de vos données tient dans la RAM. La plupart des bases de données avec lesquelles j'ai travaillé ont la puissance du processeur comme principal goulot d'étranglement la plupart du temps. (Je viens de vérifier vmstat sur un serveur hébergeant des sites Web avec des millions de visites par jour hébergeant plus de 5 To d'espace de base de données, et je n'ai jamais vu plus de 2% de temps d'attente sur le disque, mais j'ai vu un pic de 12% de temps CPU utilisateur.)

Étant donné que PostgreSQL est basé sur des processus, tout processus unique ne peut fonctionner que sur un cœur, mais dans un mélange comme celui que nous avons sur le serveur mentionné ci-dessus, avec un volume élevé de petites demandes, le CPU total sur tous les cœurs est le plus important. Pour la même puissance CPU totale, PostgreSQL fera généralement mieux avec moins de cœurs plus rapides que de nombreux cœurs plus lents.

Jusqu'au moment où un pourcentage élevé de votre ensemble de données actif est mis en cache, l'ajout de RAM affichera généralement plus pour l'argent que l'ajout de cœurs. Une fois la mise en cache suffisante, l'avantage de supplémentaire RAM diminue et il vaut mieux augmenter la puissance du processeur.

Pour plus de détails sur ce sujet en ce qui concerne PostgreSQL, je ne pense pas qu'il existe une meilleure source que PostgreSQL 9.0 High Performance by Greg Smith . (Divulgation complète, j'étais un réviseur technique pour le livre, mais je n'obtiens aucun avantage financier basé sur les ventes.)

29
kgrittn

Strictement du point de vue MySQL, c'est une question très chargée

Fréquence du processeur pertinente pour un serveur de base de données?

Bien que le processeur et la carte mère plus rapides soient excellents, d'autres goulots d'étranglement peuvent gêner. Ces goulots d'étranglement comprennent:

  • E/S disque
  • Maximums de connexion
  • La latence du réseau
  • Performances des requêtes par connexion

Chaque petit avantage aide, mais je dois dire Non parce que la vitesse du processeur, en soi, n'améliore pas les goulots d'étranglement susmentionnés. Après tout, que peut faire une voiture de course de Formule 1 avec un parachute ouvert ou avec un gorille de 800 livres au volant?

Les processeurs multi-cœurs sont-ils pertinents?

Cela dépend entièrement de la version de MySQL que vous utilisez. MySQL 5.1 InnoDB Plugin, MySQL 5.5 et Percona Server XtraDB ont tous des paramètres VOUS DEVEZ CONFIGURER CORRECTEMENT pour obtenir InnoDB accéder à tous les cœurs. La véritable incitation à faire cela vient du fait que certaines anciennes versions de MySQL LEFT UNCONFIGURED sont plus rapides que les versions plus récentes comme je l'ai expliqué dans mes précédents articles:

Par conséquent, si vous n'êtes pas prêt à configurer InnoDB pour accéder à tous les processeurs, avoir plusieurs cœurs vous n'achète absolument rien.

RAM est-il plus important que le CPU?

Oh, oui en effet. La configuration de la mémoire pour MySQL implique la mise en place

Demander trop peu ou trop de toute combinaison de ces choses et MySQL revient pour vous mordre. Un processeur plus rapide avec MySQL mal configuré pour RAM fait juste que MySQL vous mord plus vite.

23
RolandoMySQLDBA
  • Non
  • Non
  • Oui

En termes simples, vous avez besoin de RAM et IO performances (latence + vitesse de lecture + vitesse d'écriture) pour les bases de données).

Le choix de 4 ou 6 cœurs ou 2,5 GHz vs 3 GHz n'est pas vraiment pertinent (je suppose que vous n'avez pas à choisir entre un P3-450 avec 32 Go RAM ou le dernier Xeon avec 1 Go de RAM).

Si vous êtes lié au processeur, vous avez d'autres problèmes (mauvaise conception, index pauvres, échange, serveur non dédié, etc.)

6
gbn