cloned from tidwall/kvbench
KVBench is a Redis server clone backed by a few different Go databases.
It's intended to be used with the redis-benchmark
command to test the
performance of various Go databases. It has support for redis pipelining. The
redis-benchmark
can run as explained here https://github.com/tidwall/kvbench#examples.
This cloned version adds more kv databases and automatic scripts.
Features:
- Databases
- Option to disable fsync
- Compatible with Redis clients
The following benchmarks show the throughput of inserting/reading keys (of size 9 bytes) and values (of size 256 bytes).
throughputs
badger | bbolt | bolt | leveldb | kv | buntdb | pebble | pogreb | nutsdb | rocksdb | btree | btree/memory | map | map/memory | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Batch Write | 1818000 | 305000 | 279000 | 458000 | 113000 | 1109000 | 484000 | 1694000 | 1978000 | 440000 | 2322000 | OOM | 2718000 | OOM |
del | 42068 | 5830 | 5602 | 72084 | 124984 | 47913 | 92244 | 4264 | 114012 | 86168 | 597002 | 761315 | 1289271 | 3956378 |
set | 39945 | 17457 | 17584 | 119846 | 11598 | 40720 | 77794 | 66457 | 113455 | 81718 | 137413 | 652104 | 137153 | 551238 |
get | 474943 | 691812 | 706825 | 416832 | 32969 | 1857733 | 321527 | 5063794 | 630274 | 295142 | 3034517 | 2035675 | 7752284 | 6459314 |
setmixed | 12353 | 10525 | 9520 | 21094 | 5133 | 9590 | 58853 | 50422 | 28863 | 57994 | 55785 | 86495 | 85366 | 134747 |
getmixed | 171771 | 448769 | 469127 | 183170 | 20539 | 49857 | 168025 | 210983 | 137648 | 172137 | 232248 | 366470 | 377661 | 697788 |
time (latency)
badger | bbolt | bolt | leveldb | kv | buntdb | pebble | pogreb | nutsdb | rocksdb | btree | btree/memory | map | map/memory | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getmixed | 1455 | 557 | 532 | 1364 | 12171 | 5014 | 1487 | 1184 | 1816 | 1452 | 1076 | 682 | 661 | 358 |
set | 6258 | 14320 | 14216 | 2086 | 21554 | 6139 | 3213 | 3761 | 2203 | 3059 | 1819 | 383 | 1822 | 453 |
get | 526 | 361 | 353 | 599 | 7582 | 134 | 777 | 49 | 396 | 847 | 82 | 122 | 32 | 38 |
setmixed | 80945 | 95010 | 105037 | 47405 | 194793 | 104264 | 16991 | 19832 | 34646 | 17243 | 17925 | 11561 | 11714 | 7421 |
del | 5942 | 42880 | 44625 | 3468 | 2000 | 5217 | 2710 | 58624 | 2192 | 2901 | 418 | 328 | 193 | 63 |
throughputs
badger | bbolt | bolt | leveldb | kv | buntdb | pebble | pogreb | nutsdb | rocksdb | btree | btree/memory | map | map/memory | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Batch Write | 1981000 | 332000 | 308000 | 122000 | 206000 | 759000 | 324000 | 16000 | 26000 | 392000 | 1350000 | OOM | 1510000 | OOM |
get | 511262 | 740201 | 749409 | 1399345 | 33044 | 2419811 | 312589 | 7256537 | 1762448 | 279579 | 4073015 | 1931155 | 12368046 | 5064254 |
setmixed | 9345 | 52 | 51 | 83 | 5151 | 97 | 2648 | 49 | 97 | 2809 | 94 | 74675 | 93 | 124593 |
getmixed | 41121 | 712940 | 714763 | 725069 | 20606 | 1756 | 274968 | 557 | 435 | 272844 | 1002 | 318337 | 1963 | 638967 |
del | 19595 | 49 | 49 | 84619 | 12190 | 97 | 29386 | 961261 | 98 | 32109 | 49337 | 805323 | 94 | 3419262 |
set | 18278 | 48 | 48 | 236 | 12850 | 97 | 29000 | 52 | 97 | 28579 | 93 | 535504 | 94 | 467439 |
time (latency)
badger | bbolt | bolt | leveldb | kv | buntdb | pebble | pogreb | nutsdb | rocksdb | btree | btree/memory | map | map/memory | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
setmixed | 106999 | 19187738 | 19329929 | 12000867 | 194129 | 10261633 | 377610 | 20268643 | 10255662 | 355960 | 10620359 | 13391 | 10652140 | 8026 |
get | 488 | 337 | 333 | 178 | 7565 | 103 | 799 | 34 | 141 | 894 | 61 | 129 | 20 | 49 |
getmixed | 6079 | 350 | 349 | 344 | 12132 | 142337 | 909 | 448760 | 574240 | 916 | 249360 | 785 | 127325 | 391 |
del | 12758 | 5078760 | 5095016 | 2954 | 20508 | 2577078 | 8507 | 260 | 2550875 | 7785 | 5067 | 310 | 2654177 | 73 |
set | 13676 | 5152682 | 5167592 | 1056019 | 19454 | 2571839 | 8620 | 4736548 | 2558664 | 8747 | 2683904 | 466 | 2649372 | 534 |