Bläddra i källkod

update report

main
wesley 8 månader sedan
förälder
incheckning
05beef2928
1 ändrade filer med 13 tillägg och 3 borttagningar
  1. +13
    -3
      README.md

+ 13
- 3
README.md Visa fil

@ -636,7 +636,11 @@ GC是KV分离中的一个非常重要的问题,虽然KV分离的功能显著
![insert](./assets/Insert_static_vsize.png) ![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时数据库的性能 ##### Part. C 面对不固定的value_size时数据库的性能
@ -650,9 +654,15 @@ GC是KV分离中的一个非常重要的问题,虽然KV分离的功能显著
在这次性能测试中,我们设定的`value_size`的随机范围是`500~2048`,预设的KV分离阈值是1000,正好可以模拟实际应用情况。同时,我们还是设定了对于全部数据都使用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 不同数据量的写放大开销 ##### Part. D 不同数据量的写放大开销

Laddar…
Avbryt
Spara