rocksdb/table
Maysam Yabandeh 11526252cc Pinnableslice (2nd attempt)
Summary:
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:

    value 100 byte: 1.8% regular, 1.2% merge values
    value 1k byte: 11.5% regular, 7.5% merge values
    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 d
Closes https://github.com/facebook/rocksdb/pull/1756

Differential Revision: D4391738

Pulled By: maysamyabandeh

fbshipit-source-id: 6f3edd3
2017-03-13 11:54:10 -07: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_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_filter_block.cc Builders for partition filter 2017-03-07 13:54:12 -08:00
block_based_filter_block.h Builders for partition filter 2017-03-07 13:54:12 -08:00
block_based_table_builder.cc Builders for partition filter 2017-03-07 13:54:12 -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 Remove skip_table_builder_flush and default it to true 2017-03-02 16:54:10 -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 (2nd attempt) 2017-03-13 11:54:10 -07:00
block_based_table_reader.h Builders for partition filter 2017-03-07 13:54:12 -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
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
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 (2nd attempt) 2017-03-13 11:54:10 -07:00
cuckoo_table_builder_test.cc New Statistics to track Compression/Decompression (#1197) 2016-07-19 09:44:03 -07: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_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_test.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -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
filter_block.h Builders for partition filter 2017-03-07 13:54:12 -08: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 Refactoring 2017-03-03 18:24:12 -08: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
full_filter_block.cc Builders for partition filter 2017-03-07 13:54:12 -08:00
full_filter_block.h Builders for partition filter 2017-03-07 13:54:12 -08:00
get_context.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07:00
get_context.h Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07:00
index_builder.cc Builders for partition filter 2017-03-07 13:54:12 -08:00
index_builder.h Builders for partition filter 2017-03-07 13:54:12 -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_wrapper.h Add SeekForPrev() to Iterator 2016-09-27 18:20:57 -07:00
iterator.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07:00
merger_test.cc Rename merger.h -> merging_iterator.h 2017-02-02 16:54:19 -08:00
merging_iterator.cc Rename merger.h -> merging_iterator.h 2017-02-02 16:54:19 -08:00
merging_iterator.h Rename merger.h -> merging_iterator.h 2017-02-02 16:54:19 -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
partitioned_filter_block.cc Builders for partition filter 2017-03-07 13:54:12 -08:00
partitioned_filter_block.h Builders for partition filter 2017-03-07 13:54:12 -08:00
persistent_cache_helper.cc Refactoring 2017-03-03 18:24:12 -08:00
persistent_cache_helper.h Refactoring 2017-03-03 18:24:12 -08:00
persistent_cache_options.h Refactoring 2017-03-03 18:24:12 -08: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_collectors.h Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
sst_file_writer.cc Remove bulk loading and auto_roll_logger in rocksdb_lite 2017-02-28 11:09:11 -08:00
table_builder.h Add TableBuilderOptions::level and relevant changes (#1335) 2016-09-17 22:30:43 -07:00
table_properties_internal.h TableBuilder / TableReader support for range deletion 2016-08-19 15:10:31 -07:00
table_properties.cc Insert range deletion meta-block into block cache 2016-11-05 09:24:26 -07:00
table_reader_bench.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07:00
table_reader.h Range deletion microoptimizations 2016-11-21 12:24:13 -08:00
table_test.cc Pinnableslice (2nd attempt) 2017-03-13 11:54:10 -07: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