如题,具体列举了RocksDB中相比LevelDB的一些新特性。
性能
- 多线程压缩
- 多线程memtable插入
- 减少DB互斥体保持
- 优化的基于级别的压缩风格和通用压缩风格
- 前缀bloom过滤器
- Memtable布隆过滤器
- 覆盖整个SST文件的单个布过滤器
- 写锁优化
- 改进
Iter :: Prev()
性能 - 在SkipList搜索期间,较少的比较器调用
- 使用巨大的页面分配memtable内存
特性
- 列簇(column families)
- 事务和WriteBatchWithIndex
- 备份和检查点
- 合并操作
- 压缩过滤器
- RocksDB Java
- 手动压缩与自动压缩并行运行
- 持久化缓存
- 批量加载
- 前向迭代器/尾部迭代器
- 单个删除
- 范围删除文件
- 引脚迭代器key/value
替换的数据结构和格式
- 仅用于内存使用情况的纯表格式
- 基于向量和基于哈希的memtable格式
- 基于时钟的缓存(即将推出)
- 可插拔信息日志
- 使用blob注释事务日志写入(用于副本)
可调性
- 速率限制
- 可调减速和停止阈值
- 保持所有文件打开的选项
- 将所有索引和bloom过滤器块保留在块缓存中的选项
- 多种WAL恢复模式
- Fadvise提示用于预读和避免在OS页面缓存中缓存
- 用于在内存中固定L0文件的索引和bloom过滤器的选项
- 更多压缩类型:zlib,lz4,zstd
- 压缩字典
- 校验类型:xxhash
- 每级的不同级别尺寸乘法器和压缩类型
可管理性
- 统计
- Thread-local分析
- 命令行工具中的更多命令
- 用户定义的表属性
- 事件侦听器
- 更多数据库属性
- 动态选项更改
- 从字符串或映射获取选项
- 选项文件的持久性选项
英文原文链接:Features Not in LevelDB
v1.5.2