disable populating block cache for in-place updates
Summary: There's no point populating the block cache during this read. The key we read is guaranteed to be overwritten with a new `kValueType` key immediately afterwards, so can't be accessed again. A user was seeing high turnover of data blocks, at least partially due to this. Closes https://github.com/facebook/rocksdb/pull/2959 Differential Revision: D5961672 Pulled By: ajkr fbshipit-source-id: e7cb27c156c5db3b32af355c780efb99dbdf087c
This commit is contained in:
parent
d27258d3a6
commit
880411f54c
@ -848,10 +848,8 @@ class MemTableInserter : public WriteBatch::Handler {
|
|||||||
// cause memory allocations though unused.
|
// cause memory allocations though unused.
|
||||||
// Make creation optional but do not incur
|
// Make creation optional but do not incur
|
||||||
// unique_ptr additional allocation
|
// unique_ptr additional allocation
|
||||||
using
|
using MemPostInfoMap = std::map<MemTable*, MemTablePostProcessInfo>;
|
||||||
MemPostInfoMap = std::map<MemTable*, MemTablePostProcessInfo>;
|
using PostMapType = std::aligned_storage<sizeof(MemPostInfoMap)>::type;
|
||||||
using
|
|
||||||
PostMapType = std::aligned_storage<sizeof(MemPostInfoMap)>::type;
|
|
||||||
PostMapType mem_post_info_map_;
|
PostMapType mem_post_info_map_;
|
||||||
// current recovered transaction we are rebuilding (recovery)
|
// current recovered transaction we are rebuilding (recovery)
|
||||||
WriteBatch* rebuilding_trx_;
|
WriteBatch* rebuilding_trx_;
|
||||||
@ -1002,6 +1000,9 @@ class MemTableInserter : public WriteBatch::Handler {
|
|||||||
SnapshotImpl read_from_snapshot;
|
SnapshotImpl read_from_snapshot;
|
||||||
read_from_snapshot.number_ = sequence_;
|
read_from_snapshot.number_ = sequence_;
|
||||||
ReadOptions ropts;
|
ReadOptions ropts;
|
||||||
|
// it's going to be overwritten for sure, so no point caching data block
|
||||||
|
// containing the old version
|
||||||
|
ropts.fill_cache = false;
|
||||||
ropts.snapshot = &read_from_snapshot;
|
ropts.snapshot = &read_from_snapshot;
|
||||||
|
|
||||||
std::string prev_value;
|
std::string prev_value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user