Преглед изворни кода

补充测试结果

pull/3/head
augurier пре 8 месеци
родитељ
комит
349a8d2db7
3 измењених фајлова са 5 додато и 1 уклоњено
  1. +5
    -1
      README.md
  2. BIN
      pics/f_bsize.png
  3. BIN
      pics/f_thread.png

+ 5
- 1
README.md Прегледај датотеку

@ -790,13 +790,17 @@ batchsize=1000下,线程数对性能的影响:
这一实验体现了leveldb写队列策略在不同情况下的优劣。而我们fielddb的请求队列策略和这个基本一致,性能使用场景具有相似性。
2. 对于FieldDB的分析
2. 对于FieldDB的分析
单线程
![alt text](pics/field单.png)
双线程
![alt text](pics/field双.png)
1) 所有涉及读取性能的:和原版leveldb相比,损耗非常少(一个必要的字段解析步骤),还是非常好的
2) 常规的写入性能:有所下降,但是由于需要支持索引功能,一些额外的开销无法避免(例如先读一遍,并发控制,一致性维护)。fillbatch的测试,基于我们合并请求和一段请求只处理一次同名key的算法,多线程性能甚至比单线程能够提高许多
![alt text](pics/f_bsize.png)
![alt text](pics/f_thread.png)
其中单线程fillbatch差异比较明显。这里面的主要原因,一是因为leveldb本身这方面性能就非常优秀,二是因为在有索引功能的情况下,为了避免之前提到的问题,我们处理batch实际上还是需要把里面的每一条数据拆分出来,分别创建请求处理(而不是直接批量写入)。
这也反映在batchsize图中,我们的性能上升速率不如leveldb。但同样可观的上升速率意味着,我们的请求处理算法是有一定效果的。
3) 对于创删索引:没有比较对象,但是总体可以接受
4) 对于创删索引和写并发:如果是无关的,那么还是保持了高吞吐;如果是相关的,那么不得不受限于创删索引。考虑到数据库的创删索引请求还是比较少的(不太可能出现我们测试中,不停并发创删索引和写入的情况),一定的性能牺牲可以接受

BIN
pics/f_bsize.png Прегледај датотеку

Before After
Width: 936  |  Height: 666  |  Size: 34 KiB

BIN
pics/f_thread.png Прегледај датотеку

Before After
Width: 894  |  Height: 674  |  Size: 28 KiB

Loading…
Откажи
Сачувај