Skip to content
  • Levi Tamasi's avatar
    Fix regression affecting partitioned indexes/filters when... · d92a59b6
    Levi Tamasi authored
    Fix regression affecting partitioned indexes/filters when cache_index_and_filter_blocks is false (#5705)
    
    Summary:
    PR https://github.com/facebook/rocksdb/issues/5298 (and subsequent related patches) unintentionally changed the
    semantics of cache_index_and_filter_blocks: historically, this option
    only affected the main index/filter block; with the changes, it affects
    index/filter partitions as well. This can cause performance issues when
    cache_index_and_filter_blocks is false since in this case, partitions are
    neither cached nor preloaded (i.e. they are loaded on demand upon each
    access). The patch reverts to the earlier behavior, that is, partitions
    are cached similarly to data blocks regardless of the value of the above
    option.
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/5705
    
    Test Plan:
    make check
    ./db_bench -benchmarks=fillrandom --statistics --stats_interval_seconds=1 --duration=30 --num=500000000 --bloom_bits=20 --partition_index_and_filters=true --cache_index_and_filter_blocks=false
    ./db_bench -benchmarks=readrandom --use_existing_db --statistics --stats_interval_seconds=1 --duration=10 --num=500000000 --bloom_bits=20 --partition_index_and_filters=true --cache_index_and_filter_blocks=false --cache_size=8000000000
    
    Relevant statistics from the readrandom benchmark with the old code:
    
    rocksdb.block.cache.index.miss COUNT : 0
    rocksdb.block.cache.index.hit COUNT : 0
    rocksdb.block.cache.index.add COUNT : 0
    rocksdb.block.cache.index.bytes.insert COUNT : 0
    rocksdb.block.cache.index.bytes.evict COUNT : 0
    rocksdb.block.cache.filter.miss COUNT : 0
    rocksdb.block.cache.filter.hit COUNT : 0
    rocksdb.block.cache.filter.add COUNT : 0
    rocksdb.block.cache.filter.bytes.insert COUNT : 0
    rocksdb.block.cache.filter.bytes.evict COUNT : 0
    
    With the new code:
    
    rocksdb.block.cache.index.miss COUNT : 2500
    rocksdb.block.cache.index.hit COUNT : 42696
    rocksdb.block.cache.index.add COUNT : 2500
    rocksdb.block.cache.index.bytes.insert COUNT : 4050048
    rocksdb.block.cache.index.bytes.evict COUNT : 0
    rocksdb.block.cache.filter.miss COUNT : 2500
    rocksdb.block.cache.filter.hit COUNT : 4550493
    rocksdb.block.cache.filter.add COUNT : 2500
    rocksdb.block.cache.filter.bytes.insert COUNT : 10331040
    rocksdb.block.cache.filter.bytes.evict COUNT : 0
    
    Differential Revision: D16817382
    
    Pulled By: ltamasi
    
    fbshipit-source-id: 28a516b0da1f041a03313e0b70b28cf5cf205d00
    d92a59b6