RocksDB 7.0.0 已发布,Facebook 开发的 k-v 存储系统
RocksDB 7.0.0 现已发布,RocksDB 是一个来自 Facebook 的可嵌入的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,基于 LevelDB 构建。
RocksDB 7.0.0
Bug修复
- 修复了当启用 memtable Bloom 过滤器 (memtable_prefix_bloom_size_ratio > 0) 时,批量 MultiGet 可能返回由 DeleteRange 删除的键的旧值的主要错误。
- 修复了更多 EventListener::OnTableFileCreated 调用的情况,状态为 OK,file_size==0,且没有保留 SST 文件。
- 修复了
DB::GetMergeOperands()
. - 修复并发事务提交和 memtable 切换导致的 2PC 写提交事务的数据丢失问题(#9571)。
- 修复了
NUM_INDEX_AND_FILTER_BLOCKS_READ_PER_LEVEL
、NUM_DATA_BLOCKS_READ_PER_LEVEL
和NUM_SST_READ_PER_LEVEL
统计信息,每个级别的每个MultiGet
批次报告一次。
性能改进
- 减少了构建在线 LSM 树一致性检查所使用的文件位置哈希表的开销,这可以提高某些工作负载的性能(参见#9351)。
- 切换到使用排序
std::vector
而不是std::map
存储 blob 文件的元数据对象,可以提高某些工作负载的性能,尤其是当 blob 文件的数量很大时。 - DisableManualCompaction() 不必等待计划的手动压缩在线程池中执行以取消作业。
行为改变
- 禁止
DBOptions.use_direct_io_for_flush_and_compaction == true
和DBOptions.writable_file_max_buffer_size == 0
的组合,这种组合会导致WritableFileWriter::Append()
永远循环,在直接 IO 中没有多大意义。 ReadOptions::total_order_seek
不再影响DB::Get()
,这种交互已经过时,因为 RocksDB 已经能够检测当前的前缀提取器是否与用于生成表文件的前缀提取器兼容。
新特性
- 引入了
BlockBasedTableOptions::detect_filter_construct_corruption
在 Bloom Filter (format_version >= 5
) 和 Ribbon Filter 构建期间检测损坏的选项。 - 改进了 SstDumpTool 以从表属性中读取比较器,并使用它来读取 SST 文件。
- 扩展了信息日志中的列族统计信息,还会记录 blob 文件中的垃圾总量和 blob 文件空间放大系数,还通过
rocksdb.blob-stats
DB 属性公开了 blob 文件空间放大器。 - 在 ch 中引入
APIrocksdb_create_dir_if_missing
,调用底层文件系统的CreateDirIfMissing
API 来创建目录。 - 添加了最后一级和非最后一级读取统计信息:
LAST_LEVEL_READ_*
、NON_LAST_LEVEL_READ_*
。 - 实验性:在 FSRandomAccessFile 中添加对新 API ReadAsync 的支持,以异步读取数据,并在 FileSystem 中添加 Poll API 以检查请求的读取请求是否已完成。ReadAsync 采用回调函数。轮询 API 检查读取 IO 请求的完成情况,并应调用回调函数来指示读取请求的完成。
RocksDB 7.0.1
- 修复使用
DisableManualCompaction
取消手动压缩时的竞争条件,DB close 也可以取消手动压缩线程。 - 修复了
DBImpl::ResumeImpl()
和等待恢复完成的线程之间的 versions_ 数据竞争 - 修复了由刷新、传入写入和拍摄快照之间的竞争导致的错误,对使用这些竞争条件创建的快照查询可能会返回不正确的结果,例如重新显示已删除的数据。
7.0.0 版本还有海量公共 API 更改,详情查看更新公告:https://github.com/facebook/rocksdb/releases/tag/v7.0.1

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Maven 3.8.5 发布,项目管理和构建工具
Apache Maven 3.8.5 发布了。Apache Maven 是一个项目管理和构建工具。基于项目对象模型(POM)的概念, Maven 可以从中心位置管理项目的构建、报告和文档。 此版本更新内容如下: Bug [MNG-5180] - 版本控制的快照版本列表不包括在元数据合并中 [MNG-5561] - 插件重新定位会丢失配置 [MNG-5982] - ... 的 POM 是无效的,传递依赖... 而属性被覆盖 [MNG-6326] - 在没有找到核心扩展时继续构建 [MNG-6727] - 在父版本和 CI 友好版本中使用版本范围失败 [MNG-6802] - FileProfileActivator 改变了 FileProfileActivator.existence,让扁平化的 resolveCiFriendliesOnly 取决于激活配置文件的失败 [MNG-7156] - 并行构建可能导致 clean 和 forked 目标之间的问题。 [MNG-7335] - [回归] 由于编译路径中缺少 JAR 构件,并行构建失败。 [MNG-7347] - SessionSc...
- 下一篇
MKVToolNix v66.0 发布,MKV 视频编辑工具
MKVToolNix 是一套功能强大的 mkv(Matroska)格式制作和处理的工具,支持将多种视频、音频、字幕等格式封装成 mkv 格式。 MKVToolNix 66.0 正式发布,更新内容如下: 新功能和改进 mkvpropedit: 增加了一个新的选项-chapter-charset,允许用户在阅读下一章时指定使用的字符集。 MKVToolNix GUI:每种语言的快捷方式现在都可以与一个可选的轨道名称相关联,当使用该快捷方式时,该轨道名称将与语言一起被设置。 错误修复 mkvmerge: Ogg/OGM 阅读器:当 mkvmerge 遇到 Vorbis 注释包含的数据不是有效的 UTF-8 时,它将不再以异常中止。 MKVToolNix GUI:多路复用器:修复了 "属性" 窗格和 "输出" 标签中元素的标签顺序的几个问题。还修复了语言显示小组件的问题。 MKVToolNix GUI:多路复用器:如果在 "输出" 标签上选择了一个章节文件,章节名称模板现在将被传递到mkvmerge 更多详情可查看:https://www.bunkus.org/blog/
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题