From 05beef292854bb583d02b2e8a6aea46775948018 Mon Sep 17 00:00:00 2001 From: wesley <865373641@qq.com> Date: Sun, 5 Jan 2025 19:38:29 +0800 Subject: [PATCH] update report --- README.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index eb402b4..52c5229 100644 --- a/README.md +++ b/README.md @@ -636,7 +636,11 @@ GC是KV分离中的一个非常重要的问题,虽然KV分离的功能显著 ![insert](./assets/Insert_static_vsize.png) -类似地,使用`test_bench.cc`可以测得`Put()`的延迟,以及其他操作的吞吐量和延迟。这里不一一作图展示。 +从图中可见,当`value_size`较小时,由于不发生KV分离,性能差距并不明显;而当`value_size`大到足够发生KV分离时,实现了KV分离的数据的写入数据性能明显优于原本的LevelDB。而由于后台GC会阻塞读写进程,对整体性能产生影响,触发了GC的数据库性能略差于不触发GC的数据库。 + +在本测试中测出的各操作延迟如下表(单位:微秒/次操作,micros/op),根据平均延迟,红色字体最优,黄色格子次之: + +![lats](./assets/latency.png) ##### Part. C 面对不固定的value_size时数据库的性能 @@ -650,9 +654,15 @@ GC是KV分离中的一个非常重要的问题,虽然KV分离的功能显著 在这次性能测试中,我们设定的`value_size`的随机范围是`500~2048`,预设的KV分离阈值是1000,正好可以模拟实际应用情况。同时,我们还是设定了对于全部数据都使用KV分离和完全不使用KV分离的两种数据库作为对照组。 -![randvsizet](./assets/randvalue.png) +由于分离阈值对`value_size`较小的数据的读取很友好,因此此次测试还使用了`GetDataSmallSize`函数,用于对比读取较小数据时各版本的性能。 + +图中红色柱是全部数据KV分离,蓝色柱是部分数据KV分离(测试目标),黄色柱是完全不进行KV分离。 + +![randvalue](./assets/randvalu_2.png) + +从图中可以看出,写入速度最快的是部分进行KV分离的数据库,因为对于不分离的小数据,没有了将其`value`编写为`VTable`并写入磁盘的操作,写入速度比完全KV分离的更快。 -Latency等数据不便于在图中展示,这里省略。 +而在读取全部数据时,部分KV分离的数据库性能介于不KV分离和完全KV分离之间;但在读取小数据时,我们实现的数据库由于没有分离小数据,其读取性能远高于完全KV分离的数据库。 ##### Part. D 不同数据量的写放大开销