Mysql
 sql >> Base de données >  >> RDS >> Mysql

Bonnes pratiques d'optimisation de la base de données MySQL

La "meilleure pratique" est la suivante :

  1. Mesurez les performances en isolant au mieux le sous-système concerné.
  2. Identifiez la cause première du goulot d'étranglement. Êtes-vous lié aux E/S ? CPU lié? Mémoire liée? En attente de verrouillage ?
  3. Apportez des modifications pour atténuer la cause première que vous avez découverte.
  4. Mesurez à nouveau, pour démontrer que vous avez résolu le goulot d'étranglement et de combien .
  5. Passez à l'étape 2 et répétez autant de fois que nécessaire jusqu'à ce que le système fonctionne assez rapidement.

Abonnez-vous au flux RSS sur http://www.mysqlperformanceblog.com et lisez aussi ses articles historiques. C'est une ressource extrêmement utile pour la sagesse liée à la performance. Par exemple, vous avez posé une question sur InnoDB contre MyISAM. Leur conclusion :InnoDB a des performances supérieures d'environ 30 % à celles de MyISAM en moyenne. Bien qu'il existe également quelques scénarios d'utilisation où MyISAM surpasse InnoDB.

Les auteurs de ce blog sont également co-auteurs de "High Performance MySQL", le livre mentionné par @Andrew Barnett.

Re commentaire de @ʞɔıu :Comment savoir si vous êtes lié aux E/S par rapport au CPU par rapport à la mémoire dépend de la plate-forme. Le système d'exploitation peut proposer des outils tels que ps, iostat, vmstat ou top. Ou vous devrez peut-être obtenir un outil tiers si votre système d'exploitation n'en fournit pas.

Fondamentalement, quelle que soit la ressource qui est indexée à 100 % d'utilisation/saturation, elle est susceptible d'être votre goulot d'étranglement. Si votre charge CPU est faible mais que votre charge d'E/S est à son maximum pour votre matériel, alors vous êtes lié aux E/S.

Ce n'est qu'un point de données, cependant. Le remède peut également dépendre d'autres facteurs. Par exemple, une requête SQL complexe peut effectuer un tri de fichiers, ce qui occupe les E/S. Devriez-vous lancer plus de matériel/plus rapide, ou devriez-vous reconcevoir la requête pour éviter le tri de fichiers ?

Il y a trop de facteurs à résumer dans un article StackOverflow, et le fait qu'il existe de nombreux livres sur le sujet le confirme. Maintenir le fonctionnement efficace des bases de données et tirer le meilleur parti des ressources est un travail à plein temps qui nécessite des compétences spécialisées et une étude constante.

Jeff Atwood vient d'écrire un bel article de blog sur la recherche de goulots d'étranglement dans un système :