1. Il n’existe pas deux bases de données ou applications exactement identiques. On suppose ici que la base de données que nous ajustons est destinée à servir un site Web « typique », où les priorités sont des requêtes rapides, une bonne expérience utilisateur et la gestion de grandes quantités de trafic.
2. Avant d'optimiser le serveur, veuillez effectuer une sauvegarde de la base de données !
Cet article vous apporte principalement 3 petits ajustements simples pour optimiser MySQL. Les amis qui en ont besoin peuvent s'y référer. J'espère qu'il pourra aider tout le monde.
1. Utilisez le moteur de stockage InnoDB
Si vous utilisez toujours le moteur de stockage MyISAM, il est temps de passer à InnoDB. Il existe de nombreuses raisons pour lesquelles InnoDB a un avantage sur MyISAM. Si vous êtes préoccupé par les performances, examinons comment ils utilisent la mémoire physique :
MyISAM : sauvegarde en mémoire uniquement. l'indice.
InnoDB : Enregistrez les index et les données en mémoire.
Conclusion : le contenu stocké en mémoire est accessible plus rapidement que le contenu sur le disque.
Voici comment convertir le moteur de stockage sur votre table :
ALTER TABLE table_name ENGINE=InnoDB;
Remarque : Vous avez créé tous les index appropriés, n'est-ce pas ? Pour de meilleures performances, la création d'index est toujours la première priorité.
2. Laissez InnoDB utiliser toute la mémoire
Vous pouvez modifier votre configuration MySQL dans le fichier my.cnf. Utilisez le paramètre innodb_buffer_pool_size pour configurer la quantité de mémoire physique qu'InnoDB est autorisé à utiliser sur votre serveur.
La « règle générale » acceptée pour cela (en supposant que votre serveur exécute uniquement MySQL) est de le définir sur 80 % de la mémoire physique de votre serveur. Après vous être assuré que le système d'exploitation dispose de suffisamment de mémoire pour fonctionner normalement sans utiliser la partition d'échange, allouez autant de mémoire physique que possible à MySQL.
Donc, si votre serveur dispose de 32 Go de mémoire physique, vous pouvez définir ce paramètre jusqu'à 25 Go.
innodb_buffer_pool_size = 25600M
*Remarque : (1) Si la mémoire de votre serveur est petite et inférieure à 1 Go. Afin d'appliquer les méthodes de cet article, vous devez mettre à niveau votre serveur. (2) Si votre serveur dispose d'une mémoire particulièrement importante, par exemple 200 Go, alors, selon le bon sens, vous n'avez pas besoin de réserver jusqu'à 40 Go de mémoire pour le système d'exploitation. *
3. Laissez InnoDB exécuter plusieurs tâches
Si le paramètre innodb_buffer_pool_size sur le serveur est configuré pour être supérieur à 1 Go, le pool de tampons InnoDB sera divisé en plusieurs selon le paramètre. du paramètre innodb_buffer_pool_instances.
Les avantages d'avoir plus d'un pool de tampons sont :
Des goulots d'étranglement peuvent survenir lorsque plusieurs threads accèdent simultanément au pool de tampons. Vous pouvez minimiser ce conflit en activant plusieurs pools de mémoire tampon :
La recommandation officielle concernant le nombre de pools de mémoire tampon est :
Pour de meilleurs résultats, tenez compte des paramètres innodb_buffer_pool_instances et innodb_buffer_pool_size pour vous assurer que chaque instance a au moins 1 Go de pool de mémoire tampon.
Donc, dans notre exemple, définissez le paramètre innodb_buffer_pool_size à 25 Go sur un serveur avec 32 Go de mémoire physique. Un réglage approprié est 25600M / 24 = 1,06 Go
innodb_buffer_pool_instances = 24
Attention !
Après avoir modifié le fichier my.cnf, vous devez redémarrer MySQL pour que cela prenne effet :
sudo service mysql restart
Il existe des moyens plus scientifiques pour optimiser ces paramètres, mais ces points peuvent être utilisés en général, l'application de ces directives améliorera les performances de votre serveur MySQL.
Recommandations associées :
Analyse et optimisation de l'efficacité des requêtes conjointes multi-tables Mysql
Conseils pour optimiser MySQL sous Linux
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!