Skip to content

Conversation

@kriszyp
Copy link
Member

@kriszyp kriszyp commented Jan 2, 2026

No description provided.

@kriszyp kriszyp marked this pull request as ready for review January 3, 2026 00:09
@cb1kenobi cb1kenobi changed the base branch from reenable-unit-tests to main January 7, 2026 22:36
/**
* Removes all entries from the RocksDB database by dropping the column family
* and recreating it.
* Removes all entries from the RocksDB database by delete the column family
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code does not delete the column family, but rather all entries within the range.

Suggested change
* Removes all entries from the RocksDB database by delete the column family
* Removes all entries in a RocksDB database column family using an uncapped range.

or something like that. GitHub won't let me fix the next line, so it will need to be manually removed.

kriszyp and others added 4 commits January 7, 2026 16:39
Co-authored-by: Chris Barber <chris@harperdb.io>
Co-authored-by: Chris Barber <chris@harperdb.io>
Co-authored-by: Chris Barber <chris@harperdb.io>
Co-authored-by: Chris Barber <chris@harperdb.io>
@github-actions
Copy link

github-actions bot commented Jan 7, 2026

📊 Benchmark Results

get-sync.bench.ts

getSync() > random keys - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 21.37K ops/sec 46.78 40.92 630.833 1.01 10,688
🥈 rocksdb 2 4.19K ops/sec 238.751 205.296 24,656.309 9.67 2,095

getSync() > sequential keys - small key size (100 records)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 24.88K ops/sec 40.20 35.68 565.771 0.923 12,438
🥈 rocksdb 2 4.64K ops/sec 215.619 207.982 680.539 0.245 2,319

ranges.bench.ts

getRange() > small range (100 records, 50 range)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 lmdb 1 23.47K ops/sec 42.60 37.10 416.536 0.999 11,738
🥈 rocksdb 2 3.59K ops/sec 278.317 251.472 1,318.092 1.27 1,797

realistic-load.bench.ts

Realistic write load with workers > write variable records with transaction log

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 182.41 ops/sec 5,482.203 59.19 142,627.195 39.61 384
🥈 lmdb 2 26.30 ops/sec 38,029.051 260.9 1,186,614.086 136.524 64.00

transaction-log.bench.ts

Transaction log > read 100 iterators while write log with 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 33.52K ops/sec 29.84 14.44 491.438 0.709 16,759
🥈 lmdb 2 405.10 ops/sec 2,468.547 948.801 8,140.666 4.48 203

Transaction log > read one entry from random position from log with 1000 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 564.72K ops/sec 1.77 1.53 365.261 0.439 282,359
🥈 lmdb 2 293.77K ops/sec 3.40 1.66 7,807.525 5.33 146,887

worker-put-sync.bench.ts

putSync() > random keys - small key size (100 records, 10 workers)

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 849.31 ops/sec 1,177.426 997.882 1,856.794 0.405 1,699
🥈 lmdb 2 0.99 ops/sec 1,006,774.155 892,945.476 1,065,478.156 3.51 10.00

worker-transaction-log.bench.ts

Transaction log with workers > write log with 100 byte records

Implementation Rank Operations/sec Mean (ms) Min (ms) Max (ms) RME (%) Samples
🥇 rocksdb 1 18.45K ops/sec 54.20 30.64 6,198.785 0.836 36,898
🥈 lmdb 2 802.60 ops/sec 1,245.948 109.289 12,581.718 5.30 1,607

Results from commit 614772c

@cb1kenobi cb1kenobi merged commit cf3bfd6 into main Jan 8, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants