Commencez par tester votre installation ! Vous pouvez prendre n'importe quel programme de la suite de test MySQL (normalement fournie dans le dossier ``sql-bench'') et la modifier selon vos besoin. Vous pourrez ainsi essayer différentes solutions, et trouver celle qui est le plus rapide :@:
mysqld avec les options adéquates. Plus de mémoire accélère MySQL, si vous en avez.. 10.1 Optimisation des valeurs du serveur.
NOT NULL si possible. 10.12 Comment constituer une table pour qu'elle soit petite et rapide?.
isamchk pour vérifier les tables sans arrêter le serveur mysqld. L'option --skip-locking désactive le verrouillage externe entre deux requête SQL. Cela accélère les traitements mais il y a des inconvénients :
mysqladmin flush-tables avec de vérifier et réparer des tables avec isamchk. (isamchk -d nom_table est toujours autorisé, car c'est un simple affichage d'informations).
L'option --skip-locking est mise par défaut lors de la compilation avec MIT-pthreads, car flock()n'est pas supporté par MIT-pthreads sur toutes les plate-formes. Le seul ca où il est impossible d'utiliser --skip-locking est lorsque vous avez plusieurs SERVEUR MySQL (pas les clients) avec les mêmes données (ou bien exécutez isamchk sur une table sans avoir vidé les tables de la mémoire). Vous pouvez toujours utiliser use LOCK TABLES / UNLOCK TABLES même si vous avec mis l'option --skip-locking
Si votre problème porte sur une fonction particulière de MySQL, vous pouvez toujours la chronométrer avec le client MySQL:@:
mysql> select benchmark(1000000,1+1); +------------------------+ | benchmark(1000000,1+1) | +------------------------+ | 0 | +------------------------+ 1 row in set (0.32 sec)
L'exemple ci dessus montre que MySQL peut exécuter plus de 1,000,000 de fois l'expressions en 0.32 seconde sur un simple PentiumII 400MHz.
Toutes les fonctions MySQL sont très optimisées ; mais il peut y avoir des exceptions, et l'utilitaire benchmark(loop_count,expression) est un bon outil pour étudier votre problème.