RocksDB v5.15.0 Release Notes
Release Date: 2018-07-17 // almost 6 years ago-
Public API Change
- โ Remove managed iterator. ReadOptions.managed is not effective anymore.
- For bottommost_compression, a compatible CompressionOptions is added via
bottommost_compression_opts
. To keep backward compatible, a new booleanenabled
is added to CompressionOptions. For compression_opts, it will be always used no matter what value ofenabled
is. For bottommost_compression_opts, it will only be used when user setenabled=true
, otherwise, compression_opts will be used for bottommost_compression as default. - With LRUCache, when high_pri_pool_ratio > 0, midpoint insertion strategy will be enabled to put low-pri items to the tail of low-pri list (the midpoint) when they first inserted into the cache. This is to make cache entries never get hit age out faster, improving cache efficiency when large background scan presents.
- For users of
Statistics
objects created viaCreateDBStatistics()
, the format of the string returned by itsToString()
method has changed. - The "rocksdb.num.entries" table property no longer counts range deletion tombstones as entries.
๐ New Features
- ๐ Changes the format of index blocks by storing the key in their raw form rather than converting them to InternalKey. This saves 8 bytes per index key. The feature is backward compatible but not forward compatible. It is disabled by default unless format_version 3 or above is used.
- Avoid memcpy when reading mmap files with OpenReadOnly and max_open_files==-1.
- ๐ Support dynamically changing
ColumnFamilyOptions::ttl
viaSetOptions()
. - โ Add a new table property, "rocksdb.num.range-deletions", which counts the number of range deletion tombstones in the table.
- ๐ Improve the performance of iterators doing long range scans by using readahead, when using direct IO.
- pin_top_level_index_and_filter (default true) in BlockBasedTableOptions can be used in combination with cache_index_and_filter_blocks to prefetch and pin the top-level index of partitioned index and filter blocks in cache. It has no impact when cache_index_and_filter_blocks is false.
- Write properties meta-block at the end of block-based table to save read-ahead IO.
๐ Bug Fixes
- Fix deadlock with enable_pipelined_write=true and max_successive_merges > 0
- Check conflict at output level in CompactFiles.
- ๐ Fix corruption in non-iterator reads when mmap is used for file reads
- ๐ Fix bug with prefix search in partition filters where a shared prefix would be ignored from the later partitions. The bug could report an eixstent key as missing. The bug could be triggered if prefix_extractor is set and partition filters is enabled.
- Change default value of
bytes_max_delete_chunk
to 0 in NewSstFileManager() as it doesn't work well with checkpoints. - ๐ Fix a bug caused by not copying the block trailer with compressed SST file, direct IO, prefetcher and no compressed block cache.
- Fix write can stuck indefinitely if enable_pipelined_write=true. The issue exists since pipelined write was introduced in 5.5.0.