9.4.0 (2024-06-23)
New Features
- Added a
CompactForTieringCollectorFactory
to auto trigger compaction for tiering use case. - Optimistic transactions and pessimistic transactions with the WriteCommitted policy now support the
GetEntityForUpdate
API. - Added a new "count" command to the ldb repl shell. By default, it prints a count of keys in the database from start to end. The options --from= and/or --to= can be specified to limit the range.
- Add
rocksdb_writebatch_update_timestamps
,rocksdb_writebatch_wi_update_timestamps
in C API. - Add
rocksdb_iter_refresh
in C API. - Add
rocksdb_writebatch_create_with_params
,rocksdb_writebatch_wi_create_with_params
to create WB and WBWI with all options in C API
Public API Changes
- Deprecated names
LogFile
andVectorLogPtr
in favor of new namesWalFile
andVectorWalPtr
. - Introduce a new universal compaction option CompactionOptionsUniversal::max_read_amp which allows user to define the limit on the number of sorted runs separately from the trigger for compaction (
level0_file_num_compaction_trigger
) #12477.
Behavior Changes
- Inactive WALs are immediately closed upon being fully sync-ed rather than in a background thread. This is to ensure LinkFile() is not called on files still open for write, which might not be supported by some FileSystem implementations. This should not be a performance issue, but an opt-out is available with with new DB option
background_close_inactive_wals
.
Bug Fixes
- Fix a rare case in which a hard-linked WAL in a Checkpoint is not fully synced (so might lose data on power loss).
- Fixed the output of the
ldb dump_wal
command forPutEntity
records so it prints the key and correctly resets the hexadecimal formatting flag after printing the wide-column entity. - Fixed an issue where
PutEntity
records were handled incorrectly while rebuilding transactions during recovery. - Various read operations could ignore various ReadOptions that might be relevant. Fixed many such cases, which can result in behavior change but a better reflection of specified options.
Performance Improvements
- Improved write throughput to memtable when there's a large number of concurrent writers and allow_concurrent_memtable_write=true(#12545)