分享下 nutsdb 单机 1 亿、10 亿数据实测 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xujiajun001
V2EX    Go 编程语言

分享下 nutsdb 单机 1 亿、10 亿数据实测

  •  
  •   xujiajun001
    xujiajun 2019-07-25 11:58:53 +08:00 3999 次点击
    这是一个创建于 2272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好, 想给大家分享下我最近为 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.076s 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 关注,提交 PR,谢谢!

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     962 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 19:47 PVG 03:47 LAX 12:47 JFK 15:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86