Andrew Kryczka b104b87814 Maintain position in range deletions map
Summary:
When deletion-collapsing mode is enabled (i.e., for DBIter/CompactionIterator), we maintain position in the tombstone maps across calls to ShouldDelete(). Since iterators often access keys sequentially (or reverse-sequentially), scanning forward/backward from the last position can be faster than binary-searching the map for every key.

- When Next() is invoked on an iterator, we use kForwardTraversal to scan forwards, if needed, until arriving at the range deletion containing the next key.
- Similarly for Prev(), we use kBackwardTraversal to scan backwards in the range deletion map.
- When the iterator seeks, we use kBinarySearch for repositioning
- After tombstones are added or before the first ShouldDelete() invocation, the current position is set to invalid, which forces kBinarySearch to be used.
- Non-iterator users (i.e., Get()) use kFullScan, which has the same behavior as before---scan the whole map for every key passed to ShouldDelete().
Closes https://github.com/facebook/rocksdb/pull/1701

Differential Revision: D4350318

Pulled By: ajkr

fbshipit-source-id: 5129b76
2017-01-05 10:39:12 -08:00
..
2016-11-21 12:24:13 -08:00
2016-11-19 14:24:12 -08:00
2017-01-03 18:39:14 -08:00
2017-01-03 18:39:14 -08:00
2016-11-23 09:24:15 -08:00
2016-11-03 18:54:20 -07:00
2016-11-04 12:09:22 -07:00
2016-12-19 16:54:12 -08:00
2016-12-19 14:09:12 -08:00
2016-12-22 13:09:19 -08:00
2017-01-03 17:54:12 -08:00
2017-01-03 18:39:14 -08:00
2016-11-10 11:09:22 -08:00
2016-12-19 16:54:12 -08:00
2016-07-08 17:50:51 -07:00
2016-10-13 08:48:40 -07:00
2016-07-08 17:50:51 -07:00
2016-11-03 18:54:20 -07:00
2016-12-17 00:09:13 -08:00
2016-11-21 12:24:13 -08:00
2016-12-29 15:54:19 -08:00
2016-11-19 14:24:12 -08:00
2016-09-27 18:20:57 -07:00
2016-09-27 18:20:57 -07:00
2016-07-13 15:36:22 -07:00
2016-11-21 18:09:13 -08:00