Maison > Article > base de données > Exemple détaillé de la façon de résoudre le problème selon lequel MySQL occupe trop de mémoire
Cet article vous apporte des connaissances pertinentes sur mysql. Il résout principalement les problèmes liés à l'utilisation excessive de la mémoire. Deux systèmes, Windows et CentOS7, sont utilisés pour résoudre ce problème. J'espère que cela aidera tout le monde. .
Apprentissage recommandé : Tutoriel vidéo mysql
Pour certains joueurs petits bourgeois, le nombre de serveurs et la mémoire sont souvent très limités. Par exemple, ma configuration de serveur personnel est de 2 cores 4G5M.
La mémoire 4G n'est vraiment pas si grande pour les joueurs Java. Il y a vraiment beaucoup de monde pour ouvrir quelques middlewares + propres microservices, et puis MySQL est une grosse erreur. MySQL sur ma machine locale n'occupe que quelques Mo de mémoire (même si je ne l'utilise pas beaucoup, MySQL sur cette machine est bel et bien ouvert) :
alors que le serveur occupe 400 Mo, donc il n'y a en fait aucun débit. Juste pour y jouer seul, l'utilisation de la mémoire est vraiment trop importante. . .
J'ai appris que l'utilisation de la mémoire de MySQL peut être réduite en modifiant la configuration, alors je l'ai essayé et enregistré. Comme j'ai deux serveurs en même temps, l'un est installé avec Windows Service 2016 et l'autre avec CentOS7. La situation sur les deux serveurs est similaire, je ferai donc deux enregistrements en même temps pour votre référence.
L'emplacement par défaut du fichier de configuration est C:ProgramDataMySQLMySQL Server 8.0my.ini S'il y a des modifications, recherchez-le en fonction de votre situation réelle.
Le chemin par défaut du fichier de configuration est /etc/my.cnf S'il y a une modification, vous pouvez la trouver en fonction de votre situation réelle.
Vous pouvez utiliser Ctrl + F pour effectuer une recherche sous Windows, et vous pouvez utiliser « /key » pour rechercher sous Linux. Si vous ne savez pas comment faire, vous pouvez vous référer à Baidu.
Il y a trois choses que nous devons trouver et modifier :
Trouver table_definition_cache
, nous l'avons modifié à 400table_definition_cache
,我们修改为400
官方解释为:可以存储在定义缓存中的表定义数(来自.frm文件)。如果使用大量表,可以创建大型表定义缓存以加快表的打开速度。与普通的表缓存不同,表定义缓存占用更少的空间,并且不使用文件描述符。最小值和默认值均为400。
找到 table_open_cache
,我们修改为256
MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。
官方解释为:所有线程的打开表数。增加该值会增加mysqld所需的文件描述符的数量。因此,您必须确保在[mysqld safe]部分的变量“open files limit”中将允许打开的文件量设置为至少4096。
找到 performance_schema
,修改为off
如果找不到这个的话,直接在合适的地方加上 performance_schema = off
即可。
用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况,关闭之后可以节省开销,不会使server的行为发生变化。
修改完之后保存退出。
以管理员身份启动控制台,输入 net stop mysql,然后再输入 net start mysql。
重启之后还占62M。
控制台输入 service mysqld restart 即可重启。
如果不行的话,可以试试 /etc/init.d/mysqld restart
Trouver table_open_cache
, nous l'avons changé en 256
performance_schema
et remplacez-le par off🎜🎜Si vous ne trouvez pas cela, ajoutez simplement performance_schema = off
à l'endroit approprié. 🎜🎜 Utilisé pour surveiller la consommation des ressources, l'attente des ressources, etc. du serveur MySQL lors d'une opération de niveau inférieur, après la fermeture, cela peut réduire les coûts et ne modifiera pas le comportement du serveur. 🎜🎜Enregistrez et quittez après modification. 🎜🎜🎜Redémarrer MySQL🎜🎜🎜🎜Service Windows 2016🎜🎜🎜Démarrez la console en tant qu'administrateur, entrez net stop mysql, puis entrez net start mysql. 🎜🎜Après redémarrage, il occupait encore 62M. 🎜🎜🎜🎜🎜CentOS7🎜🎜 🎜 Entrez le service mysqld restart sur la console pour redémarrer. 🎜🎜🎜🎜Si ce n'est pas le cas fonctionne, vous pouvez essayer la commande /etc/init.d/mysqld restart
. 🎜🎜Après le redémarrage, il prend 92 Mo, ce qui est un peu plus que celui de Windows. 🎜🎜🎜🎜🎜Postscript🎜🎜Cette méthode peut en effet réduire l'utilisation de la mémoire de MySQL, mais je réduis simplement les performances en échange de mémoire. Si les exigences de débit sont relativement élevées, elle ne peut certainement pas être modifiée directement de cette manière. doit être ajusté en fonction des besoins réels. 🎜Apprentissage recommandé : Tutoriel vidéo mysql
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!