在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫(kù)/ mongodb索引的機(jī)制疑問?

mongodb索引的機(jī)制疑問?

mongodb利用索引查詢時(shí)候,是在數(shù)據(jù)創(chuàng)建時(shí),就把該條數(shù)據(jù)索引放入內(nèi)存,還是查詢時(shí)候才把該條索引加載到內(nèi)存,在內(nèi)存中的索引是不是常駐不會(huì)自動(dòng)清除?
如何去預(yù)估數(shù)據(jù)索引占用內(nèi)存大小,比如一條數(shù)據(jù)大小1kb,那么該條數(shù)據(jù)創(chuàng)建索引會(huì)占用內(nèi)存多大空間?

回答
編輯回答
萌小萌

寫入數(shù)據(jù)和修改索引是在一個(gè)事務(wù)中完成。沒錯(cuò),雖然MongoDB從4.0才開始對(duì)外支持事務(wù),不過WiredTiger引擎從一開始就是支持內(nèi)部事務(wù)的。既然寫入數(shù)據(jù)時(shí)要同時(shí)更改索引,首先你必須要找到更改哪一部分索引。所以更新時(shí)也是需要查詢索引的。既然要查詢,索引必須到內(nèi)存中來。
所有WiredTiger緩存都是按照最近最少使用(LRU)的原則來清除的,無論是不是索引。使用得頻繁就有更大的機(jī)會(huì)駐留內(nèi)存。
最后一個(gè)問題,沒有這么簡(jiǎn)單的計(jì)算方法。索引本質(zhì)上是鍵值對(duì)。值占用的空間都一樣,但鍵的大小不一樣。而且索引鍵還會(huì)壓縮,很難估計(jì)最后的實(shí)際大小。最簡(jiǎn)單的辦法,根據(jù)你的要求自己模擬一批數(shù)據(jù),然后查看db.<集合>.stats(),里面會(huì)有索引大小。然后根據(jù)你的數(shù)據(jù)數(shù)量和索引大小大概估算下達(dá)到實(shí)際數(shù)據(jù)量時(shí)索引有多大。這個(gè)大小也大致是需要占用的內(nèi)存大小。

2017年6月19日 10:11