improve OptimizeForPointLookup()

Summary: also fix HISTORY.md

Test Plan: make all check

Reviewers: sdong, yhchiang, igor

Reviewed By: igor

Subscribers: leveldb

Differential Revision: https://reviews.facebook.net/D22437
main
Lei Jin 10 years ago
parent d9c0785812
commit 1755581f19
  1. 11
      HISTORY.md
  2. 4
      db/c.cc
  3. 2
      include/rocksdb/c.h
  4. 3
      include/rocksdb/options.h
  5. 8
      util/options.cc

@ -3,10 +3,18 @@
### Unreleased ### Unreleased
### New Features ### New Features
* Add include/utilities/write_batch_with_index.h, providing a utilitiy class to query data out of WriteBatch when building it. * Add include/utilities/write_batch_with_index.h, providing a utilitiy class to query data out of WriteBatch when building it.
* Move BlockBasedTable related options to BlockBasedTableOptions from Options. Change corresponding JNI interface. Options affected include:
no_block_cache, block_cache, block_cache_compressed, block_size, block_size_deviation, block_restart_interval, filter_policy, whole_key_filtering. filter_policy is changed to shared_ptr from a raw pointer.
* Remove deprecated options: disable_seek_compaction and db_stats_log_interval
* OptimizeForPointLookup() takes one parameter for block cache size. It now builds hash index, bloom filter, and block cache.
### Public API changes ### Public API changes
* The Prefix Extractor used with V2 compaction filters is now passed user key to SliceTransform::Transform instead of unparsed RocksDB key. * The Prefix Extractor used with V2 compaction filters is now passed user key to SliceTransform::Transform instead of unparsed RocksDB key.
----- Past Releases -----
## 3.4.0 (8/18/2014) ## 3.4.0 (8/18/2014)
### New Features ### New Features
* Support Multiple DB paths in universal style compactions * Support Multiple DB paths in universal style compactions
@ -21,9 +29,6 @@
* Add DB property rocksdb.estimate-num-keys, estimated number of live keys in DB. * Add DB property rocksdb.estimate-num-keys, estimated number of live keys in DB.
* Add DB::GetIntProperty(), which returns DB properties that are integer as uint64_t. * Add DB::GetIntProperty(), which returns DB properties that are integer as uint64_t.
* The Prefix Extractor used with V2 compaction filters is now passed user key to SliceTransform::Transform instead of unparsed RocksDB key. * The Prefix Extractor used with V2 compaction filters is now passed user key to SliceTransform::Transform instead of unparsed RocksDB key.
* Move BlockBasedTable related options to BlockBasedTableOptions from Options. Change corresponding JNI interface. Options affected include:
no_block_cache, block_cache, block_cache_compressed, block_size, block_size_deviation, block_restart_interval, filter_policy, whole_key_filtering. filter_policy is changed to shared_ptr from a raw pointer.
* Remove deprecated options: disable_seek_compaction and db_stats_log_interval
## 3.3.0 (7/10/2014) ## 3.3.0 (7/10/2014)
### New Features ### New Features

@ -1137,8 +1137,8 @@ void rocksdb_options_increase_parallelism(
} }
void rocksdb_options_optimize_for_point_lookup( void rocksdb_options_optimize_for_point_lookup(
rocksdb_options_t* opt) { rocksdb_options_t* opt, uint64_t block_cache_size_mb) {
opt->rep.OptimizeForPointLookup(); opt->rep.OptimizeForPointLookup(block_cache_size_mb);
} }
void rocksdb_options_optimize_level_style_compaction( void rocksdb_options_optimize_level_style_compaction(

@ -383,7 +383,7 @@ extern void rocksdb_options_destroy(rocksdb_options_t*);
extern void rocksdb_options_increase_parallelism( extern void rocksdb_options_increase_parallelism(
rocksdb_options_t* opt, int total_threads); rocksdb_options_t* opt, int total_threads);
extern void rocksdb_options_optimize_for_point_lookup( extern void rocksdb_options_optimize_for_point_lookup(
rocksdb_options_t* opt); rocksdb_options_t* opt, uint64_t block_cache_size_mb);
extern void rocksdb_options_optimize_level_style_compaction( extern void rocksdb_options_optimize_level_style_compaction(
rocksdb_options_t* opt, uint64_t memtable_memory_budget); rocksdb_options_t* opt, uint64_t memtable_memory_budget);
extern void rocksdb_options_optimize_universal_style_compaction( extern void rocksdb_options_optimize_universal_style_compaction(

@ -97,7 +97,8 @@ struct ColumnFamilyOptions {
// Use this if you don't need to keep the data sorted, i.e. you'll never use // Use this if you don't need to keep the data sorted, i.e. you'll never use
// an iterator, only Put() and Get() API calls // an iterator, only Put() and Get() API calls
ColumnFamilyOptions* OptimizeForPointLookup(); ColumnFamilyOptions* OptimizeForPointLookup(
uint64_t block_cache_size_mb);
// Default values for some parameters in ColumnFamilyOptions are not // Default values for some parameters in ColumnFamilyOptions are not
// optimized for heavy workloads and big datasets, which means you might // optimized for heavy workloads and big datasets, which means you might

@ -458,10 +458,14 @@ Options::PrepareForBulkLoad()
} }
// Optimization functions // Optimization functions
ColumnFamilyOptions* ColumnFamilyOptions::OptimizeForPointLookup() { ColumnFamilyOptions* ColumnFamilyOptions::OptimizeForPointLookup(
uint64_t block_cache_size_mb) {
prefix_extractor.reset(NewNoopTransform()); prefix_extractor.reset(NewNoopTransform());
BlockBasedTableOptions block_based_options; BlockBasedTableOptions block_based_options;
block_based_options.index_type = BlockBasedTableOptions::kBinarySearch; block_based_options.index_type = BlockBasedTableOptions::kHashSearch;
block_based_options.filter_policy.reset(NewBloomFilterPolicy(10));
block_based_options.block_cache =
NewLRUCache(block_cache_size_mb * 1024 * 1024);
table_factory.reset(new BlockBasedTableFactory(block_based_options)); table_factory.reset(new BlockBasedTableFactory(block_based_options));
#ifndef ROCKSDB_LITE #ifndef ROCKSDB_LITE
memtable_factory.reset(NewHashLinkListRepFactory()); memtable_factory.reset(NewHashLinkListRepFactory());

Loading…
Cancel
Save