Optimisation de l’utilisation de la mémoire MySQL :
Comme expliqué précédemment, ajustez les paramètres de mémoire MySQL tels que innodb_buffer_pool_size, key_buffer_size et query_cache_size pour vous assurer que l’utilisation totale de la mémoire MySQL ne dépasse pas la mémoire disponible.
6. Réglage de la mémoire pour le cache
Le cache est un composant important de MySQL qui permet d’améliorer les performances en stockant les données fréquemment consultées en mémoire, réduisant ainsi le besoin d’accéder à des disques plus lents. En utilisant efficacement la mise en cache, vous pouvez améliorer la vitesse des requêtes et réduire la charge sur le système de stockage. Les deux principaux types de caches utilisés dans MySQL sont le cache MyISAM et le cache InnoDB.
Configuration du cache pour MyISAM et InnoDB
MyISAM Cache
MyISAM est un ancien moteur de stockage MySQL et utilise key_buffer_size comme paramètre principal pour définir la taille de son cache d’index. Ce paramètre est très important, car les index mis en cache sont accessibles beaucoup plus rapidement que les index qui doivent être lus à partir du disque.
key_buffer_size : spécifie la taille du cache pour l’index MyISAM. Si cette taille est trop petite, vous pouvez ralentir fréquemment l’accès au disque, tandis que si vous la définissez sur une taille trop grande, vous pouvez laisser un peu de mémoire pour d’autres besoins. En règle générale, key_buffer_size doit être défini entre 25 et 30 % de la mémoire physique totale sur un serveur qui utilise uniquement MyISAM.
Exemples de paramètres dans le fichier de configuration MySQL (my.cnf) :
[mysqld]
key_buffer_size = 4G
InnoDB Cache
InnoDB est le moteur de stockage par défaut et le plus utilisé dans MySQL. InnoDB utilise innodb_buffer_pool_size pour configurer le cache principal qui stocke les données et les index des tables InnoDB.
innodb_buffer_pool_size : spécifie la taille du pool de mémoires tampons utilisé pour stocker les données et les index. Ce paramètre est essentiel pour les performances d’InnoDB, car les données fréquemment consultées sont stockées dans un pool de mémoires tampons, ce qui réduit l’accès au disque. En règle générale, innodb_buffer_pool_size doit être défini entre 60 et 80 % de la mémoire physique totale sur un serveur qui utilise uniquement InnoDB.
Exemples de paramètres dans le fichier de configuration MySQL (my.cnf) :
[mysqld]
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances : Si le pool de mémoires tampons est volumineux (plus de 1 Go), vous pouvez le diviser en plusieurs instances pour augmenter la simultanéité. Par exemple, si innodb_buffer_pool_size est défini sur 12 Go, vous pouvez le diviser en 4 instances de 3 Go chacune :
[mysqld]
innodb_buffer_pool_size = 12G
innodb_buffer_pool_instances =4
Cache de requêtes (général)
MySQL dispose également d’un cache de requêtes qui stocke les résultats des requêtes fréquemment répétées afin d’accélérer le temps d’exécution des requêtes suivantes. Cependant, dans la dernière version, le cache de requête est considéré comme obsolète et a été supprimé dans MySQL 8.0 en raison de problèmes de performances dans les environnements avec beaucoup d’écritures.
query_cache_size : Si vous utilisez une ancienne version de MySQL, vous pouvez définir la taille de la requête de cache avec ce paramètre. Toutefois, nous vous recommandons d’utiliser la mise en cache au niveau de l’application ou des proxys de cache pour une meilleure gestion.
[mysqld]
query_cache_size = 256M