Introduce a new option disableDataSync for opening the database. If this is set to true, then the data written to newly created data files are not sycned to disk, instead depend on the OS to flush dirty data to stable storage. This option is good for bulk

Test Plan:
manual tests

Task ID: #

Blame Rev:

Differential Revision: https://reviews.facebook.net/D4515
main
Dhruba Borthakur 12 years ago
parent c44be54dd2
commit c3096afd61
  1. 2
      db/db_impl.cc
  2. 8
      include/leveldb/options.h
  3. 3
      util/options.cc

@ -810,7 +810,7 @@ Status DBImpl::FinishCompactionOutputFile(CompactionState* compact,
compact->builder = NULL;
// Finish and check for file errors
if (s.ok()) {
if (s.ok() && !options_.disableDataSync) {
s = compact->outfile->Sync();
}
if (s.ok()) {

@ -190,6 +190,14 @@ struct Options {
// If non-null, then we should collect metrics about database operations
Statistics* statistics;
// If true, then the contents of data files are not synced
// to stable storage. Their contents remain in the OS buffers till the
// OS decides to flush them. This option is good for bulk-loading
// of data. Once the bulk-loading is complete, please issue a
// sync to the OS to flush all dirty buffesrs to stable storage.
// Default: false
bool disableDataSync;
// Create an Options object with default values for all fields.
Options();
};

@ -34,7 +34,8 @@ Options::Options()
expanded_compaction_factor(25),
max_grandparent_overlap_factor(10),
filter_policy(NULL),
statistics(NULL) {
statistics(NULL),
disableDataSync(false) {
}
} // namespace leveldb

Loading…
Cancel
Save