Skip to content

Releases: facebook/rocksdb

RocksDB 5.2.1

22 Mar 21:15
Compare
Choose a tag to compare

Public API Change

  • NewLRUCache() will determine number of shard bits automatically based on capacity, if the user doesn't pass one. This also impacts the default block cache when the user doesn't explict provide one.
  • Change the default of delayed slowdown value to 16MB/s and further increase the L0 stop condition to 36 files.
  • (Experimental) Two-level indexing that partition the index and creates a 2nd level index on the partitions. The feature can be enabled by setting kTwoLevelIndexSearch as IndexType and configuring index_per_partition.

New Features

  • Added new overloaded function GetApproximateSizes that allows to specify if memtable stats should be computed only without computing SST files' stats approximations.
  • Added new function GetApproximateMemTableStats that approximates both number of records and size of memtables.

Bug Fixes

  • RangeSync() should work if ROCKSDB_FALLOCATE_PRESENT is not set
  • Fix wrong results in a data race case in Get()
  • Some fixes related to 2PC.
  • Fix several bugs in Direct I/O supports.
  • Fix a regression bug which can cause Seek() to miss some keys if the return key has been updated many times after the snapshot which is used by the iterator.

RocksDB 5.1.4

25 Feb 00:33
Compare
Choose a tag to compare

Bug fixes

  • Fixed the bug of IO Error when compaction_readahead_size > 0 in direct I/O
  • Fixed the bug of file size mismatch between MANIFEST and real size in direct I/O
  • Fix OSX build break after the fallocate change

RocksDB 5.1.2

07 Feb 22:03
Compare
Choose a tag to compare

Public API Change

  • Support dynamically change delete_obsolete_files_period_micros option via SetDBOptions().
  • Added EventListener::OnExternalFileIngested which will be called when IngestExternalFile() add a file successfully.
  • BackupEngine::Open and BackupEngineReadOnly::Open now always return error statuses matching those of the backup Env.

Bug Fixes

  • Fix the bug that if 2PC is enabled, checkpoints may loss some recent transactions.
  • When file copying is needed when creating checkpoints or bulk loading files, fsync the file after the file copying.

RocksDB 5.0.2

18 Jan 22:23
Compare
Choose a tag to compare

Bug fixes

  • Fixed DeleteRange corruption issue in certain compaction cases

RocksDB 5.0.1

06 Jan 19:04
Compare
Choose a tag to compare

Public API Change

  • Options::max_bytes_for_level_multiplier is now a double along with all getters and setters.
  • Support dynamically change delayed_write_rate and max_total_wal_size options via SetDBOptions().
  • Introduce DB::DeleteRange for optimized deletion of large ranges of contiguous keys.
  • Support dynamically change delayed_write_rate option via SetDBOptions().
  • Options::allow_concurrent_memtable_write and Options::enable_write_thread_adaptive_yield are now true by default.
  • Remove Tickers::SEQUENCE_NUMBER to avoid confusion if statistics object is shared among RocksDB instance. Alternatively DB::GetLatestSequenceNumber() can be used to get the same value.
  • Options.level0_stop_writes_trigger default value changes from 24 to 32.
  • New compaction filter API: CompactionFilter::FilterV2(). Allows to drop ranges of keys.
  • Removed flashcache support.
  • DB::AddFile() is deprecated and is replaced with DB::IngestExternalFile(). DB::IngestExternalFile() remove all the restrictions that existed for DB::AddFile.

New Features

  • Add avoid_flush_during_shutdown option, which speeds up DB shutdown by not flushing unpersisted data (i.e. with disableWAL = true). Unpersisted data will be lost. The options is dynamically changeable via SetDBOptions().
  • Add memtable_insert_with_hint_prefix_extractor option. The option is mean to reduce CPU usage for inserting keys into memtable, if keys can be group by prefix and insert for each prefix are sequential or almost sequential. See include/rocksdb/options.h for more details.
  • Add LuaCompactionFilter in utilities. This allows developers to write compaction filters in Lua. To use this feature, LUA_PATH needs to be set to the root directory of Lua.
  • No longer populate "LATEST_BACKUP" file in backup directory, which formerly contained the number of the latest backup. The latest backup can be determined by finding the highest numbered file in the "meta/" subdirectory.

RocksDB 4.13.5

12 Dec 21:21
Compare
Choose a tag to compare

We have skipped releasing 4.12.x and went directly to 4.13.5

4.13.5

Public API Change

  • Fix a regression in compaction performance.
  • Disallow calling IngestExternalFile() on a dropped column family.
  • Add EventListener::OnExternalFileIngested() event that will be called for files that are successfully ingested.

4.13.4

Public API Change

  • Removed flashcache support.

4.13.0 (10/18/2016)

Public API Change

  • DB::GetOptions() reflect dynamic changed options (i.e. through DB::SetOptions()) and return copy of options instead of reference.
  • Added Statistics::getAndResetTickerCount().

New Features

  • Add DB::SetDBOptions() to dynamic change base_background_compactions and max_background_compactions.
  • Added Iterator::SeekForPrev(). This new API will seek to the last key that is less than or equal to the target key.

4.12.0 (9/12/2016)

Public API Change

  • CancelAllBackgroundWork() flushes all memtables for databases containing writes that have bypassed the WAL (writes issued with WriteOptions::disableWAL=true) before shutting down background threads.
  • Merge options source_compaction_factor, max_grandparent_overlap_bytes and expanded_compaction_factor into max_compaction_bytes.
  • Remove ImmutableCFOptions.
  • Add a compression type ZSTD, which can work with ZSTD 0.8.0 or up. Still keep ZSTDNotFinal for compatibility reasons.

