RocksDB 7.6.0 has been released. RocksDB is an embeddable key-value storage system from Facebook that supports persistence. It can also be used as a storage database in C/S mode, based on LevelDB. The updates are as follows:

new features

  • Add toprepopulate_blob_cacheto ColumnFamilyOptions.
  • L2 cache using blob cache is supported.When creating a Blob cache, the user can configure the LRUCacheOptionssecondary_cacheto set up the second level blob cache.
  • When the backing cache of the blob cache and the block cache are different, the memory usage of the blob cache is billed.
  • Improve subcompaction scoping so that it may be more even. A more even distribution of subcompactions will improve compaction throughput for some workloads.
  • Added CompactPri::kRoundRobin, a compaction picking mode that processes all files with a compact cursor in a round-robin fashion. This feature has been available since 7.5.
  • Provides support for subcompactions for user_defined_timestamp.
  • added an optionmemtable_protection_bytes_per_keywhich enables checksum protection for each memtable entry.
  • Added blob-specific cache priority – bottom level.

Public API changes

  • Removed Customizable support for RateLimiter and removed its CreateFromString() and Type() functions.
  • CompactRangeOptions::exclusive_manual_compactionDefaults to false now. This ensures that RocksDB does not introduce artificial concurrency limits by default.
  • Tiered Storage: Changesbottommost_tempertureforlast_level_temperture. Keep the old option name for migration only, use the new option.The behavior has been changed to onlylast_levelSST file apply temperature .
  • Added a new experimental ReadOption flag called optimize_multiget_for_io which, when set, attempts to reduce MultiGet latency by spawning coroutines for keys of multiple levels.

bug fix

  • Fix bug since 7.4.0 that after any DropColumnFamily on a DB, some fsync operations could be skipped until it is reopened.This may result in data loss in the event of a power outage
  • Fix a bug where the GenericRateLimiter could dynamically restore the set bandwidth using SetBytesPerSecond() when the user configures a struct surrounding it, e.g. using GetOptionsFromString() to configure an option that references an existing RateLimiter object
  • repairGenericRateLimiterrace conditions in
  • repairFIFOCompactionPicker::PickTTLCompactionTotal_size calculation may cause an underflow bug
  • fix race bug in hash linked list memtable
  • Fixed a bug where best_efforts_recovery might fail to open the database with mmap read
  • Fixed bug where blobs read during compaction would pollute the cache
  • Fixed data race in LRUCache when used with secondary_cache
  • fixed even if thefill_cacheWith the read option set to false, blobs read by the iterator will also insert cached errors
  • fixedCompressedSecondaryCache::SplitValueIntoChunks()andMergeChunksIntoValueTestmiddleAllocateData()cause segfault
  • Fixed a bug in BlobDB where a mix of inlined and blob values ​​could result in incorrect values ​​being passed to the compaction filter (see #10391)
  • Fixed stress test byFaultInjectionSecondaryCachememory leak problem

performance improvements

  • instead of building on every read operationFragmentedRangeTombstoneList, now it is built once and stored in immutable memtable s. This improves the speed of querying range tombstones from immutable memtables.
  • When using iterators with the integrated BlobDB implementation, Blob cache handles are now freed as soon as the iterator’s position changes.
  • If the optimize_multiget_for_io ReadOption flag is set, MultiGet can now perform more IO in parallel by reading data blocks in SST files from multiple levels.

For more details, please check: https://github.com/facebook/rocksdb/releases/tag/v7.6.0

#RocksDB #released #storage #system #developed #Facebook #News Fast Delivery

Leave a Comment

Your email address will not be published. Required fields are marked *