集成TerichDB的SSDB性能测试
Posted Terark-CTO-雷鹏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成TerichDB的SSDB性能测试相关的知识,希望对你有一定的参考价值。
前言
目前很多互联网公司都在使用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 的专用缓存不受限制的时候(此时所有的数据都被缓存下来了,加上OS Cache,实际上是有两份内存占用),性能才略好于使用 TerichDB 的 SSDB。而这种情况下,他们的内存占用情况可以看下面的对比。
1.1.2.内存对比
可以看到,一旦内存受限,无法加载全部的数据的时候,原生 SSDB 的随机读性能会极大地下降,这主要是频繁的块解压导致的。
以上是关于集成TerichDB的SSDB性能测试的主要内容,如果未能解决你的问题,请参考以下文章