RocksDB v5.4.0 Release Notes

Release Date: 2017-11-04 // over 6 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_sec option 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.