Add writes_before_delete_range flag to db_bench (#4538)
Summary: The new flag allows tombstones to be generated after enough keys have been written to the database, which makes it easier to ensure that tombstones cover a lot of keys. Pull Request resolved: https://github.com/facebook/rocksdb/pull/4538 Differential Revision: D10455685 Pulled By: abhimadan fbshipit-source-id: f25d5421745a353c830dea12b79784e852056551
This commit is contained in:
parent
0afa5b53d7
commit
35cd754a6d
@ -640,9 +640,11 @@ DEFINE_bool(optimize_filters_for_hits, false,
|
|||||||
DEFINE_uint64(delete_obsolete_files_period_micros, 0,
|
DEFINE_uint64(delete_obsolete_files_period_micros, 0,
|
||||||
"Ignored. Left here for backward compatibility");
|
"Ignored. Left here for backward compatibility");
|
||||||
|
|
||||||
|
DEFINE_int64(writes_before_delete_range, 0,
|
||||||
|
"Number of writes before DeleteRange is called regularly.");
|
||||||
|
|
||||||
DEFINE_int64(writes_per_range_tombstone, 0,
|
DEFINE_int64(writes_per_range_tombstone, 0,
|
||||||
"Number of writes between range "
|
"Number of writes between range tombstones");
|
||||||
"tombstones");
|
|
||||||
|
|
||||||
DEFINE_int64(range_tombstone_width, 100, "Number of keys in tombstone's range");
|
DEFINE_int64(range_tombstone_width, 100, "Number of keys in tombstone's range");
|
||||||
|
|
||||||
@ -1968,6 +1970,7 @@ class Benchmark {
|
|||||||
int prefix_size_;
|
int prefix_size_;
|
||||||
int64_t keys_per_prefix_;
|
int64_t keys_per_prefix_;
|
||||||
int64_t entries_per_batch_;
|
int64_t entries_per_batch_;
|
||||||
|
int64_t writes_before_delete_range_;
|
||||||
int64_t writes_per_range_tombstone_;
|
int64_t writes_per_range_tombstone_;
|
||||||
int64_t range_tombstone_width_;
|
int64_t range_tombstone_width_;
|
||||||
int64_t max_num_range_tombstones_;
|
int64_t max_num_range_tombstones_;
|
||||||
@ -2495,6 +2498,7 @@ void VerifyDBFromDB(std::string& truth_db_name) {
|
|||||||
value_size_ = FLAGS_value_size;
|
value_size_ = FLAGS_value_size;
|
||||||
key_size_ = FLAGS_key_size;
|
key_size_ = FLAGS_key_size;
|
||||||
entries_per_batch_ = FLAGS_batch_size;
|
entries_per_batch_ = FLAGS_batch_size;
|
||||||
|
writes_before_delete_range_ = FLAGS_writes_before_delete_range;
|
||||||
writes_per_range_tombstone_ = FLAGS_writes_per_range_tombstone;
|
writes_per_range_tombstone_ = FLAGS_writes_per_range_tombstone;
|
||||||
range_tombstone_width_ = FLAGS_range_tombstone_width;
|
range_tombstone_width_ = FLAGS_range_tombstone_width;
|
||||||
max_num_range_tombstones_ = FLAGS_max_num_range_tombstones;
|
max_num_range_tombstones_ = FLAGS_max_num_range_tombstones;
|
||||||
@ -3876,9 +3880,13 @@ void VerifyDBFromDB(std::string& truth_db_name) {
|
|||||||
bytes += value_size_ + key_size_;
|
bytes += value_size_ + key_size_;
|
||||||
++num_written;
|
++num_written;
|
||||||
if (writes_per_range_tombstone_ > 0 &&
|
if (writes_per_range_tombstone_ > 0 &&
|
||||||
num_written / writes_per_range_tombstone_ <=
|
num_written > writes_before_delete_range_ &&
|
||||||
|
(num_written - writes_before_delete_range_) /
|
||||||
|
writes_per_range_tombstone_ <=
|
||||||
max_num_range_tombstones_ &&
|
max_num_range_tombstones_ &&
|
||||||
num_written % writes_per_range_tombstone_ == 0) {
|
(num_written - writes_before_delete_range_) %
|
||||||
|
writes_per_range_tombstone_ ==
|
||||||
|
0) {
|
||||||
int64_t begin_num = key_gens[id]->Next();
|
int64_t begin_num = key_gens[id]->Next();
|
||||||
if (FLAGS_expand_range_tombstones) {
|
if (FLAGS_expand_range_tombstones) {
|
||||||
for (int64_t offset = 0; offset < range_tombstone_width_;
|
for (int64_t offset = 0; offset < range_tombstone_width_;
|
||||||
|
Loading…
Reference in New Issue
Block a user