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