• C
    Drain unnecessary levels when `level_compaction_dynamic_level_bytes=true` (#11340) · b3c43a5b
    Changyu Bi 提交于
    Summary:
    When a user migrates to level compaction + `level_compaction_dynamic_level_bytes=true`, or when a DB shrinks, there can be unnecessary levels in the DB. Before this PR, this is no way to remove these levels except a manual compaction. These extra unnecessary levels make it harder to guarantee max_bytes_for_level_multiplier and can cause extra space amp. This PR boosts compaction score for these levels to allow RocksDB to automatically drain these levels. Together with https://github.com/facebook/rocksdb/issues/11321, this makes migration to `level_compaction_dynamic_level_bytes=true` automatic without needing user to do a one time full manual compaction. Credit: this PR is modified from https://github.com/facebook/rocksdb/issues/3921.
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/11340
    
    Test Plan:
    - New unit tests
    - `python3 tools/db_crashtest.py whitebox --simple` which randomly sets level_compaction_dynamic_level_bytes in each run.
    
    Reviewed By: ajkr
    
    Differential Revision: D44563884
    
    Pulled By: cbi42
    
    fbshipit-source-id: e20d3620bd73dff22be18c5a91a07f340740bcc8
    b3c43a5b
可在Tags中查看这些版本中当前仓库的状态.
HISTORY.md 277.3 KB