Variables MySQL pour les performances

le 22/08/2007 à 13:50
Variables MySQL pour les performances
Pour gagner en performances avec MysQL, il y a quelques variables à connaître. Les plus importantes sont : key_buffer_size, innodb_buffer_pool_size, innodb_additional_mem_pool_size, innodb_log_file_size, innodb_log_buffer_size, innodb_flush_logs_at_trx_commit, table_cache, thread_cache et query_cache_size.

- Tuning MySQL Server to boost performance
- Automating MySQL- Best Practices Management
- MySQL Security Overview

A lire également

Parvesh Garg a lancé le mois de la variable MySQL : une fois par jour, il braque les spotlights sur une variable MySQL, son utilisation et ses fonctionnalités.

Un bon moyen d'en savoir un peu plus sur les variables de configuration MySQL, qui sont parfois beaucoup plus accessibles qu'elles n'y paraissent. Il en est déjà à la 9eme variable, et a couvert :
- long_query_time (pour les requêtes lentes)
- innodb_autoinc_lock_mode (pour les auto_increment et innodb)
- innodb_thread_concurrency (pour le nombre de thread en cours de fonctionnement)
- max_connect_errors (pour bloquer un hôte trop mal connecté)
- key_buffer_size (pour les performances d'index).

- PARVESH GARG
- Variable's Day Out #9: long_query_time
Lorsque certaines requêtes SQL ont de trop gros résultats, dépassant la taille de tmp_table_size, MySQL ouvre automatiquement une table temporaire sur le disque pour y stocker les données. C'est transparent pour l'utilisateur, hormis pour les performances : une table sur le disque est beaucoup plus lente qu'en mémoire.

Peter Zaitsev compare alors une table temporaire sur le disque et en mémoire : la différence est un gain de l'ordre de 100 fois.

Pour tirer partie des tables temporaires en mémoire, il faut régler deux variables : max_heap_table_size, qui indique la quantité de mémoire réservée aux opérations en mémoire pour MySQL, et tmp_table_size, qui mesure la taille maximale d'une table temporaire en mémoire avant de la passer sur le disque.

Au passage, deux trucs intéressants à noter :

SELECT * FROM table GROUP BY col ORDER BY NULL;

Group by a la facheuse habitude de trier les résultats : avec order by NULL, on peut forcer GROUP BY a ne pas trier, ce qui fait gagner beaucoup de temps selon Peter.

Quand on modifie une variable globale, la connexion courante n'est pas affectée. Seule les nouvelles connexions sont affectées...

- How much overhead is caused by on disk temporary tables

Commentaires

Ecrire

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours