Compare commits

...

1 Commits

Author SHA1 Message Date
ZhiYong Wang
8ad2f927b6 Add skip_memtable_flush in IngestExternalFileOptions
Summary:
Set to true if you are sure although the key ranges may overlap, the memtable and the file being ingested
do not have the same keys, or not care about that.
The memtable flushing may block for hundreds of milliseconds.

Test Plan: make check
2020-06-14 14:49:06 +08:00
2 changed files with 9 additions and 0 deletions

View File

@ -4253,6 +4253,10 @@ Status DBImpl::IngestExternalFiles(
"cannot ingest an external file into a dropped CF"); "cannot ingest an external file into a dropped CF");
break; break;
} }
if (args[i].options.skip_memtable_flush) {
need_flush[i] = false;
continue;
}
bool tmp = false; bool tmp = false;
status = ingestion_jobs[i].NeedsFlush(&tmp, cfd->GetSuperVersion()); status = ingestion_jobs[i].NeedsFlush(&tmp, cfd->GetSuperVersion());
need_flush[i] = tmp; need_flush[i] = tmp;

View File

@ -1571,6 +1571,11 @@ struct IngestExternalFileOptions {
// Using a large readahead size (> 2MB) can typically improve the performance // Using a large readahead size (> 2MB) can typically improve the performance
// of forward iteration on spinning disks. // of forward iteration on spinning disks.
size_t verify_checksums_readahead_size = 0; size_t verify_checksums_readahead_size = 0;
// Set to true if you are sure although the key ranges may overlap,
// the memtable and the file being ingested
// do not have the same keys, or not care about that.
// The memtable flushing may block for hundreds of milliseconds.
bool skip_memtable_flush = false;
}; };
enum TraceFilterType : uint64_t { enum TraceFilterType : uint64_t {