解決mysql 5.x占用內存過高的問題
來源:奈福網絡 時間:2019-01-11 03:13:02
上海網站建設上海網頁設計奈福網絡科技今天給客戶配置一臺服務器,但此服務器的硬件配置比較低,內存只有2GB,當MySQL數據庫安裝好之后,就發現MySQL占用的內存高達400MB,系統剩余的內存少的可憐,所以我們必須要降低MySQL數據庫的占用資源。
接下來,就讓我們奈福網絡的小伙伴給大家分享一下,如何解決mysql數據庫占用內存過高的問題。
MySQL 5.5默認存儲引擎是innodb,所以一啟動就占用了三四百兆的虛擬內存,我們一般用的存儲引擎是MyISAM,另外使用MyISAM對于文件備份系統也比較便利,因此我們需要禁用innodb,設置默認的引擎為MyISAM。
接下來,就讓我們奈福網絡的小伙伴給大家分享一下,如何解決mysql數據庫占用內存過高的問題。
MySQL 5.5默認存儲引擎是innodb,所以一啟動就占用了三四百兆的虛擬內存,我們一般用的存儲引擎是MyISAM,另外使用MyISAM對于文件備份系統也比較便利,因此我們需要禁用innodb,設置默認的引擎為MyISAM。
解決方法:
在[mysqld]里面加入:
default-storage-engine = MyISAM
innodb=OFF
skip-innodb
重啟mysql即可。
---
To disable InnoDB, use --innodb=OFF or --skip-innodb(新版mysql中(zhong)已經被loose-skip-innodb取(qu)代)
---
MySQL 5.6+
innodb是MySQL被ORACLE收購后開發的,支持事務和行級鎖等高級功能,但是并不是所有人都需要INNODB的,對大部分人來說,以前的MYISAM引擎就夠了,一般會選擇將默認引擎改為MYISAM,但是innodb還是會耗費內存和硬盤,這時候,就需要把innodb徹底禁用。
在以前的MySQL中,一般可以這么設置就行了:
代碼如下:
default-storage-engine=MYISAM
innodb=OFF
但是在最新的MySQL5.6里,這么設置是沒法啟動的,需要再增加一句設置:
代碼如下:
default-storage-engine=MYISAM
default-tmp-storage-engine=MYISAM
loose-skip-innodb
不僅如此,還需要添加以下配置,否則程序會很容易退出的:
代碼如下:
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0
禁用innodb之后,重啟MySQL服務,如果發現占用內存仍然很高,那么請接著設置:
performance_schema_max_table_instances=200
table_definition_cache=200
table_open_cache=128
最重要的在這里,劃重點哦!
MySQL的最大連接數,很多人設置好了上面的參數,但無論怎么重啟mysql服務,內存就是下不來,問題就在此處,此處如果設置過高,占用內存也是很厲害的,可以根據自己的實際情況設置:
MySQL的最大連接數,很多人設置好了上面的參數,但無論怎么重啟mysql服務,內存就是下不來,問題就在此處,此處如果設置過高,占用內存也是很厲害的,可以根據自己的實際情況設置:
max_connections = 100
---
相關參考:
//www.huweishen.com/help/php/1590.html
//www.cnblogs.com/musings/p/5913225.html