rocksdb/db
Naman Gupta fe25070242 In-place updates for equal keys and similar sized values
Summary:
Currently for each put, a fresh memory is allocated, and a new entry is added to the memtable with a new sequence number irrespective of whether the key already exists in the memtable. This diff is an attempt to update the value inplace for existing keys. It currently handles a very simple case:
1. Key already exists in the current memtable. Does not inplace update values in immutable memtable or snapshot
2. Latest value type is a 'put' ie kTypeValue
3. New value size is less than existing value, to avoid reallocating memory

TODO: For a put of an existing key, deallocate memory take by values, for other value types till a kTypeValue is found, ie. remove kTypeMerge.
TODO: Update the transaction log, to allow consistent reload of the memtable.

Test Plan: Added a unit test verifying the inplace update. But some other unit tests broken due to invalid sequence number checks. WIll fix them next.

Reviewers: xinyaohu, sumeet, haobo, dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D12423

Automatic commit by arc
2013-10-31 11:27:12 -07:00
..
builder.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
builder.h Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
c_test.c Migrate names of properties from 'leveldb' prefix to 'rocksdb' prefix. 2013-10-06 00:14:26 -07:00
c.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
corruption_test.cc If a Put fails, fail all other puts 2013-10-28 12:36:02 -07:00
db_bench.cc Conversion of db_bench, db_stress and db_repl_stress to use gflags 2013-10-24 07:43:14 -07:00
db_filesnapshot.cc Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
db_impl_readonly.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_impl_readonly.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_impl.cc Support user-defined table stats collector 2013-10-28 15:45:14 -07:00
db_impl.h Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
db_iter.cc Fix Bug: iterator.Prev() or iterator.SeekToLast() might return the first element instead of the correct one 2013-10-17 18:33:18 -07:00
db_iter.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_statistics.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_stats_logger.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
db_test.cc In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
dbformat_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
dbformat.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
dbformat.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
deletefile_test.cc Fix a valgrind warning 2013-10-28 14:34:27 -07:00
filename_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
filename.cc Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
filename.h Unify DeleteFile and DeleteWalFiles 2013-10-25 08:32:14 -07:00
log_format.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_reader.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_reader.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
log_writer.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
memtable.cc In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
memtable.h In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
memtablelist.cc fix the error message in debug mode 2013-10-27 23:11:13 -07:00
memtablelist.h Fix the log number bug when updating MANIFEST file 2013-10-24 21:05:33 -07:00
merge_helper.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_helper.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_operator.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
merge_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
perf_context_test.cc [RocksDB] Add perf_context.wal_write_time to track time spent on writing the recovery log. 2013-10-23 13:38:39 -07:00
prefix_filter_iterator.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
repair.cc In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
skiplist_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
skiplist.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
snapshot.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_cache.h Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
table_stats_collector_test.cc Support user-defined table stats collector 2013-10-28 15:45:14 -07:00
table_stats_collector.cc Support user-defined table stats collector 2013-10-28 15:45:14 -07:00
table_stats_collector.h Support user-defined table stats collector 2013-10-28 15:45:14 -07:00
transaction_log_impl.cc Disallow transaction log iterator to skip sequences 2013-10-22 11:45:35 -07:00
transaction_log_impl.h Disallow transaction log iterator to skip sequences 2013-10-22 11:45:35 -07:00
version_edit_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_edit.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_edit.h Fix the log number bug when updating MANIFEST file 2013-10-24 21:05:33 -07:00
version_set_reduce_num_levels.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set_test.cc Add appropriate LICENSE and Copyright message. 2013-10-16 17:48:41 -07:00
version_set.cc Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
version_set.h Universal Compaction to Have a Size Percentage Threshold To Decide Whether to Compress 2013-10-17 13:33:39 -07:00
write_batch_internal.h In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
write_batch_test.cc In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00
write_batch.cc In-place updates for equal keys and similar sized values 2013-10-31 11:27:12 -07:00