欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL占用內(nèi)存過大解決方案圖文詳解

 更新時間:2022年09月09日 11:40:24   作者:阿桿.  
最近無意中在任務(wù)管理器發(fā)現(xiàn)MySQL內(nèi)存占用達(dá)到700+M,所以下面這篇文章主要給大家介紹了關(guān)于MySQL占用內(nèi)存過大的完美解決方案,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

對于部分小資玩家來說,服務(wù)器數(shù)量和內(nèi)存往往是很有限的,像我個人的服務(wù)器配置就是2核4G5M。

4G內(nèi)存對于Java玩家來說,真的不大,開幾個中間件+自己的微服務(wù)真的還蠻擠的,然后又?jǐn)偵螹ySQL這個大冤種。我本機(jī)上的MySQL僅僅只占幾M內(nèi)存(雖然我不怎么用,但是本機(jī)MySQL確實是開著的):

而服務(wù)器的則要占400M,怎么說其實沒什么吞吐量,純粹是自己玩一玩,這內(nèi)存占用屬實有點吃不消啊。。。

解決方案

了解到可以通過修改配置來減小MySQL的內(nèi)存占用,便嘗試了一下,并進(jìn)行了記錄。由于我同時有兩臺服務(wù)器,一臺裝的是windows service 2016,還有一臺裝的是CentOS7,兩臺情況都是差不多的,故同時做兩份記錄,供大家參考。

1. 找到配置文件

- Windows Service 2016

配置文件的默認(rèn)位置是 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini,如果有修改,則根據(jù)自己的實際情況找到。

- CentOS7

配置文件的默認(rèn)路徑在 /etc/my.cnf,如果有修改,則根據(jù)自己的實際情況找到。

2. 修改配置文件

Windows上可以用Ctrl + F 進(jìn)行搜索,Linux上可以用 ‘/key’ 進(jìn)行搜索,不會的話可以參考一下百度。

我們需要找到并修改的東西一共有三個:

1.找到 table_definition_cache,我們修改為400

官方解釋為:可以存儲在定義緩存中的表定義數(shù)(來自.frm文件)。如果使用大量表,可以創(chuàng)建大型表定義緩存以加快表的打開速度。與普通的表緩存不同,表定義緩存占用更少的空間,并且不使用文件描述符。最小值和默認(rèn)值均為400。

2.找到 table_open_cache,我們修改為256

MySQL每打開一個表,都會讀入一些數(shù)據(jù)到table_open_cache緩存中,當(dāng)MySQL在這個緩存中找不到相應(yīng)信息時,才會去磁盤上讀取。

官方解釋為:所有線程的打開表數(shù)。增加該值會增加mysqld所需的文件描述符的數(shù)量。因此,您必須確保在[mysqld safe]部分的變量“open files limit”中將允許打開的文件量設(shè)置為至少4096。

3.找到 performance_schema ,修改為off

如果找不到這個的話,直接在合適的地方加上 performance_schema = off 即可。

用于監(jiān)控MySQL server在一個較低級別的運(yùn)行過程中的資源消耗、資源等待等情況,關(guān)閉之后可以節(jié)省開銷,不會使server的行為發(fā)生變化。

修改完之后保存退出。

3. 重啟MySQL

- Windows Service 2016

以管理員身份啟動控制臺,輸入 net stop mysql,然后再輸入 net start mysql。

重啟之后還占62M。

- CentOS7

控制臺輸入 service mysqld restart 即可重啟。

如果不行的話,可以試試 /etc/init.d/mysqld restart 這個指令。

重啟之后占用92M,比Windows那臺多點。

后記

通過這種方法確實可以降低mysql的內(nèi)存占用,但我這只是通過降低性能來換取內(nèi)存罷了,如果對吞吐量要求比較高的情況,那肯定是不能這樣直接修改的,得根據(jù)實際請求進(jìn)行調(diào)整才行。

到此這篇關(guān)于MySQL占用內(nèi)存過大解決的文章就介紹到這了,更多相關(guān)MySQL占用內(nèi)存過大內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論