Benchmark 100M Profiles

Charts

Execution Time

Execution Time

Write Throughput

Write Throughput

Lookup Throughput

Lookup Throughput

Index Scan Throughput

Index Scan Throughput

Query Throughput

Query Throughput

Resource Footprint

Resource Footprint

Total By Engine

Engine Status Run time Completed phase time Pre-read stabilize Post-update stabilize Settle Reopen Verify Storage Process peak memory Final checksum
ZoneTree Completed 15_211_870 ms 14_876_499 ms 72_094 ms 213_421 ms 46 ms 6_166 ms 42_588 ms 7.4 GB 56.3 GB 4E408868CAFD4857
RocksDB Completed 26_163_586 ms 25_261_865 ms 467_556 ms 412_322 ms 0 ms 158 ms 21_305 ms 12.4 GB 11.1 GB 4E408868CAFD4857

Correctness

Checksum validation passed across completed engines: ZoneTree, RocksDB.

Interpretation Notes

  • This benchmark measures live single-operation profile inserts, updates, reads, and indexed queries.
  • ZoneTree and RocksDB secondary indexes are maintained by the benchmark application using separate stores.
  • Embedded engines run in the benchmark process.
  • Completed phase time is the sum of measured workload phases. Run time also includes initialization, stabilization, settle/checkpoint, reopen, verification, and reporting overhead.
  • The write throughput chart includes raw write phases and derived write-readiness bars that add the following stabilization phase.
  • Storage is measured after each engine settles or checkpoints its data.
  • Process peak memory is measured for the benchmark process.

Write Readiness

Engine Insert Pre-read stabilize Insert + stabilize Insert ready throughput Update Post-update stabilize Update + stabilize Update ready throughput
ZoneTree 816_344 ms 72_094 ms 888_438 ms 112_557/s 3_526_941 ms 213_421 ms 3_740_362 ms 26_735/s
RocksDB 975_579 ms 467_556 ms 1_443_135 ms 69_294/s 3_488_173 ms 412_322 ms 3_900_494 ms 25_638/s

Phase Results

ZoneTree

Phase Operations Time Throughput Checksum
insert profiles 100_000_000 816_344 ms 122_497/s FCB46248E0D81425
read by user id 100_000_000 284_645 ms 351_315/s 67AE5B5CBB949FF2
lookup by email 100_000_000 688_776 ms 145_185/s 194BD509DF206EEF
scan country/status index 25_000_000 184_348 ms 135_613/s E5AD445D8FD41F6E
query country/status 25_000_000 1_397_633 ms 17_887/s CB50E4518707DF74
scan created-at index 25_000_000 269_914 ms 92_622/s BAA51FE433523875
query created-at range 25_000_000 2_466_040 ms 10_138/s 2686C0AE1BD960A6
scan top reputation index 25_000_000 125_808 ms 198_716/s 7A98B23B6A0990A5
query top reputation 25_000_000 869_563 ms 28_750/s 26ACD96F896D94A5
update profiles 100_000_000 3_526_941 ms 28_353/s F7A87BCF70BA626A
post-update read by user id 100_000_000 361_216 ms 276_843/s 554A87520F10E43D
post-update lookup by email 100_000_000 773_479 ms 129_286/s 1745396EBE06F8E3
post-update scan country/status index 25_000_000 187_726 ms 133_173/s 5740FFFEAB8201F8
post-update query country/status 25_000_000 1_617_944 ms 15_452/s D31B1C12613C4ED1
post-update scan top reputation index 25_000_000 122_923 ms 203_380/s 6AF8CAC8CCE4AD25
post-update query top reputation 25_000_000 1_183_199 ms 21_129/s 1BE71DE9C349B225

RocksDB

Phase Operations Time Throughput Checksum
insert profiles 100_000_000 975_579 ms 102_503/s FCB46248E0D81425
read by user id 100_000_000 539_978 ms 185_193/s 67AE5B5CBB949FF2
lookup by email 100_000_000 1_044_958 ms 95_698/s 194BD509DF206EEF
scan country/status index 25_000_000 301_223 ms 82_995/s E5AD445D8FD41F6E
query country/status 25_000_000 3_047_132 ms 8_204/s CB50E4518707DF74
scan created-at index 25_000_000 509_790 ms 49_040/s BAA51FE433523875
query created-at range 25_000_000 3_661_163 ms 6_828/s 2686C0AE1BD960A6
scan top reputation index 25_000_000 275_059 ms 90_890/s 7A98B23B6A0990A5
query top reputation 25_000_000 3_160_258 ms 7_911/s 26ACD96F896D94A5
update profiles 100_000_000 3_488_173 ms 28_668/s F7A87BCF70BA626A
post-update read by user id 100_000_000 533_499 ms 187_442/s 554A87520F10E43D
post-update lookup by email 100_000_000 1_041_403 ms 96_024/s 1745396EBE06F8E3
post-update scan country/status index 25_000_000 298_707 ms 83_694/s 5740FFFEAB8201F8
post-update query country/status 25_000_000 3_097_923 ms 8_070/s D31B1C12613C4ED1
post-update scan top reputation index 25_000_000 273_433 ms 91_430/s 6AF8CAC8CCE4AD25
post-update query top reputation 25_000_000 3_013_588 ms 8_296/s 1BE71DE9C349B225

Configuration

  • Profiles: 100_000_000
  • Profile writes: individual operations
  • UserId reads: 100_000_000
  • Email lookups: 100_000_000
  • Query count: 25_000_000
  • Profile updates: 100_000_000
  • Post-update UserId reads: 100_000_000
  • Post-update email lookups: 100_000_000
  • Post-update query count: 25_000_000
  • Query limit: 100
  • Seed: 570123434
  • Timeout: 120_000 seconds per engine

Environment

  • OS: Ubuntu 24.04.3 LTS
  • Architecture: X64
  • .NET: 10.0.9
  • CPU: AMD EPYC 4345P 8-Core Processor
  • Logical processors: 16
  • Total available memory: 60.4 GB
  • Initial process working set: 6.6 GB

Engine Settings

ZoneTree

  • MutableSegmentMaxItemCount: 250000
  • SparseArrayStepSize: 16
  • KeyCacheSize: 1024
  • ValueCacheSize: 1024
  • IteratorPrefetchSize: 16
  • BlockCacheLifeTime: 1 minutes
  • BottomMergePolicy: Full bottom merge when bottom segment count exceeds 1
  • ReadStabilization: Settle before read/query phases

RocksDB

  • Databases: profiles,email-index,country-status-index,created-at-index,reputation-index
  • Compression: Zstd
  • WriteBufferMb: 1024
  • MaxWriteBufferNumber: 4
  • WriteSync: false
  • ReadStabilization: Compact before read/query phases

Durability Settings

  • ZoneTree: AsyncCompressed WAL default; MutableSegmentMaxItemCount=250000; SparseArrayStepSize=16; KeyCacheSize=1024; ValueCacheSize=1024; IteratorPrefetchSize=16; BlockCacheLifeTime=1 minutes; application-managed secondary indexes; background maintainers enabled.
  • RocksDB: WAL enabled; five separate RocksDB instances; no WriteBatch across indexes; compression=Zstd; write_buffer_size=1024 MB per database; max_write_buffer_number=4.