New Features

  • Introduce NewClockCache, which is based on CLOCK algorithm with better concurrent performance in some cases. It can be used to replace the default LRU-based block cache and table cache. To use it, RocksDB need to be linked with TBB lib.
  • Change ticker/histogram statistics implementations to accumulate data in thread-local storage, which improves CPU performance by reducing cache coherency costs. Callers of CreateDBStatistics do not need to change anything to use this feature.
  • Block cache mid-point insertion, where index and filter block are inserted into LRU block cache with higher priority. The feature can be enabled by setting BlockBasedTableOptions::cache_index_and_filter_blocks_with_high_priority to true and high_pri_pool_ratio > 0 when creating NewLRUCache.

RocksDB 4.11.2

28 Sep 17:10
Compare
Choose a tag to compare

We abandoned release candidates 4.10.x and directly go to 4.11.2 from 4.9, to make sure the latest release is stable. In 4.11.2, we fixed several data corruption related bugs in 4.9.0.

4.11.2 (9/15/2016)

Bug fixes

  • Segfault when failing to open an SST file for read-ahead iterators.
  • WAL without data for all CFs is not deleted after recovery.

4.11.1 (8/30/2016)

Bug Fixes

  • Mitigate the regression bug of deadlock condition during recovery when options.max_successive_merges hits.
  • Fix data race condition related to hash index in block based table when putting indexes in the block cache.

4.11.0 (8/1/2016)

Public API Change

  • options.memtable_prefix_bloom_huge_page_tlb_size => memtable_huge_page_size. When it is set, RocksDB will try to allocate memory from huge page for memtable too, rather than just memtable bloom filter.

New Features

  • A tool to migrate DB after options change. See include/rocksdb/utilities/option_change_migration.h.
  • Add ReadOptions.background_purge_on_iterator_cleanup. If true, we avoid file deletion when destorying iterators.

4.10.0 (7/5/2016)

Public API Change

  • options.memtable_prefix_bloom_bits changes to options.memtable_prefix_bloom_bits_ratio and deprecate options.memtable_prefix_bloom_probes
  • enum type CompressionType and PerfLevel changes from char to unsigned char. Value of all PerfLevel shift by one.
  • Deprecate options.filter_deletes.

New Features

  • Add avoid_flush_during_recovery option.
  • Add a read option background_purge_on_iterator_cleanup to avoid deleting files in foreground when destroying iterators. Instead, a job is scheduled in high priority queue and would be executed in a separate background thread.
  • RepairDB support for column families. RepairDB now associates data with non-default column families using information embedded in the SST/WAL files (4.7 or later). For data written by 4.6 or earlier, RepairDB associates it with the default column family.
  • Add options.write_buffer_manager which allows users to control total memtable sizes across multiple DB instances.

RocksDB 4.9

17 Aug 17:58
Compare
Choose a tag to compare

Public API changes

  • Add bottommost_compression option, This option can be used to set a specific compression algorithm for the bottommost level (Last level containing files in the DB).
  • Introduce CompactionJobInfo::compression, This field state the compression algorithm used to generate the output files of the compaction.
  • Deprecate BlockBaseTableOptions.hash_index_allow_collision=false
  • Deprecate options builder (GetOptions()).

New Features

  • Introduce NewSimCache() in rocksdb/utilities/sim_cache.h. This function creates a block cache that is able to give simulation results (mainly hit rate) of simulating block behavior with a configurable cache size.

v4.8

26 Jul 21:36
Compare
Choose a tag to compare

Public API Change

  • Allow preset compression dictionary for improved compression of block-based tables. This is supported for zlib, zstd, and lz4. The compression dictionary's size is configurable via CompressionOptions::max_dict_bytes.
  • Delete deprecated classes for creating backups (BackupableDB) and restoring from backups (RestoreBackupableDB). Now, BackupEngine should be used for creating backups, and BackupEngineReadOnly should be used for restorations. For more details, see https://github.com/facebook/rocksdb/wiki/How-to-backup-RocksDB%3F
  • Expose estimate of per-level compression ratio via DB property: "rocksdb.compression-ratio-at-levelN".
    Added EventListener::OnTableFileCreationStarted. EventListener::OnTableFileCreated will be called on failure case. User can check creation status via TableFileCreationInfo::status.

New Features

  • Add ReadOptions::readahead_size. If non-zero, NewIterator will create a new table reader which performs reads of the given size.

RocksDB 4.6.1

31 May 19:16
Compare
Choose a tag to compare

Public API Changes

  • Change default of BlockBasedTableOptions.format_version to 2. It means default DB created by 4.6 or up cannot be opened by RocksDB version 3.9 or earlier.
  • Added strict_capacity_limit option to NewLRUCache. If the flag is set to true, insert to cache will fail if no enough capacity can be free. Signature of Cache::Insert() is updated accordingly.
  • Tickers [NUMBER_DB_NEXT, NUMBER_DB_PREV, NUMBER_DB_NEXT_FOUND, NUMBER_DB_PREV_FOUND, ITER_BYTES_READ] are not updated immediately. The are updated when the Iterator is deleted.
  • Add monotonically increasing counter (DB property "rocksdb.current-super-version-number") that increments upon any change to the LSM tree.

New Features

  • Add CompactionPri::kMinOverlappingRatio, a compaction picking mode friendly to write amplification.
  • Deprecate Iterator::IsKeyPinned() and replace it with Iterator::GetProperty() with prop_name="rocksdb.iterator.is.key.pinned"