diff --git a/MySQL/HowtoOptimize.md b/MySQL/HowtoOptimize.md index aa552296..843b1d42 100644 --- a/MySQL/HowtoOptimize.md +++ b/MySQL/HowtoOptimize.md @@ -1,80 +1,15 @@ --- -title: Howto MySQL : optimisation et configuration avancée. +title: Howto MySQL : optimisation avancée. ... Pour le guide d'installation et d'usage courant, consultez [/HowtoMySQL](). -## Configuration - -Rappel : selon les ressources de la machine, il faut optimiser les directives dans `my.cnf` (par défaut, la configuration est adaptée… pour un petit serveur !). Sous Debian, on trouvera quelques exemples dans le répertoire `/usr/share/doc/mysql-server-5.0/examples/` - -Voici les paramètres essentiels : - -~~~{.ini} -[mysqld] - -###### Connexions -# Maximum de connexions concurrentes (defaut = 100)… provoque un "Too many connections" -max_connections = 250 -# Maximum de connexions en attente en cas de max_connections atteint (defaut = 50) -back_log = 100 -# Maximum d'erreurs avant de blacklister un hote -max_connect_errors = 10 -# Loguer les requetes trop longues -log_slow_queries = /var/log/mysql/mysql-slow.log -long_query_time = 2 - -###### Tailles -# Taille reservee au buffer des index MyIsam -# A ajuster selon les resultats -key_buffer = 512M -# Taille max des paquets envoyés/reçus … provoque un "Packet too large" -max_allowed_packet = 64M -# Taille de la memoire reserve pour un thread -thread_stack = 192K -# A mettre le nombre de CPU x2 -thread_cache_size = 8 -# Taille maximum des tables de type MEMORY -max_heap_table_size = 64M - -###### Cache -# max_connections x nbre max de tables dans une jointure (defaut = 64) -table_cache = 1500 -# Taille max des requetes cachees (defaut = 1M) -query_cache_limit = 8M -# Taille reservee pour le cache (defaut = 0) -query_cache_size = 256M -# Type de requetes a cacher (defaut tout peut etre cache) -query_cache_type = 1 - -###### InnoDB -# Si InnoDB n'est pas utilise… le desactiver -#skip-innodb -# En general, il est plus optimum d'avoir un fichier par table -innodb_file_per_table -# Taille memoire allouee pour le cache des datas et index -# A ajuster en fonction de sa RAM (si serveur dedie a MySQL, on peut aller jusqu'a 80%) -innodb_buffer_pool_size = 2G -# Taille buffer memoire pour structures internes InnoDB -innodb_additional_mem_pool_size = 16M -# Nombre maximum de threads systeme concurents -innodb_thread_concurrency = 16 -# Ajuste la valeur des logs InnoDB -# (attention, il faut ensuite stopper MySQL et effacer les fichiers ib_logfile*) -innodb_log_file_size = 128M -innodb_log_files_in_group = 2 - -###### Misc -# charset utf8 par defaut -default-character-set=utf8 -~~~ - ## mysqltuner -Après quelque temps d'utilisation, il est très intéressant de regarder les résultats du script `mysqltuner.pl` téléchargeable sur http://mysqltuner.pl/ +Après quelque temps d'utilisation, il est très intéressant de regarder les résultats du script `mysqltuner.pl` téléchargeable via http://mysqltuner.pl/ ~~~ -perl mysqltuner.pl +# perl mysqltuner.pl >> MySQLTuner 1.0.1 - Major Hayden >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ @@ -130,7 +65,7 @@ Variables to adjust: ## tunning-prime -Il y a aussi tunning-prime qui est plus verbeux, et il se complète bien avec mysql-tuner. Dispo [ici](https://launchpad.net/mysql-tuning-primer/trunk). +Il y a aussi [tunning-prime](https://launchpad.net/mysql-tuning-primer/trunk) qui est plus verbeux, il complète bien *mysqltuner*. ~~~ -- MYSQL PERFORMANCE TUNING PRIMER -- @@ -320,9 +255,10 @@ Ajouter dans le `/etc/security/limits.conf` : ulimit -l unlimited ~~~ -Enfin dans la partie `[mysqld]` de `my.cf` ajouter : +Enfin dans la configuration MySQL : -~~~ +~~~{.ini} +[mysqld] large-pages ~~~ @@ -345,7 +281,7 @@ $ bzr branch lp:sql-bench Installer quelques outils nécessaires pour le benchmark : ~~~ -# aptitude install libclass-dbi-perl libdbd-mysql-perl mysql-client-5.1 +# apt install libclass-dbi-perl libdbd-mysql-perl mysql-client-5.1 ~~~ Créer une base de données de test : @@ -426,9 +362,9 @@ Il peut être intéressant de changer le chemin du tmpdir pour le mettre sur un # chmod 700 /ssd/mysqltmp ~~~ -Puis dans /etc/mysql/my.cnf. +Puis dans la configuration MySQL : -~~~{.diff} --tmpdir = /tmp -+tmpdir = /ssd/mysqltmp +~~~{.ini} +[mysqld] +tmpdir = /ssd/mysqltmp ~~~