黃新穎
1.我結(jié)合武俠這個(gè)游戲來(lái)說(shuō)一說(shuō)我的使用心得:
武俠中所有玩家當(dāng)前所在場(chǎng)景信息存在內(nèi)存表中,比如A場(chǎng)景有a,b,c玩家, B場(chǎng)景中有e,f,g玩家,都存在一個(gè)叫做tbl_player_scene的內(nèi)存表中。當(dāng)時(shí)并不知道redis, 后來(lái)想想其實(shí)可以用redis的set來(lái)替代。
2.內(nèi)存表的特點(diǎn):
a. 支持索引。(這個(gè)是對(duì)比起redis等nosql的殺手锏)
b. 支持自增長(zhǎng)字段。
c. 查詢(xún)緩存
etc
從內(nèi)存表的特性來(lái)看,他的適合場(chǎng)景有:
a. 在開(kāi)發(fā)初期,內(nèi)存表在和nosql數(shù)據(jù)庫(kù)對(duì)比的時(shí)候,看查詢(xún)的復(fù)雜程度,數(shù)據(jù)的復(fù)雜程度來(lái)進(jìn)行權(quán)衡。
b. 在后期維護(hù)中,可以在非常小的改變?cè)鹊拇a結(jié)構(gòu),比如dao層的代碼,移植成內(nèi)存表類(lèi)型。
linux_ubuntu
臨時(shí)表將在你連接MySQL期間存在。當(dāng)你斷開(kāi)時(shí),MySQL將自動(dòng)刪除表并釋放所用的空間。當(dāng)然你可以在仍然連接的時(shí)候刪除表并釋放空間。
重起數(shù)據(jù)庫(kù)以后,內(nèi)存中的數(shù)據(jù)全部丟失。
1.臨時(shí)表:表建在內(nèi)存里,數(shù)據(jù)在內(nèi)存里
2.內(nèi)存表:表建在磁盤(pán)里,數(shù)據(jù)在內(nèi)存里
其中包括2個(gè)重要的參數(shù)
[mysqld]
內(nèi)存表容量
max_heap_table_size=1024M
臨時(shí)表容量
tmp_table_size=1024M
臨時(shí)表主要是為了放一些中間大結(jié)果集的一些子集,內(nèi)存表可以放一些經(jīng)常頻繁使用的數(shù)據(jù)。
自由者:
以下是對(duì)內(nèi)存表和臨時(shí)表之間區(qū)別的總結(jié):
內(nèi)存表:
1. 通過(guò)參數(shù)控制:max_heap_table_size大小來(lái)設(shè)定內(nèi)存表大小
2. 到達(dá)max_heap_table_size所設(shè)置的內(nèi)存上限后報(bào)錯(cuò)。
3. 表定義保存在磁盤(pán)上,數(shù)據(jù)和索引保存在內(nèi)存里面。
4. 不能包含TEXT、BLOB等字段。
臨時(shí)表:
1. 通過(guò)參數(shù)控制:tmp_table_size大小來(lái)設(shè)定臨時(shí)表大小。
2. 到達(dá)tmp_table_size上限后會(huì)在磁盤(pán)上創(chuàng)建臨時(shí)文件。
3. 表定義和數(shù)據(jù)都在內(nèi)存里。
4. 可以包含TEXT, BLOB等字段。
臨時(shí)表一般都很少用,而且要用也一般是在程序中動(dòng)態(tài)創(chuàng)建或者由MySQL內(nèi)部根據(jù)SQL執(zhí)行計(jì)劃需要自己創(chuàng)建。
內(nèi)存表則大多數(shù)是當(dāng)Cache用,在早期一臺(tái)機(jī)器沒(méi)有裝Memcache等第三方cache時(shí),h內(nèi)存表無(wú)疑是cache的最好的選擇了。而如今隨著memcache、NoSQL的流行,內(nèi)存表就越來(lái)越少人使用了
新聞熱點(diǎn)
疑難解答
圖片精選