Services webmasters
Partenaires
Jeux concours gratuits
 
Réglage des paramètres du serveur
<<<
Influences de la compilation et des liaisons sur la vitesse de MySQL Comment MySQL gère la mémoire
>>>

5.5 Optimisation du serveur MySQL
5 Optimisation de MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Réglage du système, au moment de la compilation, et paramètres du démarrage
Réglage des paramètres du serveur
->Influences de la compilation et des liaisons sur la vitesse de MySQL
Comment MySQL gère la mémoire
Comment MySQL utilise le DNS
Syntaxe de SET

5.5.3 Influences de la compilation et des liaisons sur la vitesse de MySQL

La plupart des tests suivants ont été réalisés sous Linux avec les outils comparatifs de MySQL, mais ils peuvent donner quelques indications pour d'autres systèmes d'exploitation et sur une charge de travail différente.

Les exécutables les plus rapides sont obtenus en liant avec -static .

Sur Linux, le code le plus rapide sera obtenu en compilant avec pgcc et -O3 . Pour compiler sql_yacc.cc avec ces options, il faut environ 200 Mo de mémoire car gcc/pgcc demande beaucoup de mémoire pour créer toutes les fonctions d'une traite. Il est aussi possible d'utiliser CXX=gcc à la configuration de MySQL pour éviter l'inclusion de la bibliothèque libstdc++ (qui n'est pas nécessaire). Sachez que pour certaines versions de pgcc , le code résultant ne fonctionnera que sur de vrais processeurs Pentium, même si vous utilisez l'option du compilateur qui doit génerer du code fonctionnant sur tour les types de processeurs x586 (comme AMD).

L'utilisation du meilleur compilateur et/ou de la meilleur option de compilation permet de gagner 10 à 30% de vitesse dans vos applications. C'est très important quand vous compilez le serveur SQL vous-même !

Nous avons compilé avec les compilateurs de Cygnus CodeFusion et de Fujitsu, mais aucun des deux n'était suffisamment exempt d'erreurs pour permettre la compilation de MySQL avec l'optimisation.

A la compilation de MySQL, vous devriez uniquement utiliser le support des caractères que vous allez utiliser. (Option --with-charset=xxx .) Les distributions binaires standards de MySQL sont compilées avec le support de toutes les gammes de caractères.

Voici une liste des mesures que nous avons effectués:
  • L'utilisation de pgcc et la compilation complète avec l'option -O6 donne un serveur mysqld 1% plus rapide qu'avec gcc 2.95.2.
  • Si vous utilisez la liaison dynamique (sans -static ), le résultat est 13% plus lent sur Linux. Sachez que vous pouvez néanmoins utiliser la liaison dynamique pour les bibliothèques de MySQL. Seul le serveur a des performances critiques.
  • Si vous allégez votre binaire mysqld avec l'option strip libexec/mysqld , vous obtenez un binaire jusqu'à 4% plus rapide.
  • Si vous utilisez TCP/IP plutôt que les "sockets" Unix, le résultat est 7.5% plus lent sur le même ordinateur. (Si vous vous connectez sur localhost , MySQL utilisera les sockets par défaut.)
  • Si vous vous connectez en TCP/IP depuis un autre ordinateur avec un lien Ethernet 100M, le résultat sera 8 à 11% plus lent.
  • L'utilisation de connections sécurisées ( toutes les données chiffrées par le support interne de SSL) pour nos tests comparatifs a provoqué une perte de vitesse de 55%.
  • Si vous compilez avec --with-debug=full , vous perdrez 20% de performances sur la plupart des requêtes, mais la perte peut être plus importante sur certaines requêtes (La suite de tests de MySQL tourne 35% plus lentement). Si vous utilisez --with-debug , vous ne perdrez que 15%. En démarrant une version de mysqld , compilée avec --with-debug=full , avec with --skip-safemalloc , le résultat final devrait être proche d'une compilation avec --with-debug .
  • Sur un Sun UltraSPARC-IIe, Forte 5.0 est 4% plus rapide que gcc 3.2.
  • Sur un Sun UltraSPARC-IIe, Forte 5.0 est 4% plus rapide en mode 32 bit qu'en mode 64 bit.
  • La compilation avec gcc 2.95.2 sur UltraSPARC avec l'option -mcpu=v8 -Wa,-xarch=v8plusa améliore les performances de 4%.
  • Sur Solaris 2.5.1, MIT-pthreads est 8-12% plus lent que la gestion native des threads de Solaris sur mono-processeur. Avec plus de charge ou de CPU, la différente devrait être encore plus grande.
  • Le fonctionnement avec --log-bin rend mysqld 1% plus lent.
  • La compilation sur Linux-x86 avec gcc sans les pointeurs -fomit-frame-pointer ou -fomit-frame-pointer -ffixed-ebp rend mysqld 1 à 4% plus rapide.
Autrefois les distributions fournies par MySQL AB de MySQL-Linux étaient compilées avec pgcc , mais nous avons dû revenir au simple gcc à cause d'un bogue dans pgcc qui génerait du code qui ne fonctionnait pas sur AMD. Nous continuerons à utiliser gcc tant que ce bogue ne sera pas corrigé. Néanmoins, si vous avez une machine non-AMD, vous pouvez obtenir des binaires plus rapides en compilant avec pgcc . Le binaire standard de MySQL pour Linux est lié statiquement pour être plus rapide et plus portable.

<< Influences de la compilation et des liaisons sur la vitesse de MySQL >>
Réglage des paramètres du serveur Optimisation du serveur MySQL Comment MySQL gère la mémoire
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -