Bench run: plain / 31252003395
← plain home |
dcompact →
generated (UTC): 2026-08-08T13:03:29.053193+00:00
ToplingDB zipkeyonly db_bench | ToplingDB zipkeyvalue db_bench | RocksDB v8.10 db_bench | RocksDB master (5fe22535) db_bench | DB INFO LOGs + bench yamls (Actions artifact) — ToplingDB zipkeyonly LOG-fillrandom, ToplingDB zipkeyonly LOG-fillrandom-omit, ToplingDB zipkeyonly LOG-fillseq, ToplingDB zipkeyonly LOG-fillseq-omit, ToplingDB zipkeyonly db_bench-fillrandom.yaml, ToplingDB zipkeyonly db_bench-fillseq.yaml, ToplingDB zipkeyvalue LOG-fillrandom, ToplingDB zipkeyvalue LOG-fillrandom-omit, ToplingDB zipkeyvalue LOG-fillseq, ToplingDB zipkeyvalue LOG-fillseq-omit, ToplingDB zipkeyvalue db_bench-fillrandom.yaml, ToplingDB zipkeyvalue db_bench-fillseq.yaml, RocksDB v8.10 LOG-fillrandom, RocksDB v8.10 LOG-fillseq, RocksDB master (5fe22535) LOG-fillrandom, RocksDB master (5fe22535) LOG-fillseq
ToplingDB bench yaml (runtime graft): ToplingDB zipkeyonly db_bench-fillrandom.yaml | ToplingDB zipkeyonly db_bench-fillseq.yaml | ToplingDB zipkeyvalue db_bench-fillrandom.yaml | ToplingDB zipkeyvalue db_bench-fillseq.yaml
Runner hardware/software
| OS | Ubuntu 24.04.4 LTS |
| Kernel | 6.17.0-1020-azure |
| CPU | AMD EPYC 7763 64-Core Processor |
| Logical CPUs | 4 |
| Memory | 15.6GiB |
| /dev/shm | 7.8GiB |
| RocksDB block cache | 7.8GiB |
num=100000000 | key_size=8 | value_size=50
On-disk DB size (3.7GiB) ≤ block cache (7.8GiB) — cache can hold the entire dataset. So this benchmark mainly shows CPU and memory cost. With ToplingDB dcompact, most of that CPU and memory cost can be offloaded.
/dev/shm usage (disk space; after db_bench + omit/scan)
Allocated disk usage (IEC blocks). RocksDB uses default Snappy compression. Space ratio = engine / v8.10; <1 = less space than RocksDB, >1 = larger.
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 | RocksDB master (5fe22535) | zipkeyonly / v8.10 (space) | zipkeyvalue / v8.10 (space) |
| fillrandom | 3.2GiB | 587.0MiB | 3.7GiB | 3.7GiB | 0.86x | 0.15x |
| fillseq | 4.8GiB | 1.2GiB | 3.2GiB | 3.2GiB | 1.48x | 0.38x |
Peak RSS (RAM; during db_bench)
RSS is Resident Set Size. RocksDB block cache = half physical memory (7.8GiB). Ratio = engine / v8.10; <1 = less RSS, >1 = more RSS. RocksDB omit columns are derived-from-main (no separate omit pass).
| workload | ToplingDB zipkeyonly | ToplingDB zipkeyvalue | RocksDB v8.10 (derived-from-main) | RocksDB master (5fe22535) | zipkeyonly / v8.10 (RSS) | zipkeyvalue / v8.10 (RSS) |
| fillrandom | 2.3GiB | 2.2GiB | 4.1GiB | 4.2GiB | 0.55x | 0.53x |
| fillrandom-omit | 146.0MiB | 174.9MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.5GiB | 6.5GiB | 0.29x | 0.29x |
| fillseq-omit | 128.6MiB | 187.3MiB | 6.5GiB | n/a | 0.02x | 0.03x |
RAM usage over time
Sampled once per second from /proc/statm plus open-file page cache. Colored bands show benchmark segments (start time from db_bench output).
Comparison: db_bench fillrandom suite (perf)
Benchmarks: fillrandom, flush, compact, readseq×3, readrandom. RocksDB uses default Snappy compression. compact row shows operations/seconds. RocksDB time / zipkey*: >1 = that zipkey* engine faster. Values show ops/sec.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/33.5s | 1/78.4s | 1/53.2s | 1/49.8s | 2.34x | 1.59x | 1.49x | 0.68x | 0.64x |
| fillrandom | 994975 | 987322 | 685653 | 612119 | 1.01x | 1.45x | 1.63x | 1.44x | 1.61x |
| readrandom | 3686592 | 1825999 | 365733 | 362294 | 2.02x | 10.08x | 10.18x | 4.99x | 5.04x |
| readseq | 22452308 | 16889461 | 10530765 | 8028655 | 1.33x | 1.35x | 1.77x | 1.01x | 1.33x |
Comparison: db_bench fillseq suite (perf)
Same as fillrandom. Watch compact / readseq / readrandom cost for minDictZip=10 vs space savings above.
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | RocksDB master (5fe22535) ops/sec | zipkeyvalue time / zipkeyonly | v8.10 time / zipkeyonly | master (5fe22535) time / zipkeyonly | v8.10 time / zipkeyvalue | master (5fe22535) time / zipkeyvalue |
| compact | 1/39.5s | 1/122.4s | 1/37.7s | 1/40.3s | 3.10x | 0.95x | 1.02x | 0.31x | 0.33x |
| fillseq | 2213100 | 2227125 | 3713332 | 3711514 | 0.99x | 0.60x | 0.60x | 0.60x | 0.60x |
| readrandom | 6766814 | 1537562 | 349232 | 370272 | 4.40x | 19.38x | 18.28x | 4.40x | 4.15x |
| readseq | 26268423 | 20403636 | 10679365 | 8152838 | 1.29x | 2.46x | 3.22x | 1.91x | 2.50x |
Lazy load demo (scan; RocksDB v8.10 baseline)
zipkey* needs an extra omit pass: scan_omit_key/value enables lazy value load (no real value load). RocksDB has no omit API, so the baseline is readseq×3 already present in the main fill* suite (no extra pass). master omitted here (v8.10 is the stronger RocksDB baseline). Time ratio = v8.10 / zipkey*: >1 = zipkey* faster, <1 = zipkey* slower. nextwithkey is ToplingDB-only.
fillrandom-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 39151431 | 39264821 | — | — | — |
| readseq | 38313310 | 38746293 | 10530765 | 2.30x | 2.33x |
fillseq-omit / scan
| benchmark | ToplingDB zipkeyonly ops/sec | ToplingDB zipkeyvalue ops/sec | RocksDB v8.10 ops/sec | v8.10 time / zipkeyonly | v8.10 time / zipkeyvalue |
| nextwithkey | 52642633 | 52575848 | — | — | — |
| readseq | 50973413 | 50993714 | 10679365 | 4.77x | 4.78x |
memtablerep_bench: CSPPMemTable advantage
Focus: CSPP (ToplingDB) vs skiplist. Baseline = RocksDB v8.10 skiplist. Column "CSPP / v8.10": for throughput >1 = CSPP faster; for us/op and elapsed <1 = CSPP cheaper.
| benchmark | metric | CSPP (ToplingDB) | skiplist (ToplingDB) | skiplist (RocksDB v8.10) | CSPP / v8.10 |
| fillrandom | Elapsed time | 33472877 us | 262088172 us | 234575809 us | 0.14x |
| fillrandom | Write throughput | 48.4346 MiB/s | 6.18588 MiB/s | 6.9114 MiB/s | 7.01x |
| fillrandom | write us/op | 0.334729 | 2.62088 | 2.34576 | 0.14x |
| readrandom | Elapsed time | 44265716 us | 328243786 us | 291973050 us | 0.15x |
| readrandom | Read throughput | 36.6253 MiB/s | 4.93915 MiB/s | 5.55273 MiB/s | 6.60x |
| readrandom | read us/op | 0.442657 | 3.28244 | 2.91973 | 0.15x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.005050 | 994975 | 100.505 | 100000000 | 55.0 MB/s |
| compact | 33515783.000000 | 0 | 33.516 | 1 | |
| readseq | 0.044564 | 22439496 | 4.456 | 100000000 | 1241.2 MB/s |
| readseq | 0.044534 | 22454315 | 4.453 | 100000000 | 1242.0 MB/s |
| readseq | 0.044538 | 22452308 | 4.454 | 100000000 | 1241.9 MB/s |
| readrandom | 0.271253 | 3686592 | 27.125 | 100000000 | 128.9 MB/s (63197572 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.451855 | 2213100 | 45.185 | 100000000 | 122.4 MB/s |
| compact | 39485838.000000 | 0 | 39.486 | 1 | |
| readseq | 0.037964 | 26340820 | 3.796 | 100000000 | 1457.0 MB/s |
| readseq | 0.037898 | 26386080 | 3.790 | 100000000 | 1459.5 MB/s |
| readseq | 0.038068 | 26268423 | 3.807 | 100000000 | 1453.0 MB/s |
| readrandom | 0.147779 | 6766814 | 14.778 | 100000000 | 374.3 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025639 | 39001681 | 2.564 | 100000000 | 297.6 MB/s |
| nextwithkey | 0.025602 | 39058395 | 2.560 | 100000000 | 298.0 MB/s |
| nextwithkey | 0.025541 | 39151431 | 2.554 | 100000000 | 298.7 MB/s |
| readseq | 0.026201 | 38165943 | 2.620 | 100000000 | 291.2 MB/s |
| readseq | 0.026071 | 38356279 | 2.607 | 100000000 | 292.6 MB/s |
| readseq | 0.026100 | 38313310 | 2.610 | 100000000 | 292.3 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019390 | 51570528 | 1.939 | 100000000 | 393.5 MB/s |
| nextwithkey | 0.019094 | 52370169 | 1.909 | 100000000 | 399.6 MB/s |
| nextwithkey | 0.018995 | 52642633 | 1.900 | 100000000 | 401.6 MB/s |
| readseq | 0.019588 | 51048328 | 1.959 | 100000000 | 389.5 MB/s |
| readseq | 0.019588 | 51050673 | 1.959 | 100000000 | 389.5 MB/s |
| readseq | 0.019617 | 50973413 | 1.962 | 100000000 | 388.9 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 262088172 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.18588 MiB/s |
| fillrandom | write us/op | 2.62088 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 328243786 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 4.93915 MiB/s |
| readrandom | read us/op | 3.28244 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 33472877 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 48.4346 MiB/s |
| fillrandom | write us/op | 0.334729 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 44265716 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 36.6253 MiB/s |
| readrandom | read us/op | 0.442657 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.012838 | 987322 | 101.284 | 100000000 | 54.6 MB/s |
| compact | 78406346.000000 | 0 | 78.406 | 1 | |
| readseq | 0.059707 | 16748393 | 5.971 | 100000000 | 926.4 MB/s |
| readseq | 0.059736 | 16740296 | 5.974 | 100000000 | 926.0 MB/s |
| readseq | 0.059208 | 16889461 | 5.921 | 100000000 | 934.2 MB/s |
| readrandom | 0.547645 | 1825999 | 54.765 | 100000000 | 63.8 MB/s (63204473 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.449009 | 2227125 | 44.901 | 100000000 | 123.2 MB/s |
| compact | 122362663.000000 | 0 | 122.363 | 1 | |
| readseq | 0.048898 | 20450554 | 4.890 | 100000000 | 1131.2 MB/s |
| readseq | 0.049030 | 20395734 | 4.903 | 100000000 | 1128.2 MB/s |
| readseq | 0.049011 | 20403636 | 4.901 | 100000000 | 1128.6 MB/s |
| readrandom | 0.650380 | 1537562 | 65.038 | 100000000 | 85.0 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.025461 | 39275647 | 2.546 | 100000000 | 299.6 MB/s |
| nextwithkey | 0.025406 | 39359990 | 2.541 | 100000000 | 300.3 MB/s |
| nextwithkey | 0.025468 | 39264821 | 2.547 | 100000000 | 299.6 MB/s |
| readseq | 0.025841 | 38697803 | 2.584 | 100000000 | 295.2 MB/s |
| readseq | 0.025983 | 38485132 | 2.598 | 100000000 | 293.6 MB/s |
| readseq | 0.025809 | 38746293 | 2.581 | 100000000 | 295.6 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019115 | 52313293 | 1.912 | 100000000 | 399.1 MB/s |
| nextwithkey | 0.019078 | 52414390 | 1.908 | 100000000 | 399.9 MB/s |
| nextwithkey | 0.019020 | 52575848 | 1.902 | 100000000 | 401.1 MB/s |
| readseq | 0.019606 | 51003675 | 1.961 | 100000000 | 389.1 MB/s |
| readseq | 0.019596 | 51028713 | 1.960 | 100000000 | 389.3 MB/s |
| readseq | 0.019610 | 50993714 | 1.961 | 100000000 | 389.1 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.458 | 685653 | 145.846 | 100000000 | 37.9 MB/s |
| compact | 53211289.000 | 0 | 53.211 | 1 | |
| readseq | 0.132 | 7569933 | 8.350 | 63210181 | 418.7 MB/s |
| readseq | 0.095 | 10515338 | 6.011 | 63210181 | 581.6 MB/s |
| readseq | 0.095 | 10530765 | 6.002 | 63210181 | 582.5 MB/s |
| readrandom | 2.734 | 365733 | 273.423 | 100000000 | 12.8 MB/s (63216469 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.269 | 3713332 | 26.930 | 100000000 | 205.4 MB/s |
| compact | 37682455.000 | 0 | 37.682 | 1 | |
| readseq | 0.157 | 6361729 | 15.719 | 100000000 | 351.9 MB/s |
| readseq | 0.094 | 10635269 | 9.403 | 100000000 | 588.3 MB/s |
| readseq | 0.094 | 10679365 | 9.364 | 100000000 | 590.7 MB/s |
| readrandom | 2.863 | 349232 | 286.342 | 100000000 | 19.3 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 234575809 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.9114 MiB/s |
| fillrandom | write us/op | 2.34576 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 291973050 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 5.55273 MiB/s |
| readrandom | read us/op | 2.91973 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.634 | 612119 | 163.367 | 100000000 | 33.9 MB/s |
| compact | 49823309.000 | 0 | 49.823 | 1 | |
| readseq | 0.172 | 5817105 | 10.866 | 63207479 | 321.8 MB/s |
| readseq | 0.124 | 8047178 | 7.855 | 63207479 | 445.1 MB/s |
| readseq | 0.125 | 8028655 | 7.873 | 63207479 | 444.1 MB/s |
| readrandom | 2.760 | 362294 | 276.018 | 100000000 | 12.7 MB/s (63202030 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.269 | 3711514 | 26.943 | 100000000 | 205.3 MB/s |
| compact | 40326720.000 | 0 | 40.327 | 1 | |
| readseq | 0.193 | 5193710 | 19.254 | 100000000 | 287.3 MB/s |
| readseq | 0.123 | 8113971 | 12.324 | 100000000 | 448.8 MB/s |
| readseq | 0.123 | 8152838 | 12.266 | 100000000 | 451.0 MB/s |
| readrandom | 2.701 | 370272 | 270.071 | 100000000 | 20.5 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 263458168 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 6.15371 MiB/s |
| fillrandom | write us/op | 2.63458 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 297576744 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 5.44816 MiB/s |
| readrandom | read us/op | 2.97577 |