• A
    Collapse range deletions · 50e305de
    Andrew Kryczka 提交于
    Summary:
    Added a tombstone-collapsing mode to RangeDelAggregator, which eliminates overlap in the TombstoneMap. In this mode, we can check whether a tombstone covers a user key using upper_bound() (i.e., binary search). However, the tradeoff is the overhead to add tombstones is now higher, so at first I've only enabled it for range scans (compaction/flush/user iterators), where we expect a high number of calls to ShouldDelete() for the same tombstones. Point queries like Get() will still use the linear scan approach.
    
    Also in this diff I changed RangeDelAggregator's TombstoneMap to use multimap with user keys instead of map with internal keys. Callers sometimes provided ParsedInternalKey directly, from which it would've required string copying to derive an internal key Slice with which we could search the map.
    Closes https://github.com/facebook/rocksdb/pull/1614
    
    Differential Revision: D4270397
    
    Pulled By: ajkr
    
    fbshipit-source-id: 93092c7
    50e305de
Makefile 50.2 KB