Benchmark 1M 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 85_784 ms 81_120 ms 2_143 ms 1_551 ms 14 ms 105 ms 8 ms 73.4 MB 1.5 GB B7578931045C8FC5
RocksDB Completed 227_697 ms 224_106 ms 1_182 ms 1_978 ms 0 ms 45 ms 148 ms 361.7 MB 627.4 MB B7578931045C8FC5
SQLite Completed 497_336 ms 497_205 ms n/a n/a 52 ms 0 ms 6 ms 284.6 MB 637.3 MB B7578931045C8FC5
MySQL Timed out after 1.200 seconds; interrupted: post-update scan country/status index 1_200_033 ms 1_164_712 ms n/a n/a n/a n/a n/a n/a 129.8 MB n/a

Correctness

Checksum validation passed across completed engines: ZoneTree, RocksDB, SQLite. Incomplete engines excluded: MySQL.

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.
  • SQLite and MySQL maintain secondary indexes inside the database engine.
  • MySQL is measured as a client/server database over TCP.
  • 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.
  • Storage is measured after each engine settles or checkpoints its data.
  • Process peak memory is measured for the benchmark process. For MySQL, this excludes MySQL server/container memory.
  • Timeout results include only completed phases, and checksum comparison is performed only across completed engines.

Phase Results

ZoneTree

Phase Operations Time Throughput Checksum
insert profiles 1_000_000 5_771 ms 173_274/s 70EEB1E90366F6E5
read by user id 1_000_000 989 ms 1_011_053/s 0FB577C390019AC8
lookup by email 1_000_000 2_259 ms 442_712/s 9C199CC596F7AC10
scan country/status index 250_000 1_634 ms 153_040/s B3350AAEFBCE068F
query country/status 250_000 12_002 ms 20_829/s 11A194A99CB7D634
scan created-at index 250_000 1_638 ms 152_599/s E3FE4E613ABE23A5
query created-at range 250_000 10_974 ms 22_781/s B8595B9702849552
scan top reputation index 250_000 956 ms 261_598/s FD457DADD7424105
query top reputation 250_000 7_359 ms 33_970/s B472892F8C7EF235
update profiles 1_000_000 12_169 ms 82_174/s 2440ADD57E65500B
post-update read by user id 1_000_000 1_079 ms 927_113/s 7DB9AA24CC9A8B8E
post-update lookup by email 1_000_000 2_192 ms 456_206/s 43569B6DA38ACCB5
post-update scan country/status index 250_000 1_346 ms 185_747/s 896A595A5F979F99
post-update query country/status 250_000 12_418 ms 20_131/s EF5D80897CBF7824
post-update scan top reputation index 250_000 978 ms 255_595/s 905E8A81EE9017E5
post-update query top reputation 250_000 7_355 ms 33_990/s 1A17E74A9E34D635

RocksDB

Phase Operations Time Throughput Checksum
insert profiles 1_000_000 10_327 ms 96_836/s 70EEB1E90366F6E5
read by user id 1_000_000 4_635 ms 215_737/s 0FB577C390019AC8
lookup by email 1_000_000 9_239 ms 108_236/s 9C199CC596F7AC10
scan country/status index 250_000 2_880 ms 86_809/s B3350AAEFBCE068F
query country/status 250_000 27_228 ms 9_182/s 11A194A99CB7D634
scan created-at index 250_000 4_855 ms 51_489/s E3FE4E613ABE23A5
query created-at range 250_000 31_879 ms 7_842/s B8595B9702849552
scan top reputation index 250_000 2_538 ms 98_511/s FD457DADD7424105
query top reputation 250_000 26_027 ms 9_605/s B472892F8C7EF235
update profiles 1_000_000 23_263 ms 42_986/s 2440ADD57E65500B
post-update read by user id 1_000_000 4_868 ms 205_430/s 7DB9AA24CC9A8B8E
post-update lookup by email 1_000_000 9_651 ms 103_617/s 43569B6DA38ACCB5
post-update scan country/status index 250_000 2_861 ms 87_394/s 896A595A5F979F99
post-update query country/status 250_000 31_534 ms 7_928/s EF5D80897CBF7824
post-update scan top reputation index 250_000 2_549 ms 98_088/s 905E8A81EE9017E5
post-update query top reputation 250_000 29_773 ms 8_397/s 1A17E74A9E34D635

