nuts文件服务器,nutsdb 单机 1 亿、10 亿数据实测分享

大家好, 想给大家分享下我最近为 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

复制代码

好了分享到这里。欢迎留言交流。

交流群,如果过期,请去看这个issue,加我微信拉你:

有疑问加站长微信联系(非本文作者)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值