RocksDB v5.4.0 Release NotesRelease Date: 2017-11-04 // over 4 years ago
Public API Change
- random_access_max_buffer_size no longer has any effect
- ✂ Removed Env::EnableReadAhead(), Env::ShouldForwardRawRequest()
- Support dynamically change
stats_dump_period_secoption via SetDBOptions().
- Added ReadOptions::max_skippable_internal_keys to set a threshold to fail a request as incomplete when too many keys are being skipped when using iterators.
- DB::Get in place of std::string accepts PinnableSlice, which avoids the extra memcpy of value to std::string in most of cases.
- PinnableSlice releases the pinned resources that contain the value when it is destructed or when ::Reset() is called on it.
- The old API that accepts std::string, although discouraged, is still supported.
- Replace Options::use_direct_writes with Options::use_direct_io_for_flush_and_compaction. Read Direct IO wiki for details.
- ➕ Added CompactionEventListener and EventListener::OnFlushBegin interfaces.
🆕 New Features
- 🌲 Memtable flush can be avoided during checkpoint creation if total log file size is smaller than a threshold specified by the user.
- Introduce level-based L0->L0 compactions to reduce file count, so write delays are incurred less often.
- 📇 (Experimental) Partitioning filters which creates an index on the partitions. The feature can be enabled by setting partition_filters when using kFullFilter. Currently the feature also requires two-level indexing to be enabled. Number of partitions is the same as the number of partitions for indexes, which is controlled by metadata_block_size.