SQLite

Phase Operations Time Throughput Checksum
insert profiles 1_000_000 132_369 ms 7_555/s 70EEB1E90366F6E5
read by user id 1_000_000 2_700 ms 370_433/s 0FB577C390019AC8
lookup by email 1_000_000 3_577 ms 279_601/s 9C199CC596F7AC10
scan country/status index 250_000 4_547 ms 54_984/s B3350AAEFBCE068F
query country/status 250_000 27_978 ms 8_935/s 11A194A99CB7D634
scan created-at index 250_000 4_510 ms 55_434/s E3FE4E613ABE23A5
query created-at range 250_000 25_226 ms 9_910/s B8595B9702849552
scan top reputation index 250_000 3_972 ms 62_948/s FD457DADD7424105
query top reputation 250_000 26_654 ms 9_380/s B472892F8C7EF235
update profiles 1_000_000 195_653 ms 5_111/s 2440ADD57E65500B
post-update read by user id 1_000_000 2_595 ms 385_328/s 7DB9AA24CC9A8B8E
post-update lookup by email 1_000_000 3_492 ms 286_390/s 43569B6DA38ACCB5
post-update scan country/status index 250_000 4_577 ms 54_618/s 896A595A5F979F99
post-update query country/status 250_000 28_463 ms 8_783/s EF5D80897CBF7824
post-update scan top reputation index 250_000 3_977 ms 62_859/s 905E8A81EE9017E5
post-update query top reputation 250_000 26_916 ms 9_288/s 1A17E74A9E34D635

MySQL

Interrupted: post-update scan country/status index

Phase Operations Time Throughput Checksum
insert profiles 1_000_000 144_555 ms 6_918/s 70EEB1E90366F6E5
read by user id 1_000_000 102_118 ms 9_793/s 0FB577C390019AC8
lookup by email 1_000_000 108_485 ms 9_218/s 9C199CC596F7AC10
scan country/status index 250_000 38_138 ms 6_555/s B3350AAEFBCE068F
query country/status 250_000 71_829 ms 3_480/s 11A194A99CB7D634
scan created-at index 250_000 38_924 ms 6_423/s E3FE4E613ABE23A5
query created-at range 250_000 69_648 ms 3_589/s B8595B9702849552
scan top reputation index 250_000 30_930 ms 8_083/s FD457DADD7424105
query top reputation 250_000 61_728 ms 4_050/s B472892F8C7EF235
update profiles 1_000_000 296_612 ms 3_371/s 2440ADD57E65500B
post-update read by user id 1_000_000 96_640 ms 10_348/s 7DB9AA24CC9A8B8E
post-update lookup by email 1_000_000 105_107 ms 9_514/s 43569B6DA38ACCB5

Configuration

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

Environment

  • OS: Microsoft Windows 10.0.26200
  • Architecture: X64
  • .NET: 10.0.6
  • CPU: Intel(R) Core(TM) Ultra 7 265KF
  • Logical processors: 20
  • Total available memory: 63.6 GB
  • Initial process working set: 104.6 MB

Engine Settings

ZoneTree

  • MutableSegmentMaxItemCount: 250000
  • SparseArrayStepSize: 16
  • KeyCacheSize: 1024
  • ValueCacheSize: 1024
  • IteratorPrefetchSize: 16
  • BlockCacheLifeTime: 1 minutes
  • 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

SQLite

  • JournalMode: WAL
  • Synchronous: NORMAL
  • CacheMb: 1024
  • MmapMb: 1024
  • TempStore: MEMORY

MySQL

  • Host: 192.168.178.25
  • Port: 3306
  • Database: profilebench
  • User: root

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.
  • SQLite: WAL journal mode; synchronous=NORMAL; cache=1024 MB; mmap=1024 MB; native SQL indexes; single-row writes use autocommit.
  • MySQL: InnoDB; benchmark Docker disables binlog, sets innodb_flush_log_at_trx_commit=2 and sync_binlog=0; native SQL indexes; single-row writes use autocommit.