Dieser Artikel bringt Ihnen relevantes Wissen über MySQL. Er löst hauptsächlich zwei Systeme, Windows und CentOS7, um dieses Problem zu lösen .
Empfohlenes Lernen: MySQL-Video-Tutorial
Für einige Kleinbürger sind die Anzahl der Server und der Speicher oft sehr begrenzt. Meine persönliche Serverkonfiguration ist beispielsweise 2 Kerne 4G5M.
4G-Speicher ist für Java-Spieler wirklich nicht so groß. Es ist wirklich überfüllt, ein paar Middleware + eigene Microservices zu öffnen, und dann ist MySQL ein großer Fehler. MySQL auf meinem lokalen Computer belegt nur ein paar MB Speicher (obwohl ich es nicht oft verwende, ist MySQL auf diesem Computer tatsächlich geöffnet):
Während der Server 400 MB belegt, gibt es tatsächlich keinen Durchsatz. Nur um es alleine zu spielen, ist der Speicherverbrauch wirklich zu hoch. . .
Ich habe gelernt, dass die Speichernutzung von MySQL durch Ändern der Konfiguration reduziert werden kann, also habe ich es ausprobiert und aufgezeichnet. Da ich zwei Server gleichzeitig habe, ist einer mit Windows Service 2016 und der andere mit CentOS7 installiert. Die Situation auf beiden Servern ist ähnlich, daher werde ich zu Ihrer Referenz zwei Datensätze gleichzeitig erstellen.
Der Standardspeicherort der Konfigurationsdatei ist C:ProgramDataMySQLMySQL Server 8.0my.ini. Wenn es Änderungen gibt, suchen Sie sie entsprechend Ihrer tatsächlichen Situation.
Der Standardpfad der Konfigurationsdatei ist /etc/my.cnf. Wenn es Änderungen gibt, können Sie diese entsprechend Ihrer tatsächlichen Situation finden.
Sie können Strg + F verwenden, um unter Windows zu suchen, und Sie können die Taste „/“ verwenden, um unter Linux zu suchen. Wenn Sie nicht wissen, wie, können Sie sich an Baidu wenden.
Es gibt drei Dinge, die wir finden und ändern müssen:
Suchen Sie table_definition_cache
, wir haben ihn auf 400 geänderttable_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
Finden Sie table_open_cache
, wir haben es in 256 geändert.
performance_schema
und ändern Sie es in „off“🎜🎜Wenn Sie dies nicht finden können, fügen Sie einfach performance_schema = off
an der entsprechenden Stelle hinzu. 🎜🎜 Wird zur Überwachung des Ressourcenverbrauchs, des Wartens auf Ressourcen usw. des MySQL-Servers während eines Vorgangs auf niedrigerer Ebene verwendet. Nach dem Schließen können Kosten gespart werden, ohne dass sich das Verhalten des Servers ändert. 🎜🎜Speichern und nach der Änderung beenden. 🎜🎜🎜MySQL neu starten🎜🎜🎜🎜Windows Service 2016🎜🎜🎜Starten Sie die Konsole als Administrator, geben Sie „net stop mysql“ und dann „net start mysql“ ein. 🎜🎜Nach dem Neustart waren immer noch 62 MB belegt. 🎜🎜🎜🎜🎜CentOS7🎜🎜 🎜 Geben Sie service mysqld restart auf der Konsole ein, um neu zu starten. 🎜🎜🎜🎜Wenn das nicht der Fall ist funktioniert, können Sie den Befehl /etc/init.d/mysqld restart
ausprobieren. 🎜🎜Nach dem Neustart benötigt es 92 MB, was etwas mehr ist als das von Windows. 🎜🎜🎜🎜🎜Postscript🎜🎜Diese Methode kann zwar die Speichernutzung von MySQL reduzieren, aber ich reduziere nur die Leistung im Austausch gegen Speicher. Wenn die Durchsatzanforderungen relativ hoch sind, kann sie auf diese Weise sicherlich nicht direkt geändert werden müssen entsprechend den tatsächlichen Anforderungen angepasst werden. 🎜Empfohlenes Lernen: MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel zur Lösung des Problems, dass MySQL zu viel Speicher beansprucht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!