集成TerichDB的SSDB性能测试

4 篇文章 0 订阅
2 篇文章 0 订阅

前言

目前很多互联网公司都在使用SSDB, 它是一款NoSQL的,高性能数据库,目标是替代Redis。

我们在 TerichDB 原生 API 的基础上,通过适配,实现了 LevelDB API,虽然适配层有一定的开销,但是,这可以让所有使用 LevelDB 的程序,不需要修改任何代码,只需要修改 Makefile,就可以使用 TerichDB,ssdb 就是这样的一个程序。为了方便大家编译、使用基于 TerichDB 的 ssdb,我们 fork 了 ssdb,修改了编译脚本(Makefile 和 build.sh)

1. 读性能

数据库通过装载相同的数据源(Amazon 的 movie review 数据,总共大约9GB)

  • SSDB with TerichDB
    • Full Compact
    • 数据库压缩后的大小是2.3GB
  • SSDB with LevelDB
    • Full Compact
    • 数据库压缩后大小是3.1GB, 块尺寸32K
  • 读操作的模式是随机读
  • 通过multi-get批量操作,每次读取100个随机key
  • 操作系统内存64GB
1.1. 原生SSDB在不同缓存尺寸下的表现
  • 原生的SSDB(with LevelDB)缓存设置(该缓存是ssdb数据库内部使用的缓存)
    • 不限制缓存尺寸
    • 500MB缓存
    • 2GB缓存
  • 原始数据数据总的key value对约为 7,911,684 个(数据大小约为9.1GB)
  • 一共进行100,000次批量随机读操作(即总的读取次数约为1000万,其中有部分key可能重复)
1.1.1.QPS对比

ssdb_qps.png

通过上面的对比,我们可以看到,只有当原生 SSDB 的专用缓存不受限制的时候(此时所有的数据都被缓存下来了,加上OS Cache,实际上是有两份内存占用),性能才略好于使用 TerichDB 的 SSDB。而这种情况下,他们的内存占用情况可以看下面的对比。

1.1.2.内存对比

ssdb_resident_memory.png

可以看到,一旦内存受限,无法加载全部的数据的时候,原生 SSDB 的随机读性能会极大地下降,这主要是频繁的块解压导致的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值