rocksdb/table
Maysam Yabandeh 54d94e9c2c PinnableSlice
Summary:
Currently the point lookup values are copied to a string provided by the user.
This incures an extra memcpy cost. This patch allows doing point lookup
via a PinnableSlice which pins the source memory location (instead of
copying their content) and releases them after the content is consumed
by the user. The old API of Get(string) is translated to the new API
underneath.

 Here is the summary for improvements:
 1. value 100 byte: 1.8%  regular, 1.2% merge values
 2. value 1k   byte: 11.5% regular, 7.5% merge values
 3. value 10k byte: 26% regular,    29.9% merge values

 The improvement for merge could be more if we extend this approach to
 pin the merge output and delay the full merge operation until the user
 actually needs it. We have put that for future work.

PS:
Sometimes we observe a small decrease in performance when switching from
t5452014 to this patch but with the old Get(string) API. The difference
is a little and could be noise. More importantly it is safely
cancelled
Closes https://github.com/facebook/rocksdb/pull/1732

Differential Revision: D4374613

Pulled By: maysamyabandeh

fbshipit-source-id: a077f1a
2017-01-08 13:54:13 -08:00
..
adaptive_table_factory.cc solve the problem of table_factory_to_write_=nullptr (#1342) 2016-09-20 10:11:51 -07:00
adaptive_table_factory.h Only cache level 0 indexes and filter when opening table reader 2016-07-20 11:23:31 -07:00
block.cc Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
block.h Fix wrong comment (Maximum supported block size) 2016-11-04 11:24:14 -07:00
block_based_filter_block.cc BlockBasedTable::FullFilterKeyMayMatch() Should skip prefix bloom if full key bloom exists 2016-06-10 16:27:56 -07:00
block_based_filter_block.h BlockBasedTable::FullFilterKeyMayMatch() Should skip prefix bloom if full key bloom exists 2016-06-10 16:27:56 -07:00
block_based_filter_block_test.cc Add statistics field to show total size of index and filter blocks in block cache 2016-06-03 10:47:47 -07:00
block_based_table_builder.cc table/block_based_table_builder.cc: intentional fallthrough - comment to match gcc pattern 2016-12-13 13:54:15 -08:00
block_based_table_builder.h Compaction Support for Range Deletion 2016-10-18 12:04:56 -07:00
block_based_table_factory.cc Print cache options to info log 2016-12-22 14:54:19 -08:00
block_based_table_factory.h Only cache level 0 indexes and filter when opening table reader 2016-07-20 11:23:31 -07:00
block_based_table_reader.cc PinnableSlice 2017-01-08 13:54:13 -08:00
block_based_table_reader.h sst_dump support for range deletion 2016-11-12 09:39:23 -08:00
block_builder.cc Miscellaneous performance improvements 2016-07-12 14:15:32 -07:00
block_builder.h TableBuilder / TableReader support for range deletion 2016-08-19 15:10:31 -07:00
block_prefix_index.cc Fix clang analyzer errors 2016-07-08 17:50:51 -07:00
block_prefix_index.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
block_test.cc Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
bloom_block.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
bloom_block.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
cleanable_test.cc PinnableSlice 2017-01-08 13:54:13 -08:00
cuckoo_table_builder.cc Embed column family name in SST file 2016-04-06 23:10:32 -07:00
cuckoo_table_builder.h Embed column family name in SST file 2016-04-06 23:10:32 -07:00
cuckoo_table_builder_test.cc New Statistics to track Compression/Decompression (#1197) 2016-07-19 09:44:03 -07:00
cuckoo_table_factory.cc Only cache level 0 indexes and filter when opening table reader 2016-07-20 11:23:31 -07:00
cuckoo_table_factory.h Only cache level 0 indexes and filter when opening table reader 2016-07-20 11:23:31 -07:00
cuckoo_table_reader.cc Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00
cuckoo_table_reader.h Remove ImmutableCFOptions from public API 2016-09-02 14:16:31 -07:00
cuckoo_table_reader_test.cc PinnableSlice 2017-01-08 13:54:13 -08:00
filter_block.h BlockBasedTable::FullFilterKeyMayMatch() Should skip prefix bloom if full key bloom exists 2016-06-10 16:27:56 -07:00
flush_block_policy.cc Miscellaneous performance improvements 2016-07-12 14:15:32 -07:00
format.cc Insert range deletion meta-block into block cache 2016-11-05 09:24:26 -07:00
format.h Insert range deletion meta-block into block cache 2016-11-05 09:24:26 -07:00
full_filter_block.cc BlockBasedTable::FullFilterKeyMayMatch() Should skip prefix bloom if full key bloom exists 2016-06-10 16:27:56 -07:00
full_filter_block.h BlockBasedTable::FullFilterKeyMayMatch() Should skip prefix bloom if full key bloom exists 2016-06-10 16:27:56 -07:00
full_filter_block_test.cc Add statistics field to show total size of index and filter blocks in block cache 2016-06-03 10:47:47 -07:00
get_context.cc PinnableSlice 2017-01-08 13:54:13 -08:00
get_context.h PinnableSlice 2017-01-08 13:54:13 -08:00
internal_iterator.h fix assertion failure in Prev() 2016-10-13 17:36:48 -07:00
iter_heap.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
iterator.cc PinnableSlice 2017-01-08 13:54:13 -08:00
iterator_wrapper.h Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00
merger.cc revert Prev() in MergingIterator to use previous code in non-prefix-seek mode 2016-10-24 13:13:01 -07:00
merger.h revert Prev() in MergingIterator to use previous code in non-prefix-seek mode 2016-10-24 13:13:01 -07:00
merger_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
meta_blocks.cc Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
meta_blocks.h New Statistics to track Compression/Decompression (#1197) 2016-07-19 09:44:03 -07:00
mock_table.cc DeleteRange flush support 2016-10-31 20:54:18 -07:00
mock_table.h Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00
persistent_cache_helper.cc Added PersistentCache abstraction 2016-05-15 22:17:18 -07:00
persistent_cache_helper.h Added PersistentCache abstraction 2016-05-15 22:17:18 -07:00
plain_table_builder.cc Allow plain table to store index on file with bloom filter disabled 2016-11-17 11:09:13 -08:00
plain_table_builder.h Embed column family name in SST file 2016-04-06 23:10:32 -07:00
plain_table_factory.cc store prefix_extractor_name in table 2016-08-26 11:46:32 -07:00
plain_table_factory.h Only cache level 0 indexes and filter when opening table reader 2016-07-20 11:23:31 -07:00
plain_table_index.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
plain_table_index.h Remove ImmutableCFOptions from public API 2016-09-02 14:16:31 -07:00
plain_table_key_coding.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
plain_table_key_coding.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
plain_table_reader.cc Allow plain table to store index on file with bloom filter disabled 2016-11-17 11:09:13 -08:00
plain_table_reader.h Skip bottom-level filter block caching when hit-optimized 2015-12-23 10:15:07 -08:00
scoped_arena_iterator.h Compaction Support for Range Deletion 2016-10-18 12:04:56 -07:00
sst_file_writer.cc Allow SstFileWriter to Fadvise the file away from page cache 2016-12-29 15:09:19 -08:00
sst_file_writer_collectors.h Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
table_builder.h Add TableBuilderOptions::level and relevant changes (#1335) 2016-09-17 22:30:43 -07:00
table_properties.cc Insert range deletion meta-block into block cache 2016-11-05 09:24:26 -07:00
table_properties_internal.h TableBuilder / TableReader support for range deletion 2016-08-19 15:10:31 -07:00
table_reader.h Range deletion microoptimizations 2016-11-21 12:24:13 -08:00
table_reader_bench.cc PinnableSlice 2017-01-08 13:54:13 -08:00
table_test.cc PinnableSlice 2017-01-08 13:54:13 -08:00
two_level_iterator.cc Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00
two_level_iterator.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00