• I
    options.level_compaction_dynamic_level_bytes to allow RocksDB to pick size... · db037393
    Igor Canadi 提交于
    options.level_compaction_dynamic_level_bytes to allow RocksDB to pick size bases of levels dynamically.
    
    Summary:
    When having fixed max_bytes_for_level_base, the ratio of size of largest level and the second one can range from 0 to the multiplier. This makes LSM tree frequently irregular and unpredictable. It can also cause poor space amplification in some cases.
    
    In this improvement (proposed by Igor Kabiljo), we introduce a parameter option.level_compaction_use_dynamic_max_bytes. When turning it on, RocksDB is free to pick a level base in the range of (options.max_bytes_for_level_base/options.max_bytes_for_level_multiplier, options.max_bytes_for_level_base] so that real level ratios are close to options.max_bytes_for_level_multiplier.
    
    Test Plan: New unit tests and pass tests suites including valgrind.
    
    Reviewers: MarkCallaghan, rven, yhchiang, igor, ikabiljo
    
    Reviewed By: ikabiljo
    
    Subscribers: yoshinorim, ikabiljo, dhruba, leveldb
    
    Differential Revision: https://reviews.facebook.net/D31437
    db037393
db_impl.cc 139.3 KB