• D
    Delete non-visible keys during a compaction even in the presense of snapshots. · 9a357847
    Dhruba Borthakur 提交于
    Summary:
     LevelDB should delete almost-new keys when a long-open snapshot exists.
    The previous behavior is to keep all versions that were created after the
    oldest open snapshot. This can lead to database size bloat for
    high-update workloads when there are long-open snapshots and long-open
    snapshot will be used for logical backup. By "almost new" I mean that the
    key was updated more than once after the oldest snapshot.
    
    If there were two snapshots with seq numbers s1 and s2 (s1 < s2), and if
    we find two instances of the same key k1 that lie entirely within s1 and
    s2 (i.e. s1 < k1 < s2), then the earlier version
    of k1 can be safely deleted because that version is not visible in any snapshot.
    
    Test Plan:
    unit test attached
    make clean check
    
    Differential Revision: https://reviews.facebook.net/D6999
    9a357847
db_test.cc 77.3 KB