Bench run: plain / 31298142068
← plain home |
dcompact →
generated (UTC): 2026-08-09T07:40:13.155431+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 9V74 80-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 | 740.8MiB | 3.7GiB | 3.7GiB | 0.86x | 0.19x |
| 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.4GiB | 2.3GiB | 4.1GiB | 4.2GiB | 0.59x | 0.55x |
| fillrandom-omit | 139.8MiB | 178.0MiB | 4.1GiB | n/a | 0.03x | 0.04x |
| fillseq | 1.9GiB | 1.9GiB | 6.4GiB | 6.5GiB | 0.29x | 0.29x |
| fillseq-omit | 128.3MiB | 190.0MiB | 6.4GiB | 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/28.5s | 1/75.5s | 1/54.2s | 1/59.6s | 2.65x | 1.90x | 2.09x | 0.72x | 0.79x |
| fillrandom | 974513 | 1020654 | 616100 | 491847 | 0.95x | 1.58x | 1.98x | 1.66x | 2.08x |
| readrandom | 3393391 | 1586810 | 297872 | 305270 | 2.14x | 11.39x | 11.12x | 5.33x | 5.20x |
| readseq | 24216792 | 17149231 | 9751304 | 8384320 | 1.41x | 1.57x | 1.83x | 1.11x | 1.29x |
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/38.8s | 1/122.9s | 1/36.0s | 1/35.4s | 3.17x | 0.93x | 0.91x | 0.29x | 0.29x |
| fillseq | 2342831 | 2331734 | 4046183 | 4072689 | 1.00x | 0.58x | 0.58x | 0.58x | 0.57x |
| readrandom | 6519655 | 1193863 | 296239 | 282811 | 5.46x | 22.01x | 23.05x | 4.03x | 4.22x |
| readseq | 30453247 | 19541704 | 9864337 | 8401737 | 1.56x | 3.09x | 3.62x | 1.98x | 2.33x |
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 | 38186697 | 38833202 | — | — | — |
| readseq | 36764814 | 37141625 | 9751304 | 2.38x | 2.41x |
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 | 51839364 | 52264844 | — | — | — |
| readseq | 50355636 | 50360987 | 9864337 | 5.10x | 5.10x |
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 | 40355896 us | 384833342 us | 381334768 us | 0.11x |
| fillrandom | Write throughput | 40.1737 MiB/s | 4.21285 MiB/s | 4.2515 MiB/s | 9.45x |
| fillrandom | write us/op | 0.403559 | 3.84833 | 3.81335 | 0.11x |
| readrandom | Elapsed time | 58719810 us | 467036277 us | 462341900 us | 0.13x |
| readrandom | Read throughput | 27.6099 MiB/s | 3.47135 MiB/s | 3.5066 MiB/s | 7.87x |
| readrandom | read us/op | 0.587198 | 4.67036 | 4.62342 | 0.13x |
Per-engine details
ToplingDB zipkeyonly
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.026152 | 974513 | 102.615 | 100000000 | 53.9 MB/s |
| compact | 28542562.000000 | 0 | 28.543 | 1 | |
| readseq | 0.041813 | 23915618 | 4.181 | 100000000 | 1322.8 MB/s |
| readseq | 0.041935 | 23846224 | 4.194 | 100000000 | 1319.0 MB/s |
| readseq | 0.041293 | 24216792 | 4.129 | 100000000 | 1339.5 MB/s |
| readrandom | 0.294690 | 3393391 | 29.469 | 100000000 | 118.7 MB/s (63219918 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.426833 | 2342831 | 42.683 | 100000000 | 129.6 MB/s |
| compact | 38821872.000000 | 0 | 38.822 | 1 | |
| readseq | 0.032583 | 30689824 | 3.258 | 100000000 | 1697.5 MB/s |
| readseq | 0.033215 | 30106299 | 3.322 | 100000000 | 1665.3 MB/s |
| readseq | 0.032837 | 30453247 | 3.284 | 100000000 | 1684.5 MB/s |
| readrandom | 0.153382 | 6519655 | 15.338 | 100000000 | 360.6 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026503 | 37730581 | 2.650 | 100000000 | 287.9 MB/s |
| nextwithkey | 0.027961 | 35763741 | 2.796 | 100000000 | 272.9 MB/s |
| nextwithkey | 0.026186 | 38186697 | 2.619 | 100000000 | 291.3 MB/s |
| readseq | 0.027942 | 35788098 | 2.794 | 100000000 | 273.0 MB/s |
| readseq | 0.027374 | 36530507 | 2.737 | 100000000 | 278.7 MB/s |
| readseq | 0.027199 | 36764814 | 2.720 | 100000000 | 280.5 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019188 | 52114520 | 1.919 | 100000000 | 397.6 MB/s |
| nextwithkey | 0.019162 | 52184141 | 1.916 | 100000000 | 398.1 MB/s |
| nextwithkey | 0.019290 | 51839364 | 1.929 | 100000000 | 395.5 MB/s |
| readseq | 0.019857 | 50358020 | 1.986 | 100000000 | 384.2 MB/s |
| readseq | 0.019954 | 50112979 | 1.995 | 100000000 | 382.3 MB/s |
| readseq | 0.019858 | 50355636 | 1.986 | 100000000 | 384.2 MB/s |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 384833342 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.21285 MiB/s |
| fillrandom | write us/op | 3.84833 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 467036277 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 3.47135 MiB/s |
| readrandom | read us/op | 4.67036 |
memtablerep_bench (cspp, ToplingDB only)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 40355896 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 40.1737 MiB/s |
| fillrandom | write us/op | 0.403559 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 58719810 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 27.6099 MiB/s |
| readrandom | read us/op | 0.587198 |
ToplingDB zipkeyvalue
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 0.979759 | 1020654 | 97.976 | 100000000 | 56.5 MB/s |
| compact | 75525290.000000 | 0 | 75.525 | 1 | |
| readseq | 0.058826 | 16999072 | 5.883 | 100000000 | 940.3 MB/s |
| readseq | 0.058058 | 17223968 | 5.806 | 100000000 | 952.7 MB/s |
| readseq | 0.058311 | 17149231 | 5.831 | 100000000 | 948.6 MB/s |
| readrandom | 0.630194 | 1586810 | 63.019 | 100000000 | 55.5 MB/s (63214099 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.428865 | 2331734 | 42.887 | 100000000 | 129.0 MB/s |
| compact | 122874051.000000 | 0 | 122.874 | 1 | |
| readseq | 0.049509 | 20198188 | 4.951 | 100000000 | 1117.2 MB/s |
| readseq | 0.048212 | 20741440 | 4.821 | 100000000 | 1147.3 MB/s |
| readseq | 0.051172 | 19541704 | 5.117 | 100000000 | 1080.9 MB/s |
| readrandom | 0.837616 | 1193863 | 83.762 | 100000000 | 66.0 MB/s (100000000 of 100000000 found) |
db_bench omit lazy-load (fillrandom DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.026025 | 38423513 | 2.603 | 100000000 | 293.1 MB/s |
| nextwithkey | 0.025718 | 38882365 | 2.572 | 100000000 | 296.6 MB/s |
| nextwithkey | 0.025751 | 38833202 | 2.575 | 100000000 | 296.3 MB/s |
| readseq | 0.026576 | 37626660 | 2.658 | 100000000 | 287.1 MB/s |
| readseq | 0.027014 | 37016951 | 2.701 | 100000000 | 282.4 MB/s |
| readseq | 0.026923 | 37141625 | 2.692 | 100000000 | 283.4 MB/s |
db_bench omit lazy-load (fillseq DB)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| nextwithkey | 0.019298 | 51818572 | 1.930 | 100000000 | 395.3 MB/s |
| nextwithkey | 0.019139 | 52246249 | 1.914 | 100000000 | 398.6 MB/s |
| nextwithkey | 0.019133 | 52264844 | 1.913 | 100000000 | 398.7 MB/s |
| readseq | 0.019857 | 50357893 | 1.986 | 100000000 | 384.2 MB/s |
| readseq | 0.019859 | 50353557 | 1.986 | 100000000 | 384.2 MB/s |
| readseq | 0.019856 | 50360987 | 1.986 | 100000000 | 384.2 MB/s |
RocksDB v8.10
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 1.623 | 616100 | 162.311 | 100000000 | 34.1 MB/s |
| compact | 54179357.000 | 0 | 54.179 | 1 | |
| readseq | 0.149 | 6727364 | 9.396 | 63212999 | 372.1 MB/s |
| readseq | 0.103 | 9728932 | 6.497 | 63212999 | 538.1 MB/s |
| readseq | 0.103 | 9751304 | 6.483 | 63212999 | 539.4 MB/s |
| readrandom | 3.357 | 297872 | 335.714 | 100000000 | 10.4 MB/s (63211909 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.247 | 4046183 | 24.715 | 100000000 | 223.8 MB/s |
| compact | 35961502.000 | 0 | 35.962 | 1 | |
| readseq | 0.172 | 5810854 | 17.209 | 100000000 | 321.4 MB/s |
| readseq | 0.100 | 9954596 | 10.046 | 100000000 | 550.6 MB/s |
| readseq | 0.101 | 9864337 | 10.138 | 100000000 | 545.6 MB/s |
| readrandom | 3.376 | 296239 | 337.564 | 100000000 | 16.4 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 381334768 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.2515 MiB/s |
| fillrandom | write us/op | 3.81335 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 462341900 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 3.5066 MiB/s |
| readrandom | read us/op | 4.62342 |
RocksDB master (5fe22535)
db_bench (fillrandom+compact+readseq/readrandom)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillrandom | 2.033 | 491847 | 203.315 | 100000000 | 27.2 MB/s |
| compact | 59645982.000 | 0 | 59.646 | 1 | |
| readseq | 0.177 | 5660466 | 11.167 | 63212822 | 313.1 MB/s |
| readseq | 0.120 | 8313831 | 7.603 | 63212822 | 459.9 MB/s |
| readseq | 0.119 | 8384320 | 7.539 | 63212822 | 463.8 MB/s |
| readrandom | 3.276 | 305270 | 327.578 | 100000000 | 10.7 MB/s (63221458 of 100000000 found) |
db_bench (fillseq suite)
| benchmark | micros/op | ops/sec | seconds | operations | extra |
| fillseq | 0.246 | 4072689 | 24.554 | 100000000 | 225.3 MB/s |
| compact | 35440306.000 | 0 | 35.440 | 1 | |
| readseq | 0.198 | 5046238 | 19.817 | 100000000 | 279.1 MB/s |
| readseq | 0.119 | 8416299 | 11.882 | 100000000 | 465.5 MB/s |
| readseq | 0.119 | 8401737 | 11.902 | 100000000 | 464.7 MB/s |
| readrandom | 3.536 | 282811 | 353.592 | 100000000 | 15.6 MB/s (100000000 of 100000000 found) |
memtablerep_bench (skiplist)
| benchmark | metric | value |
| fillrandom | Number of threads | 1 |
| fillrandom | Elapsed time | 381118149 us |
| fillrandom | Total bytes written | 1621.25 MiB |
| fillrandom | Write throughput | 4.25392 MiB/s |
| fillrandom | write us/op | 3.81118 |
| readrandom | Number of threads | 1 |
| readrandom | Elapsed time | 427624145 us |
| readrandom | Total bytes read | 1621.25 MiB |
| readrandom | Read throughput | 3.79129 MiB/s |
| readrandom | read us/op | 4.27624 |