rocksdb/db
Dhruba Borthakur cb7a00227f The method GetOverlappingInputs should use binary search.
Summary:
The method Version::GetOverlappingInputs used a sequential search
to map a kay-range to a set of files. But the files are arranged
in ascending order of key, so a biary search is more effective.

This patch implements Version::GetOverlappingInputsBinarySearch
that finds one file that corresponds to the specified key range
and then iterates backwards and forwards to find all overlapping
files.

This patch is critical for making compactions efficient, especially
when there are thousands of files in a single level.

I measured that 1000 iterations of TEST_MaxNextLevelOverlappingBytes
takes 16000 microseconds without this patch. With this patch, the
same method takes about 4600 microseconds.

Test Plan: Almost all unit tests in db_test uses this method to lookup keys.

Reviewers: heyongqiang

Reviewed By: heyongqiang

CC: MarkCallaghan, emayanke, sheki

Differential Revision: https://reviews.facebook.net/D6465
2012-11-05 16:08:01 -08:00
..
builder.cc Allow having different compression algorithms on different levels. 2012-10-29 11:48:09 -07:00
builder.h A number of fixes: 2011-10-31 17:22:06 +00:00
c.cc Make compression options configurable. These include window-bits, level and strategy for ZlibCompression 2012-11-02 11:26:39 -07:00
c_test.c Make compression options configurable. These include window-bits, level and strategy for ZlibCompression 2012-11-02 11:26:39 -07:00
corruption_test.cc Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
db_bench.cc Make compression options configurable. These include window-bits, level and strategy for ZlibCompression 2012-11-02 11:26:39 -07:00
db_filesnapshot.cc The BackupAPI should also list the length of the manifest file. 2012-09-25 03:13:25 -07:00
db_impl.cc Ability to invoke application hook for every key during compaction. 2012-11-05 16:02:13 -08:00
db_impl.h Adds DB::GetNextCompaction and then uses that for rate limiting db_bench 2012-10-29 10:17:43 -07:00
db_iter.cc A number of fixes: 2011-10-31 17:22:06 +00:00
db_iter.h A number of fixes: 2011-10-31 17:22:06 +00:00
db_statistics.h Fix table-cache size bug, gather table-cache statistics and prevent readahead done by fs. Summary: 2012-05-30 16:42:45 -07:00
db_stats_logger.cc remove boost 2012-09-16 19:33:43 -07:00
db_test.cc Ability to invoke application hook for every key during compaction. 2012-11-05 16:02:13 -08:00
dbformat.cc Added bloom filter support. 2012-04-17 08:36:46 -07:00
dbformat.h Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
dbformat_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
filename.cc put log in a seperate dir 2012-09-06 17:52:08 -07:00
filename.h put log in a seperate dir 2012-09-06 17:52:08 -07:00
filename_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
log_format.h A number of fixes: 2011-10-31 17:22:06 +00:00
log_reader.cc A number of fixes: 2011-10-31 17:22:06 +00:00
log_reader.h A number of fixes: 2011-10-31 17:22:06 +00:00
log_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
log_writer.cc A number of fixes: 2011-10-31 17:22:06 +00:00
log_writer.h A number of fixes: 2011-10-31 17:22:06 +00:00
memtable.cc A number of fixes: 2011-10-31 17:22:06 +00:00
memtable.h A number of fixes: 2011-10-31 17:22:06 +00:00
repair.cc Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
skiplist.h skiplist: optimize for sequential insert pattern 2012-05-11 09:57:40 -07:00
skiplist_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
snapshot.h A number of fixes: 2011-10-31 17:22:06 +00:00
table_cache.cc Add two more options: disable block cache and make table cache shard number configuable 2012-11-01 13:23:21 -07:00
table_cache.h Trigger read compaction only if seeks to storage are incurred. 2012-09-28 11:10:52 -07:00
version_edit.cc Clean up compiler warnings generated by -Wall option. 2012-08-29 14:24:51 -07:00
version_edit.h Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
version_edit_test.cc Make some variables configurable for each db instance 2012-06-27 14:36:31 -07:00
version_set.cc The method GetOverlappingInputs should use binary search. 2012-11-05 16:08:01 -08:00
version_set.h The method GetOverlappingInputs should use binary search. 2012-11-05 16:08:01 -08:00
version_set_reduce_num_levels.cc Add a tool to change number of levels 2012-11-05 10:17:39 -08:00
version_set_test.cc A number of fixes: 2011-10-31 17:22:06 +00:00
write_batch.cc added group commit; drastically speeds up mult-threaded synchronous write workloads 2012-03-08 16:23:21 -08:00
write_batch_internal.h added group commit; drastically speeds up mult-threaded synchronous write workloads 2012-03-08 16:23:21 -08:00
write_batch_test.cc added group commit; drastically speeds up mult-threaded synchronous write workloads 2012-03-08 16:23:21 -08:00