《MySQL——InnoDB与Memory以及临时表》
InooDB與Memory
數(shù)據(jù)組織方式不同:
- InnoDB引擎把數(shù)據(jù)放在主鍵索引上,其他索引上保存的是主鍵id。為索引組織表
- Memory引擎把數(shù)據(jù)單獨(dú)存放,索引上保存數(shù)據(jù)位置。為堆組織表
典型不同處:
1、InnoDB表的數(shù)據(jù)總是有序存放的,而Memory表數(shù)據(jù)是按照寫入順序存放、
2、當(dāng)數(shù)據(jù)文件有空洞時(shí),InnoDB表在插入新數(shù)據(jù)時(shí),為了保證數(shù)據(jù)有序性,總是放在右側(cè)。而Memory表找到空位就可以插入
3、數(shù)據(jù)位置發(fā)生變化的時(shí)候,InnoDB表修改的是主鍵索引,Memory表需要修改索引值
4、InnoDB支持變長(zhǎng)數(shù)據(jù)類型,不同記錄的長(zhǎng)度可能不同。Memory表使用固定長(zhǎng)度,每行數(shù)據(jù)長(zhǎng)度相同
Memory表默認(rèn)使用的是hash索引,所以不支持范圍查詢,當(dāng)然也可以修改:
alter table t1 add index a_btree_index using btree (id);Memory 表用于臨時(shí)表
Memory表有兩個(gè)問(wèn)題:
1、Memory不支持行鎖,只支持表鎖,不適用于并發(fā)場(chǎng)合 2、Memory數(shù)據(jù)放在內(nèi)存中,數(shù)據(jù)庫(kù)重啟,所有Memory表都會(huì)被清空Memory表用于臨時(shí)表好處:
1、臨時(shí)表不會(huì)被其他線程訪問(wèn),沒(méi)有并發(fā)性的問(wèn)題
2、臨時(shí)表重啟后也是需要?jiǎng)h除的,清空數(shù)據(jù)問(wèn)題不大
3、備庫(kù)的臨時(shí)表也不會(huì)影響主庫(kù)的用戶線程
并且相對(duì)于InnoDB作為臨時(shí)表,它還有以下好處:
1、Memory使用內(nèi)存表不需要寫磁盤,往臨時(shí)表寫數(shù)據(jù)速度更快
2、Memory索引使用hash索引,查找速度比B-Tree索引快
3、對(duì)于小數(shù)據(jù)的臨時(shí)表,占用內(nèi)存有限
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的《MySQL——InnoDB与Memory以及临时表》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《地下城与勇士》的任务类型有什么?
- 下一篇: 《MySQL——关于grant赋权以及f