为一个 issue 我为 NutsDB 测试 10 亿数据分享

大家好, 想给大家分享下我最近为 nutsdb 做的数据测试。

测试项目

github 地址:https://github.com/xujiajun/nutsdb

起因

事情起因是这个issue,简单说就是内存高了,不够用了。

验证测试一亿条数据

回到正题: 为了验证这个 issue 于是我先测了一个亿的数据量

版本:nutsdb V0.4.0服务器配置:Ubuntu16.0464位8核64G数据量:占有11G 左右 (目前版本没有做压缩)为了加快测试,没有设置实时 sync,写入速度:25.7w/s

key\value 类似:

key:=[]byte("namename"+strconv.Itoa(i))

val:=[]byte("valvalvavalvalvalvavalvalvalvavalvalvalvaval"+strconv.Itoa(i))

测试结果:

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%

发现 消耗内存是数据量的 3.46 倍左右,说实话虽然比他说的少几倍,但我还是有点接受不了。怎么办?

解决

于是开发了新的模式EntryIdxMode:HintBPTSparseIdxMode, 专门为节约内存设计。\

master 分支 已经支持了,有兴趣的欢迎尝试。

那我们单机先来测试 10 亿条数据。

新模式测试 10 亿条数据

版本 :nutsdb master 分支

主机配置:Ubuntu16.0464位2核2G

key\value 类似上面的

为了加快测试,没有设置实时 sync

测试结果:

Mem:1999MB,Free:1786MB,Used:53MB,Usage:2.688618%

Mem:1999MB,Free:1695MB,Used:135MB,Usage:6.784733%

内存占用只有 82MB,完成 10 亿条数据插入,但是写速度降到 4.35w/s。产生索引数据文件 153G。

最后,欢迎给 nutsdb 提 issue,点 Star 关注,提交 PR,谢谢!

你可能感兴趣的:(为一个 issue 我为 NutsDB 测试 10 亿数据分享)