《MYSQL教程Mysql內(nèi)存表有什么作用》要點:
本文介紹了MYSQL教程Mysql內(nèi)存表有什么作用,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL教程mysql數(shù)據(jù)庫有著存儲引擎的多樣性和可擴(kuò)展性,這樣mysql也能擁有多種多樣的個性.
MYSQL教程mysql內(nèi)存表有什么用處?
MYSQL教程說實話mysql的myisam引擎在查詢、插入等方面和內(nèi)存表引擎基本上是不相伯仲的,所以第一個建議還是能用myisam的地方還是選擇myisam引擎
但是最近遇到一個比較麻煩的問題,一個用來存儲信息的維表,需要頻繁的查詢、插入以及較頻繁的更新操作,并且這個維表非常的大,先是采用myisam引擎并進(jìn)行數(shù)據(jù)的分表,拆分成1000個小表,性能也是不錯.但是隨著數(shù)據(jù)量的增加和并發(fā)度的增加,由于這些表上都有大量的索引,當(dāng)插入的并發(fā)度比較大的時候,mysql的對于磁盤的使用驟然升高,造成系統(tǒng)對于磁盤io的等待,異常的高.
MYSQL教程由于查詢的需求,索引有不能drop掉,所以最開始著手于修改mysql的參數(shù),來提高系統(tǒng)的性能(比如delay insert、batch insert等等),但是效果均不是很理想
后來考慮到機(jī)器的內(nèi)存尚有結(jié)余,最后采用了內(nèi)存表的方式,解決了這個問題,基本上消除了磁盤io的等待,系統(tǒng)的負(fù)載也基本上下降了一倍
但是這種方式還是有不少問題的:
MYSQL教程內(nèi)存表一旦mysql重啟,將造成數(shù)據(jù)丟失,還好這個維表對于數(shù)據(jù)平安性要求不高,可以允許部分?jǐn)?shù)據(jù)丟失,補(bǔ)救方式就是每天在系統(tǒng)負(fù)載低的時候進(jìn)行備份
內(nèi)存表刪除后,內(nèi)存的釋放問題:
最開始遇到一個很糾結(jié)的問題,將建立的這1000個內(nèi)存引擎小表drop后,系統(tǒng)竟然沒有回收內(nèi)存,先是懷疑mysql存在內(nèi)存泄露,經(jīng)過幾天對mysql內(nèi)存引擎源代碼的閱讀,確定不是內(nèi)存泄露的問題,后來經(jīng)過查看linux malloc相關(guān)文檔,才發(fā)現(xiàn)是glibc沒有將這些內(nèi)存交還給系統(tǒng)內(nèi)核,由于分表后這1000個表都相對較小,gblic的free函數(shù)并沒有立即將內(nèi)存sbrk給內(nèi)核(以備以后的再次malloc),造成這部分內(nèi)存無法被內(nèi)核回收.
MYSQL教程這樣的話會造成mysql的內(nèi)存占用異常的高,如果這時候有另外一個程序需要大耗內(nèi)存的話,可能會有風(fēng)險.(這塊還需要詳細(xì)測試一下)
MYSQL教程總結(jié):
對于mysql的用戶,如果對數(shù)據(jù)表的內(nèi)容平安性要求不高,而對于數(shù)據(jù)的查詢和插入的并發(fā)度都很大,并且磁盤io成為瓶頸的話,可以使用內(nèi)存引擎測試,或許會有不錯的效果.
mysql 內(nèi)存表基礎(chǔ)知識
mysql 內(nèi)存表與臨時表有哪些區(qū)別
mysql創(chuàng)建內(nèi)存表方法
有關(guān)MySQL內(nèi)存表的特性及使用介紹
mysql 內(nèi)存表在主從同步時的注意事項
維易PHP培訓(xùn)學(xué)院每天發(fā)布《MYSQL教程Mysql內(nèi)存表有什么作用》等實戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7450.html