From 7f1ee5e9e11bf4790f5c57546d71c315e3089e4d Mon Sep 17 00:00:00 2001 From: Marat S Date: Fri, 28 Feb 2025 23:57:45 +0000 Subject: [PATCH] 2 level index and filter for state ttl >= 30 days --- tddb/td/db/RocksDb.cpp | 6 ++++++ tddb/td/db/RocksDb.h | 1 + validator/db/celldb.cpp | 2 ++ 3 files changed, 9 insertions(+) diff --git a/tddb/td/db/RocksDb.cpp b/tddb/td/db/RocksDb.cpp index 993da2db..803e18c4 100644 --- a/tddb/td/db/RocksDb.cpp +++ b/tddb/td/db/RocksDb.cpp @@ -78,6 +78,12 @@ Result RocksDb::open(std::string path, RocksDbOptions options) { } if (options.enable_bloom_filter) { table_options.filter_policy.reset(rocksdb::NewBloomFilterPolicy(10, false)); + if (options.two_level_index_and_filter) { + table_options.index_type = rocksdb::BlockBasedTableOptions::IndexType::kTwoLevelIndexSearch; + table_options.partition_filters = true; + table_options.cache_index_and_filter_blocks = true; + table_options.pin_l0_filter_and_index_blocks_in_cache = true; + } } db_options.table_factory.reset(rocksdb::NewBlockBasedTableFactory(table_options)); diff --git a/tddb/td/db/RocksDb.h b/tddb/td/db/RocksDb.h index 26f733a3..b0ae0659 100644 --- a/tddb/td/db/RocksDb.h +++ b/tddb/td/db/RocksDb.h @@ -64,6 +64,7 @@ struct RocksDbOptions { bool use_direct_reads = false; bool no_block_cache = false; bool enable_bloom_filter = false; + bool two_level_index_and_filter = false; }; class RocksDb : public KeyValue { diff --git a/validator/db/celldb.cpp b/validator/db/celldb.cpp index 8a619a53..a68d8056 100644 --- a/validator/db/celldb.cpp +++ b/validator/db/celldb.cpp @@ -102,6 +102,8 @@ void CellDbIn::start_up() { } db_options.use_direct_reads = opts_->get_celldb_direct_io(); db_options.enable_bloom_filter = !opts_->get_celldb_disable_bloom_filter(); + db_options.two_level_index_and_filter = db_options.enable_bloom_filter + && opts_->state_ttl() >= 60 * 60 * 24 * 30; // 30 days if (opts_->get_celldb_in_memory()) { td::RocksDbOptions read_db_options;