La "meilleure pratique" est la suivante :
- Mesurez les performances, en isolant le sous-système concerné aussi bien que possible.
- Identifier la cause première du goulot d'étranglement. Êtes-vous limité en termes d'E/S ? Limité par l'unité centrale ? De la mémoire ? Vous attendez des verrous ?
- Apporter des changements pour atténuer la cause fondamentale que vous avez découverte.
- Mesurez à nouveau, pour démontrer que vous avez résolu le goulot d'étranglement et que vous êtes en mesure d'assurer la sécurité. de combien .
- Passez à l'étape 2 et répétez l'opération si nécessaire jusqu'à ce que le système fonctionne suffisamment rapidement.
S'abonner au flux RSS à l'adresse suivante http://www.mysqlperformanceblog.com et lisez également ses articles historiques. C'est une ressource extrêmement utile pour les questions de performance. Par exemple, vous avez posé une question sur InnoDB par rapport à MyISAM. Leur conclusion : InnoDB est en moyenne 30 % plus performant que MyISAM. Il existe toutefois quelques scénarios d'utilisation dans lesquels MyISAM est plus performant qu'InnoDB.
Les auteurs de ce blog sont également co-auteurs de "High Performance MySQL", le livre mentionné par @Andrew Barnett.
Re comment from @ʞɔıu : La façon de savoir si l'on est lié aux E/S, au CPU ou à la mémoire dépend de la plateforme. Le système d'exploitation peut proposer des outils tels que ps, iostat, vmstat ou top. Il se peut aussi que vous deviez vous procurer un outil tiers si votre système d'exploitation n'en fournit pas.
Fondamentalement, la ressource qui est utilisée à 100 %/saturation est susceptible d'être votre goulot d'étranglement. Si la charge du processeur est faible mais que la charge des E/S est à son maximum pour votre matériel, alors vous êtes limité par les E/S.
Il ne s'agit toutefois que d'un seul point de données. 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 entrées/sorties. Faut-il augmenter le matériel ou le rendre plus rapide, ou faut-il revoir la conception de la requête pour éviter le tri de fichiers ?
Les facteurs sont trop nombreux pour être résumés dans un post StackOverflow, et le fait qu'il existe de nombreux livres sur le sujet le confirme. Le fonctionnement efficace des bases de données et l'utilisation optimale des ressources est un travail à temps plein qui nécessite des compétences spécialisées et une étude constante.
Jeff Atwood vient d'écrire un article de blog intéressant sur la détection des goulets d'étranglement dans un système :