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 15.12, « Conseils pour l'amélioration des performances InnoDB
».
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.