rocksdb/util
Aaron Gao 2014cdf2d0 do not read next datablock if upperbound is reached
Summary:
Now if we have iterate_upper_bound set, we continue read until get a key >= upper_bound. For a lot of cases that neighboring data blocks have a user key gap between them, our index key will be a user key in the middle to get a shorter size. For example, if we have blocks:
[a b c d][f g h]
Then the index key for the first block will be 'e'.
then if upper bound is any key between 'd' and 'e', for example, d1, d2, ..., d99999999999, we don't have to read the second block and also know that we have done our iteration by reaching the last key that smaller the upper bound already.

This diff can reduce RA in most cases.
Closes https://github.com/facebook/rocksdb/pull/2239

Differential Revision: D4990693

Pulled By: lightmark

fbshipit-source-id: ab30ea2e3c6edf3fddd5efed3c34fcf7739827ff
2017-05-10 14:06:33 -07:00
..
aligned_buffer.h direct reads refactor 2017-01-11 16:54:12 -08:00
allocator.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena.cc Fix build with MinGW 2017-03-30 16:54:52 -07:00
arena.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
auto_roll_logger_test.cc Move auto_roll_logger and filename out of db/ 2017-04-03 18:39:14 -07:00
auto_roll_logger.cc Move auto_roll_logger and filename out of db/ 2017-04-03 18:39:14 -07:00
auto_roll_logger.h Move auto_roll_logger and filename out of db/ 2017-04-03 18:39:14 -07:00
autovector_test.cc Eliminate use of 'using namespace std'. Also remove a number of ADL references to std functions. 2016-05-20 07:42:18 -07:00
autovector.h Implement non-exclusive locks 2016-12-05 17:39:17 -08:00
bloom_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
build_version.cc.in Makefile: generate util/build_version.cc from .in file (#1384) 2016-10-25 11:31:39 -07:00
build_version.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
channel.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.h Blob storage helper methods 2017-04-18 12:44:15 -07:00
compaction_job_stats_impl.cc Single Delete Mismatch and Fallthrough statistics 2016-08-16 08:21:43 -07:00
comparator.cc do not read next datablock if upperbound is reached 2017-05-10 14:06:33 -07:00
compression.h Remove use of deprecated LZ4 function 2016-11-21 12:24:14 -08:00
concurrent_arena.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
concurrent_arena.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
crc32c_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
crc32c.cc Enable Fast CRC32 for Win64 2017-03-29 17:39:19 -07:00
crc32c.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
delete_scheduler_test.cc disable test: DeleteSchedulerTest.DynamicRateLimiting1 2017-03-30 16:54:52 -07:00
delete_scheduler.cc Support SstFileManager::SetDeleteRateBytesPerSecond() 2017-03-16 12:09:15 -07:00
delete_scheduler.h Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
dynamic_bloom_test.cc Windows thread 2017-02-06 14:54:18 -08:00
dynamic_bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
dynamic_bloom.h Fix the wrong address for PREFETCH in DynamicBloom::Prefetch 2017-02-28 10:39:11 -08:00
event_logger_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
event_logger.cc Add macros to include file name and line number during Logging 2017-03-15 19:39:12 -07:00
event_logger.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
fault_injection_test_env.cc Flush job should release reference current version if sync log failed 2017-01-19 23:09:15 -08:00
fault_injection_test_env.h Move memtable related files into memtable directory 2017-04-06 14:09:13 -07:00
file_reader_writer_test.cc alignment is on in ReadaheadRandomAccessFile::Read() 2017-02-18 12:09:12 -08:00
file_reader_writer.cc Roundup read bytes in ReadaheadRandomAccessFile 2017-05-09 15:18:49 -07:00
file_reader_writer.h fix WritableFile buffer size in direct IO 2017-04-28 13:45:30 -07:00
file_util.cc Always fsync the file after file copying 2016-12-28 19:09:16 -08:00
file_util.h Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
filelock_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
filename.cc Blob storage helper methods 2017-04-18 12:44:15 -07:00
filename.h Blob storage helper methods 2017-04-18 12:44:15 -07:00
filter_policy.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
hash_map.h Use more efficient hash map for deadlock detection 2016-11-19 11:39:15 -08:00
hash.cc Fix travis (compile for clang < 3.9) 2016-12-01 10:09:22 -08:00
hash.h Optimize sequential insert into memtable - Part 1: Interface 2016-11-13 19:09:18 -08:00
heap_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
heap.h Cache heap::downheap() root comparison (optimize heap cmp call) 2016-12-01 13:39:14 -08:00
kv_map.h Store internal keys in TombstoneMap 2016-11-09 15:09:18 -08:00
log_buffer.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_buffer.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_write_bench.cc Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
logging.h Move various string utility functions into string_util 2017-04-06 14:54:12 -07:00
memory_usage.h Report memory usage by memtable insert hints map. 2016-11-15 20:24:13 -08:00
murmurhash.cc Gcc 7 fallthrough 2016-12-14 19:24:25 -08:00
murmurhash.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
mutexlock.h Persistent Read Cache (6) Persistent cache tier implentation - File layout 2016-07-19 12:01:46 -07:00
random.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
random.h Fixes warnings and ensure correct int behavior on 32-bit platforms. 2016-03-16 22:57:57 +01:00
rate_limiter_test.cc Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
rate_limiter.cc Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
rate_limiter.h Statistic for how often rate limiter is drained 2017-03-02 17:54:15 -08:00
slice_transform_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
slice.cc Merge db/slice.cc into util/slice.cc 2016-06-10 16:37:36 -07:00
sst_file_manager_impl.cc Support SstFileManager::SetDeleteRateBytesPerSecond() 2017-03-16 12:09:15 -07:00
sst_file_manager_impl.h Support SstFileManager::SetDeleteRateBytesPerSecond() 2017-03-16 12:09:15 -07:00
status_message.cc Limit maximum memory used in the WriteBatch representation 2017-04-10 15:42:26 -07:00
status.cc Fix rocksdb::Status::getState 2017-01-03 18:39:14 -08:00
stderr_logger.h Stderr info logger 2016-04-01 11:06:06 -07:00
stop_watch.h Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
string_util.cc Move various string utility functions into string_util 2017-04-06 14:54:12 -07:00
string_util.h Move various string utility functions into string_util 2017-04-06 14:54:12 -07:00
sync_point.cc gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
sync_point.h gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
testharness.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testharness.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testutil.cc change use_direct_writes to use_direct_io_for_flush_and_compaction 2017-04-14 16:19:53 -07:00
testutil.h Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
thread_list_test.cc Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
thread_local_test.cc Windows thread 2017-02-06 14:54:18 -08:00
thread_local.cc Fix build with MinGW 2017-03-30 16:54:52 -07:00
thread_local.h Move ThreadLocal implementation into .cc 2017-02-02 14:09:12 -08:00
thread_operation.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
threadpool_imp.cc Move some files under util/ to separate dirs 2017-04-05 19:09:16 -07:00
threadpool_imp.h Windows thread 2017-02-06 14:54:18 -08:00
transaction_test_util.cc Gcc-7 buffer size insufficient 2016-12-14 19:24:26 -08:00
transaction_test_util.h Fix AppVeyor build error 2016-03-15 10:57:33 -07:00
xxhash.cc Enable MS Warning C4804 : unsafe use of type 'bool' in operation 2015-11-18 16:23:19 -08:00
xxhash.h Prevent xxhash symbols from polluting global namespace 2015-03-12 12:07:10 -07:00