大家好钳幅, 想給大家分享下我最近為 nutsdb 做的數(shù)據(jù)測(cè)試蝌矛。
測(cè)試項(xiàng)目
github 地址:https://github.com/xujiajun/nutsdb
起因
事情起因是這個(gè)issue喉恋,簡(jiǎn)單說(shuō)就是內(nèi)存高了欠拾,不夠用了先紫。
驗(yàn)證測(cè)試一億條數(shù)據(jù)
回到正題: 為了驗(yàn)證這個(gè) issue 于是我先測(cè)了一個(gè)億的數(shù)據(jù)量
版本:nutsdb V0.4.0服務(wù)器配置:Ubuntu16.0464位8核64G數(shù)據(jù)量:占有11G 左右 (目前版本沒(méi)有做壓縮)為了加快測(cè)試织狐,沒(méi)有設(shè)置實(shí)時(shí) sync暂幼,寫入速度:25.7w/s
key\value 類似:
key:=[]byte("namename"+strconv.Itoa(i))
val:=[]byte("valvalvavalvalvalvavalvalvalvavalvalvalvaval"+strconv.Itoa(i))
測(cè)試結(jié)果:
Mem:64430MB,Free:63776MB,Used:176MB,Usage:0.273957%
start db index cost time:72.076μs
batch put data cost:6m29.067011134s
Mem:64430MB,Free:24760MB,Used:39147MB,Usage:60.759105%
發(fā)現(xiàn) 消耗內(nèi)存是數(shù)據(jù)量的 3.46 倍左右,說(shuō)實(shí)話雖然比他說(shuō)的少幾倍移迫,但我還是有點(diǎn)接受不了旺嬉。怎么辦?
解決
于是開發(fā)了新的模式EntryIdxMode:HintBPTSparseIdxMode, 專門為節(jié)約內(nèi)存設(shè)計(jì)厨埋。\
master 分支 已經(jīng)支持了邪媳,有興趣的歡迎嘗試。
那我們單機(jī)先來(lái)測(cè)試 10 億條數(shù)據(jù)荡陷。
新模式測(cè)試 10 億條數(shù)據(jù)
版本 :nutsdb master 分支
主機(jī)配置:Ubuntu16.0464位2核2G
key\value 類似上面的
為了加快測(cè)試雨效,沒(méi)有設(shè)置實(shí)時(shí) sync
測(cè)試結(jié)果:
Mem:1999MB,Free:1786MB,Used:53MB,Usage:2.688618%
Mem:1999MB,Free:1695MB,Used:135MB,Usage:6.784733%
內(nèi)存占用只有 82MB,完成 10 億條數(shù)據(jù)插入废赞,但是寫速度降到 4.35w/s徽龟。產(chǎn)生索引數(shù)據(jù)文件 153G。
最后唉地,歡迎給 nutsdb 提 issue据悔,點(diǎn) Star 關(guān)注,提交 PR耘沼,謝謝极颓!