分享下 NutsDB 單機 1 億、10 億資料實測
阿新 • • 發佈:2019-07-28
大家好, 想給大家分享下我最近為 nutsdb 做的資料測試。
測試專案
github 地址: https://github.com/xujiajun/nutsdb
起因
事情起因是這個 issue ,簡單說就是記憶體高了,不夠用了。
可能很多人不知道 NutsDB。簡單介紹下,NutsDB 是我幾個月以前開源的一個 Go 語言編寫的內嵌型 KV 資料庫,支援多種資料結構。開源取的的反饋:一開源就上了 Go 趨勢榜。一週斬獲 500+star,也得到很多同行的關注,給我提建議。還有幾個用在了生產環境。
驗證測試一億條資料
回到正題: 為了驗證這個 issue 於是我先測了一個億的資料量
版本:nutsdb V0.4.0
伺服器配置:Ubuntu 16.04 64 位 8 核 64G
資料量:佔有 11G 左右 (目前版本沒有做壓縮)
為了加快測試,沒有設定實時 sync,寫入速度:25.7w/s
key\value 類似:
key := []byte("namename" + strconv.Itoa(i))
val := []byte("valvalvavalvalvalvavalvalvalvavalvalvalvaval" + strconv.Itoa(i))
測試結果:
Mem : 64430 MB , Free: 63776 MB , Used:176 MB , Usage:0.273957% start db index cost time: 72.076µs batch put data cost: 6m29.067011134s Mem : 64430 MB , Free: 24760 MB , Used:39147 MB , Usage:60.759105%
發現 消耗記憶體是資料量的 3.46 倍左右,說實話雖然比他說的少幾倍,但我還是有點接受不了。怎麼辦?
解決
於是開發了新的模式 EntryIdxMode:HintBPTSparseIdxMode
, 專門為節約記憶體設計。原理採用 b+樹多級索引的方式。
master 分支 已經支援了,有興趣的歡迎嘗試。
那我們單機先來測試 10 億條資料。
新模式測試 10 億條資料
版本 :nutsdb master 分支
主機配置:Ubuntu 16.04 64 位 2 核 2G
key\value 類似上面的
為了加快測試,沒有設定實時 sync
測試結果:
Mem : 1999 MB , Free: 1786 MB , Used:53 MB , Usage:2.688618% Mem : 1999 MB , Free: 1695 MB , Used:135 MB , Usage:6.784733%
記憶體佔用只有 82MB,完成 10 億條資料插入,但是寫速度降到 4.35w/s。產生索引資料檔案 153G
再來看下讀的表現,讀取 10 條資料,這個是沒有加快取的結果如下:
load cost: 2.607796193s
key , find val namename0 valvalvavalvalvalvavalvalvalvavalvalvalvaval0
key , find val namename1 valvalvavalvalvalvavalvalvalvavalvalvalvaval1
key , find val namename2 valvalvavalvalvalvavalvalvalvavalvalvalvaval2
key , find val namename3 valvalvavalvalvalvavalvalvalvavalvalvalvaval3
key , find val namename4 valvalvavalvalvalvavalvalvalvavalvalvalvaval4
key , find val namename5 valvalvavalvalvalvavalvalvalvavalvalvalvaval5
key , find val namename6 valvalvavalvalvalvavalvalvalvavalvalvalvaval6
key , find val namename7 valvalvavalvalvalvavalvalvalvavalvalvalvaval7
key , find val namename8 valvalvavalvalvalvavalvalvalvavalvalvalvaval8
key , find val namename9 valvalvavalvalvalvavalvalvalvavalvalvalvaval9
read cost 87.208728ms
好了分享到這裡。歡迎留言交流。
最後,歡迎去 nutsdb 提 issue,點 Star 關注,