Go to file
Peter Dillinger 5576ded762 Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363)
Summary:
In response to https://github.com/facebook/rocksdb/issues/9354, this PR adds a way for users to "opt out"
of extra checks that can impact peak write performance, which
currently only includes force_consistency_checks. I considered including
some other options but did not see a db_bench performance difference.

Also clarify in comment for force_consistency_checks that it can "slow
down saturated writing."

Pull Request resolved: https://github.com/facebook/rocksdb/pull/9363

Test Plan:
basic coverage in unit tests

Using my perf test in https://github.com/facebook/rocksdb/issues/9354 comment, I see

force_consistency_checks=true -> 725360 ops/s
force_consistency_checks=false -> 783072 ops/s

Reviewed By: mrambacher

Differential Revision: D33636559

Pulled By: pdillinger

fbshipit-source-id: 25bfd006f4844675e7669b342817dd4c6a641e84
2022-01-18 17:31:03 -08:00
.circleci Add support for Apple Silicon to RocksJava (#9254) 2022-01-12 17:20:58 -08:00
.github/workflows
buckifier
build_tools build_tools/build_detect_platform: fix C++ tests (#6479) 2022-01-14 14:09:20 -08:00
cache
cmake
coverage
db Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
db_stress_tool
docs
env Enable db_test running in Centos 32 bit OS and Alpine 32 bit OS (#9294) 2022-01-14 11:58:18 -08:00
examples Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
file
fuzz Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
hdfs
include/rocksdb Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
java Add support for Apple Silicon to RocksJava (#9254) 2022-01-12 17:20:58 -08:00
logging
memory
memtable Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
microbench
monitoring
options Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
plugin
port Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
table Enable db_test running in Centos 32 bit OS and Alpine 32 bit OS (#9294) 2022-01-14 11:58:18 -08:00
test_util
third-party Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
tools Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
trace_replay
util Remove using namespace (#9369) 2022-01-12 09:31:12 -08:00
utilities Range Locking: add support for escalation barriers (#9290) 2022-01-14 12:46:09 -08:00
.clang-format
.gitignore
.lgtm.yml
.travis.yml
.watchmanconfig
AUTHORS
CMakeLists.txt
CODE_OF_CONDUCT.md
CONTRIBUTING.md
COPYING
DEFAULT_OPTIONS_HISTORY.md Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
DUMP_FORMAT.md
HISTORY.md Add Options::DisableExtraChecks, clarify force_consistency_checks (#9363) 2022-01-18 17:31:03 -08:00
INSTALL.md
LANGUAGE-BINDINGS.md
LICENSE.Apache
LICENSE.leveldb
Makefile Add support for Apple Silicon to RocksJava (#9254) 2022-01-12 17:20:58 -08:00
PLUGINS.md
README.md README: De-list slack channel, list Google group (#9387) 2022-01-18 08:19:48 -08:00
ROCKSDB_LITE.md
TARGETS
USERS.md
Vagrantfile
WINDOWS_PORT.md
appveyor.yml
defs.bzl
issue_template.md
src.mk
thirdparty.inc

README.md

RocksDB: A Persistent Key-Value Store for Flash and RAM Storage

CircleCI Status TravisCI Status Appveyor Build status PPC64le Build Status

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

This code is a library that forms the core building block for a fast key-value server, especially suited for storing data on flash drives. It has a Log-Structured-Merge-Database (LSM) design with flexible tradeoffs between Write-Amplification-Factor (WAF), Read-Amplification-Factor (RAF) and Space-Amplification-Factor (SAF). It has multi-threaded compactions, making it especially suitable for storing multiple terabytes of data in a single database.

Start with example usage here: https://github.com/facebook/rocksdb/tree/main/examples

See the github wiki for more explanation.

The public interface is in include/. Callers should not include or rely on the details of any other header files in this package. Those internal APIs may be changed without warning.

Questions and discussions are welcome on the RocksDB Developers Public Facebook group and email list on Google Groups.

License

RocksDB is dual-licensed under both the GPLv2 (found in the COPYING file in the root directory) and Apache 2.0 License (found in the LICENSE.Apache file in the root directory). You may select, at your option, one of the above-listed licenses.