:: DEVELOPER ZONE
Vous pouvez obtenir les tailles par défaut des tampons du serveur mysqld
avec la commande:
shell> mysqld --help
Cette commande génère une liste de toutes les options de mysqld et des
variables configurables. Cette sortie comprend les valeurs par défaut et
ressemble à cela :
Possible variables for option --set-variable (-O) are: back_log current value: 5 bdb_cache_size current value: 1048540 binlog_cache_size current value: 32768 connect_timeout current value: 5 delayed_insert_timeout current value: 300 delayed_insert_limit current value: 100 delayed_queue_size current value: 1000 flush_time current value: 0 interactive_timeout current value: 28800 join_buffer_size current value: 131072 key_buffer_size current value: 1048540 lower_case_table_names current value: 0 long_query_time current value: 10 max_allowed_packet current value: 1048576 max_binlog_cache_size current value: 4294967295 max_connections current value: 100 max_connect_errors current value: 10 max_delayed_threads current value: 20 max_heap_table_size current value: 16777216 max_join_size current value: 4294967295 max_sort_length current value: 1024 max_tmp_tables current value: 32 max_write_lock_count current value: 4294967295 myisam_sort_buffer_size current value: 8388608 net_buffer_length current value: 16384 net_retry_count current value: 10 net_read_timeout current value: 30 net_write_timeout current value: 60 read_buffer_size current value: 131072 record_rnd_buffer_size current value: 131072 slow_launch_time current value: 2 sort_buffer current value: 2097116 table_cache current value: 64 thread_concurrency current value: 10 tmp_table_size current value: 1048576 thread_stack current value: 131072 wait_timeout current value: 28800
Si un serveur mysqld est en cours d'exécution, vous pouvez voir les
valeurs que les variables utilisent réellement en exécutant la commande :
mysql> SHOW VARIABLES;
Vous pouvez obtenir les statistiques et différents indicateurs de statut pour un serveur en fonctionnement avec cette commande :
mysql> SHOW STATUS;
Les variables de serveur et de statut sont aussi accessibles avec
mysqladmin:
shell> mysqladmin variables shell> mysqladmin extended-status
Vous pouvez trouver une description complète de toutes les variables système dans les sections Section 5.2.3, « Variables serveur système » et Section 5.2.4, « Variables de statut du serveur ».
MySQL utilise des algorithmes très extensibles, donc vous pouvez utiliser très peu de mémoire. Si malgré tout vous fournissez plus de mémoire à MySQL, vous obtiendrez également de meilleures performances.
Les deux variables les plus importantes au moment du réglage d'un serveur
MySQL sont key_buffer_size et table_cache. Vous devriez
vous assurer que celles sont sont bien paramétrées avant de modifier les
autres variables.
Les exemples suivants indiquent quelques valeurs typiques pour différentes
valeurs de configuration. Les exemples utilisent le script mysqld_safe et
utilisent la syntaxe --name=value pour donner à la variable appelée
name la valeur value. Cette syntaxe est disponible depuis MySQL 4.0.
Pour les anciennes versions de MySQL, prenez en compte ces différences :
Utilisez safe_mysqld plutôt que mysqld_safe.
Utilisez la syntaxe de modification des variables --set-variable=nom=valeur ou
-O name=value.
Pour les noms de variables qui finissent par _size, vous pouvez les spécifier
sans le suffise _size. Par exemple, l'ancien nom de sort_buffer_size est
sort_buffer. L'ancien nom de read_buffer_size est
record_buffer. Pour voir quelles variables votre version du serveur reconnaît,
utilisez mysqld --help.
Si vous avez beaucoup de mémoire (>=256 Mo) et beaucoup de tables, et que vous désirez des performances maximales avec un faible de nombre de clients, vous devriez essayer quelque chose cela:
shell> safe_mysqld -O key_buffer=64M -O table_cache=256 \
-O sort_buffer=4M -O read_buffer_size=1M &
Si vous n'avez que 128 Mo et seulement quelques tables, mais que vous demandez beaucoup de classements, vous pouvez essayer cela :
shell> safe_mysqld -O key_buffer=16M -O sort_buffer=1M
Si vous avez peu de mémoire et beaucoup de connections, essayez cela:
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=100k \
-O read_buffer_size=100k &
Ou encore:
shell> safe_mysqld -O key_buffer=512k -O sort_buffer=16k \
-O table_cache=32 -O read_buffer_size=8k -O net_buffer_length=1K &
Si vous utilisez GROUP BY ou ORDER BY sur des fichiers de taille
supérieure à la mémoire disponible, vous devriez augmenter la valeur de
record_rnd_buffer pour accélérer la lecture des lignes après que le
classement ait été fait.
A l'installation de MySQL, un répertoire support-files est créé, et contient
plusieurs exemples de fichiers my.cnf: my-huge.cnf, my-large.cnf,
my-medium.cnf et my-small.cnf. Vous pouvez les utiliser comme base pour
optimiser votre système.
Si vous avez vraiment beaucoup de connections, des problèmes peuvent apparaître
avec le fichier d'échange si mysqld n'a pas été configuré pour utiliser
peu de mémoire pour chaque connexion. mysqld fonctionne mieux si vous
avec suffisamment de mémoire pour toutes les connections, bien sûr !
Notez que si vous changez une option de mysqld, elle ne prendra effet
qu'au prochain démarrage du serveur.
Pour voir les effets d'un changement de paramètre, essayez quelque chose comme ca:
shell> mysqld -O key_buffer=32m --help
Les valeurs des variables sont listées vers la fin du résultat.
Assurez vous bien de la présence de l'option --help en fin de ligne; si ce n'est
pas le cas, les options listées après dans la ligne de commande ne seront pas prises
en compte à la sortie.
Pour plus d'information sur le paramétrage du moteur InnoDB, voyez la section
Section 16.12, « Conseils pour l'amélioration des performances InnoDB ».
© 1995-2005 MySQL AB. All rights reserved.
