TerarkDB vs. RocksDB 服务器一

1. 测试数据集

我们在 TPC-H 数据集中使用 lineitem 表,并将 dbgen lineitem 中的 comment 文本字段的长度设置为 512(默认是 27 字节)。 因此,lineitem 表的平均行尺寸为 615 字节,其中,key 是前三个整数字段直接拼接而成的字符串。

数据集的总大小为 554,539,419,806 bytes897,617,396 rows。 key 的总尺寸是 22,726,405,004 bytes, 剩余的是 value 总尺寸。

TPC-H dbgen 生成最原始的字符串数据,我们直接在测试中使用这些数据而不对数据进行任何转换。

2. 硬件

服务器配置
CPU Number 2
CPU Type Xeon E5-2680 v3
CPU Freq. 2.5 GHz
CPU Actual Freq. 2.5 GHz
Cores per CPU 8 cores with 16 threads
Cores in total 16 cores 32 threads
CPU Cache 30M
CPU bogomips 4988
Memory 64GB
Memory Freq. DDR4 2133Hz
SSD Capacity 2TB x 1
SSD IOPS 20000
(网络 SSD, 不是本地 SSD)

3. DB 参数

RocksDB TerarkDB
Level Layers 4 4
Compression Level 0 doesn’t compress
Level 1~3 use Snappy
All level uses
Terark Compression
Compact Type Level based compaction Universal compaction
MemTable Size 1G 1G
Cache Size 16G Do not need
MemTable Number 3 3
Write Ahead Log Disabled Disabled
Compact Threads 2~4 2~4
Flush Threads
(MemTable Compression)
2 2
Terark Compress threads NA 12
Working Threads 25 in total
24 Random Read, 1 Write
25 in total
24 Random Read, 1 Write
Target_file_size_base Default (64M) 1G
Target_file_size_multiplier 1 (SST size in RocksDB
do not influence performance)
5

对于两种引擎,我们禁用了所有的写限速:

  • options.level0_slowdown_writes_trigger = 1000;
  • options.level0_stop_writes_trigger = 1000;
  • options.soft_pending_compaction_bytes_limit = 2ull<<40
  • options.hard_pending_compaction_bytes_limit = 4ull<<40

4. 测试结果

4.1. OPS Comparison

4.1.1. TerarkDB OPS

3.1.2. RocksDB OPS

4.2. DB Size Comparison

4.2.1. TerarkDB DB Size

4.2.2. RocksDB DB Size

4.3. Memory Usage Comparison

4.3.1. TerarkDB Memory Usage

4.3.2. RocksDB Memory Usage

4.4. CPU Usage Comparison

4.4.1. TerarkDB CPU Usage

4.4.2. RocksDB CPU Usage

5. 测试结果说明

  RocksDB (DB Cache 16GB) TerarkDB
0~2 minutes Read OPS 1M
写 OPS 140K
(Memory is enough)
Read OPS 1.69M
写 OPS 120K
(Memory is enough)
2~15 minutes Read OPS 690K
写 OPS 90K
(开始压缩,
内存压力增大,
但仍然足够使用)
Read OPS 850K
写 OPS 80K
(内存充足)
15~30 minutes 读 OPS 下降到 10K
写 OPS 90K
(内存用尽)
读 OPS 在 500K~1M 间抖动,
写 OPS 60K.
CPU 利用率接近 100%, IOWait 接近 0.
(内存足够, 但是后台压缩线程和读线程开始竞争)
30~60 minutes 读 OPS 持续下降.
写 OPS 110K
读 OPS 在 350K ~ 980K 间抖动, 平均 500K. CPU 利用率开始下降. (压缩线程开始影响读线程)
60~120 minutes 读 OPS 持续下降. 读 OPS 剧烈波动, 平均 450K. 写 OPS 55K.
170 minutes 550G 数据全部写入, 平均写入 OPS 88K. SSD 利用率开始下降.  
173 minutes 读 OPS 降到 10K 以下  
3 hours 30 minutes   550G 全部写完 (后台压缩线程明显影响读线程.)
3.5~11 hours 读 OPS 下降到 5000 以下 读 OPS 保持在 50K 左右 (数据逐渐被压缩,更多数据被装入内存)
8 hours 40 minutes 完整压缩完成, 数据尺寸 213GB 读 OPS 上升到 60K
11 hours 读 OPS 保持在 3K (数据无法完全装入内存) 读 OPS 上涨到 180K
>30 hours   Data 压缩完成, 读 OPS 稳定在 1.85M (压缩完成后数据是 47GB, 可以全部装入内存)

results matching ""

    No results matching ""

    results matching ""

      No results matching ""