From 34839c03cf996b804a37b669254aa614584894bf Mon Sep 17 00:00:00 2001 From: dicethedev Date: Sat, 25 Apr 2026 10:55:12 +0100 Subject: [PATCH 1/2] add BinaryAndHash data block index to all RocksDB CFs for faster point lookups --- crates/storage/backend/rocksdb.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/storage/backend/rocksdb.rs b/crates/storage/backend/rocksdb.rs index 1672fffb07d..57692681bfb 100644 --- a/crates/storage/backend/rocksdb.rs +++ b/crates/storage/backend/rocksdb.rs @@ -110,6 +110,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB blocks + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -121,6 +123,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -134,6 +138,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); // 10 bits per key + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -147,6 +153,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); // 10 bits per key + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -162,6 +170,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -172,6 +182,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -183,6 +195,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups + block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } From 510929972f67ed71e32fbb7f822661f465135266 Mon Sep 17 00:00:00 2001 From: dicethedev Date: Sat, 25 Apr 2026 11:07:29 +0100 Subject: [PATCH 2/2] fix(l1): remove misleading comments and restrict binaryandhash to point-lookup CFs --- crates/storage/backend/rocksdb.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/crates/storage/backend/rocksdb.rs b/crates/storage/backend/rocksdb.rs index 57692681bfb..f5cf2ce203d 100644 --- a/crates/storage/backend/rocksdb.rs +++ b/crates/storage/backend/rocksdb.rs @@ -110,8 +110,6 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB blocks - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -123,8 +121,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -138,8 +136,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); // 10 bits per key - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -153,8 +151,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); // 16KB block_opts.set_bloom_filter(10.0, false); // 10 bits per key - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -170,8 +168,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -182,8 +180,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(32 * 1024); // 32KB - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); } @@ -195,8 +193,8 @@ impl RocksDBBackend { let mut block_opts = BlockBasedOptions::default(); block_opts.set_block_size(16 * 1024); - block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); // Hash index for faster lookups - block_opts.set_data_block_hash_ratio(0.75); // Hash index covers 75% of entries for good performance + block_opts.set_data_block_index_type(rocksdb::DataBlockIndexType::BinaryAndHash); + block_opts.set_data_block_hash_ratio(0.75); block_opts.set_block_cache(&block_cache); cf_opts.set_block_based_table_factory(&block_opts); }