Mike Kolupaev 236d4c67e9 Less linear search in DBIter::Seek() when keys are overwritten a lot
Summary:
In one deployment we saw high latencies (presumably from slow iterator operations) and a lot of CPU time reported by perf with this stack:

```
  rocksdb::MergingIterator::Next
  rocksdb::DBIter::FindNextUserEntryInternal
  rocksdb::DBIter::Seek
```

I think what's happening is:
1. we create a snapshot iterator,
2. we do lots of Put()s for the same key x; this creates lots of entries in memtable,
3. we seek the iterator to a key slightly smaller than x,
4. the seek walks over lots of entries in memtable for key x, skipping them because of high sequence numbers.

CC IslamAbdelRahman
Closes https://github.com/facebook/rocksdb/pull/1413

Differential Revision: D4083879

Pulled By: IslamAbdelRahman

fbshipit-source-id: a83ddae
2016-11-28 10:24:11 -08:00
..
2016-09-01 13:50:39 -07:00
2016-11-15 15:24:16 -08:00
2016-10-17 15:34:13 -07:00
2016-09-22 11:56:18 -07:00
2016-06-14 17:07:34 -07:00
2016-03-30 14:36:48 -07:00
2016-11-16 22:39:09 -08:00
2016-10-19 19:45:57 -07:00
2016-11-17 18:39:15 -08:00
2016-03-22 17:10:31 -07:00