2024-06-23 9.4版本变动
新功能
- CompactForTieringCollectorFactory 支持
- 乐观事务/悲观事务 WriteCommitted策略下支持GetEntityForUpdate接口
- ldb命令支持count,打印db key总数。–from –to支持指定范围
- 增加C api
- rocksdb_writebatch_update_timestamps/rocksdb_writebatch_wi_update_timestamps
- rocksdb_iter_refresh
- rocksdb_writebatch_create_with_params/rocksdb_writebatch_wi_create_with_params
API变动
- LogFile/VectorLogPtr改名WalFile/VectorWalPtr
- universal compaction支持CompactionOptionsUniversal::max_read_amp 支持用户定义读放大上限,降低读放大 github.com/facebook/rocksdb/pull/12477
- 简单来说level0_file_num_compaction_trigger不够灵活,无法发现读放大场景,引入max_read_amp,提前根据读放大做compaction,PR里的test plan非常详细 这个算是重要功能了
行为变动
- 当同步完成后不活跃的WAL会被立即关闭,而不是后台线程关闭,这用来避免写文件的同时调用LinkFIle,某些FS可能不支持(大概率内部需求),这一般来说不会是性能影响瓶颈,不过不放心的可以开启background_close_inactive_wals
bug修复
- Checkpoint没有同步的时候硬链接WAL可能存在线程安全问题
- ldb dump_wal 打印问题
- 恢复过程中重建事务的时候PutEntity record处理不正确
- 很多读场景下ReadOptions的很多有关联的配置都被忽略了,修复了一些相关项,行为可能反映到具体的配置上,注意
性能提升
- allow_concurrent_memtable_write=true 大量写性能提升 github.com/facebook/rocksdb/pull/12545
- 线程多的时候(>3) 进行分组并发写,而不是只有一个group组提交,拆成^0.5个组 有句讲句,这种优化为什么我没有想到?
看到这里或许你有建议或者疑问或者指出错误,请留言评论! 多谢! 你的评论非常重要!也可以帮忙点赞收藏转发!多谢支持!
觉得写的不错那就给点吧, 在线乞讨