806e264350
Summary: Rocks accumulates recent writes and deletes in the in-memory memtable. When the memtable is full, it writes the contents on the memtable to a file in L0. This patch removes redundant records at the time of the flush. If there are multiple versions of the same key in the memtable, then only the most recent one is dumped into the output file. The purging of redundant records occur only if the most recent snapshot is earlier than the earliest record in the memtable. Should we switch on this feature by default or should we keep this feature turned off in the default settings? Test Plan: Added test case to db_test.cc Reviewers: sheki, vamsi, emayanke, heyongqiang Reviewed By: sheki CC: leveldb Differential Revision: https://reviews.facebook.net/D8991
40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
|
|
#ifndef STORAGE_LEVELDB_DB_BUILDER_H_
|
|
#define STORAGE_LEVELDB_DB_BUILDER_H_
|
|
|
|
#include "leveldb/comparator.h"
|
|
#include "leveldb/status.h"
|
|
#include "leveldb/types.h"
|
|
|
|
namespace leveldb {
|
|
|
|
struct Options;
|
|
struct FileMetaData;
|
|
|
|
class Env;
|
|
class Iterator;
|
|
class TableCache;
|
|
class VersionEdit;
|
|
|
|
// Build a Table file from the contents of *iter. The generated file
|
|
// will be named according to meta->number. On success, the rest of
|
|
// *meta will be filled with metadata about the generated table.
|
|
// If no data is present in *iter, meta->file_size will be set to
|
|
// zero, and no Table file will be produced.
|
|
extern Status BuildTable(const std::string& dbname,
|
|
Env* env,
|
|
const Options& options,
|
|
TableCache* table_cache,
|
|
Iterator* iter,
|
|
FileMetaData* meta,
|
|
const Comparator* user_comparator,
|
|
const SequenceNumber newest_snapshot,
|
|
const SequenceNumber earliest_seqno_in_memtable);
|
|
|
|
} // namespace leveldb
|
|
|
|
#endif // STORAGE_LEVELDB_DB_BUILDER_H_
|