L'optimisation des performances MySQL implique de nombreux aspects. Cet article explique certains paramètres clés de MySQL. Ces paramètres sont, dans une certaine mesure, les paramètres clés qui déterminent les performances de la base de données MySQL. Nous rencontrons souvent des problèmes de performances lors de la gestion et du développement de bases de données, ce qui implique une optimisation des performances MySQL. Grâce à la recherche d'informations sur Internet et aux propres tentatives de l'auteur, je pense que les paramètres système suivants sont plus critiques :
Paramètre clé un : back_log
Le nombre de connexions que MySQL doit avoir. Cela fonctionne lorsque le thread principal MySQL reçoit de nombreuses demandes de connexion sur une courte période de temps, puis que le thread principal prend un certain temps (bien que brièvement) pour vérifier les connexions et démarrer un nouveau thread.
La valeur back_log indique combien de requêtes peuvent être stockées dans la pile sur une courte période de temps avant que MySQL ne cesse temporairement de répondre aux nouvelles requêtes. Ce n'est que si vous prévoyez de nombreuses connexions sur une courte période que vous devez l'augmenter. En d'autres termes, cette valeur correspond à la taille de la file d'attente d'écoute pour les connexions TCP/IP entrantes. Votre système d'exploitation a sa propre limite sur cette taille de file d'attente. Tenter de définir back_log une valeur supérieure à la limite de votre système d'exploitation n'aura aucun effet.
Lorsque vous observez votre liste de processus hôte et trouvez un grand nombre de processus 264084 | utilisateur non authentifiés | xxx.xxx.xxx.xxx | NULL Connect | NULL login | La valeur par défaut est 50, je l'ai changée en 500.
Paramètre clé deux : interactive_timeout
Nombre de secondes pendant lesquelles le serveur attend une action sur une connexion interactive avant de la fermer. Un client interactif est défini comme un client utilisant l'option CLIENT_INTERACTIVE de mysql_real_connect(). La valeur par défaut est 28800, je l'ai changée en 7200.
Troisième paramètre clé : key_buffer_size
Les blocs d'index sont mis en mémoire tampon et partagés par tous les threads. key_buffer_size est la taille du tampon utilisée pour les blocs d'index, augmentez-la pour obtenir une meilleure gestion de l'index (pour toutes les lectures et écritures multiples), autant que vous pouvez vous le permettre. Si vous le rendez trop gros, le système commencera à paginer et ralentira vraiment. La valeur par défaut est 8388600 (8 Mo) et mon hôte MySQL dispose de 2 Go de mémoire, je l'ai donc changé en 402649088 (400 Mo).
Paramètre clé quatre : max_connections
Le nombre de clients simultanés autorisés. Augmenter cette valeur augmente le nombre de descripteurs de fichiers requis par mysqld. Ce nombre doit être augmenté, sinon vous verrez fréquemment des erreurs Trop de connexions. La valeur par défaut est 100, je l'ai changée en 1024.
Paramètre clé cinq : record_buffer
Chaque thread effectuant une analyse séquentielle alloue un tampon de cette taille pour chaque table qu'il analyse. Si vous effectuez de nombreuses analyses séquentielles, vous souhaiterez peut-être augmenter cette valeur. La valeur par défaut est 131072 (128K), je l'ai changée en 16773120 (16M)
Paramètre clé six : sort_buffer
Chaque thread qui doit être trié se voit attribuer un tampon de cette taille. L’augmentation de cette valeur accélère les opérations ORDER BY ou GROUP BY. La valeur par défaut est 2097144 (2M), je l'ai changée en 16777208 (16M).
Paramètre clé sept : table_cache
Le nombre de tables ouvertes pour tous les threads. Augmenter cette valeur augmente le nombre de descripteurs de fichiers requis par mysqld. MySQL nécessite 2 descripteurs de fichiers pour chaque table ouverte unique. La valeur par défaut est 64, je l'ai changée en 512.
Paramètre clé huit : thread_cache_size
Le nombre de threads stockés dans lesquels peuvent être réutilisés. Si tel est le cas, le nouveau thread est récupéré du cache et s'il reste de l'espace lorsque la connexion est déconnectée, le thread du client est placé dans le cache. S'il existe de nombreux nouveaux threads, cette valeur variable peut être utilisée pour améliorer les performances. En comparant les variables dans les états Connections et Threads_created, vous pouvez voir le rôle de cette variable. Je l'ai mis à 80.
Paramètre clé neuf : wait_timeout
Nombre de secondes pendant lesquelles le serveur attend une action sur une connexion avant de la fermer. La valeur par défaut est 28800, je l'ai changée en 7200.
Remarque : L'ajustement des paramètres peut être réalisé en modifiant le fichier /etc/my.cnf et en redémarrant MySQL. Il s'agit d'un travail relativement prudent, et les résultats ci-dessus ne sont que quelques-uns de mes avis. Vous pouvez le modifier davantage en fonction des conditions matérielles de votre propre hôte (en particulier la taille de la mémoire).