Optimiser son serveur MySQL
Par placeoweb, mercredi 4 octobre 2006 à 00:31 :: SQL :: #24 :: rss
Votre serveur MySQL commence à ne plus supporter la charge de vos nombreuses requêtes... terminons l'installation initiale par une configuration du daemon mysql via les variables mysql. (Document orienté mysql 4.0.1x)
Les variables du serveur mysql sont stockés dans /etc/my.cnf
mysqld port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking set-variable = max_allowed_packet=1M set-variable = table_cache=512 set-variable = record_buffer=2M set-variable = thread_cache=8 #set-variable = thread_concurrency=4 # Try number of CPU's*2 set-variable = myisam_sort_buffer_size=64M set-variable = query_cache_size=0 # Désactive l'utilisation du cache set-variable = sort_buffer_size=10M set-variable = read_buffer_size=4M set-variable = key_buffer_size=1G set-variable = join_buffer_size=2M
Ou modifiables à chaud en utilisant les requêtes suivantes
SET GLOBAL join_buffer_size=2097152; # 2M SET GLOBAL key_buffer_size=1073741824; # 1G SET GLOBAL read_buffer_size=4194304; # 4M SET GLOBAL sort_buffer_size=10485760; #10M
join_buffer_size
La taille du buffer qui est utilisée pour les jointures complètes (les jointures qui n'utilisent pas d'index). Ce buffer est alloué une fois pour chaque jointure entre deux tables. Augmentez cette valeur si vous voulez obtenir des jointures plus rapides, lorsque l'ajout d'index n'est pas possible. Normalement, le mieux est d'ajouter de bons index.
key_buffer_size
Les blocs d'index des tables MyISAM et ISAM sont mis en buffer et partagés par tous les threads. key_buffer_size est la taille du buffer utilisé. Le buffer de clé est aussi appelé le cache de clé.
Augmentez cette valeur pour obtenir une meilleure gestion des index (pour les lectures et écritures multiples), autant que vous le pouvez : 64 Mo sur une machine de 256 Mo est une valeur répandue. Toutefois, si vous utilisez une valeur trop grande (par exemple, plus de 50% de votre mémoire totale), votre système risque de commencer à utiliser sa mémoire swap, et devenir très lent. N'oubliez pas que MySQL ne met pas en cache les données lues, et il faut laisser le système d'exploitation respirer.
Pour obtenir encore plus de vitesse lors de l'écriture de plusieurs lignes en même temps, utilisez LOCK TABLES.
read_buffer_size
Chaque thread qui fait une recherche séquentielle alloue un buffer de cette taille pour son scan. Si vous faites de nombreux scan séquentiels, vous pourriez avoir besoin d'augmenter cette valeur. Cette variable a été ajoutée en MySQL 4.0.3. Auparavant, cette variable s'appelait record_buffer.
sort_buffer_size
Chaque thread qui doit faire un tri alloue un buffer de cette taille. Augmentez cette taille pour accélérer les clauses ORDER BY ou GROUP BY.
Florian propose l'essentiel de la configuration mysql. Et le site officiel de mysql explique ses variables de paramétrage d'un serveur mysql.
Commentaires
1. Le jeudi 31 janvier 2008 à 02:08, par mrbark
2. Le jeudi 7 février 2008 à 00:29, par Optimiser le serveur MySQL
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.