内容简介:RocksDB 6.26.0 现已发布。RocksDB 是一个来自 Facebook 的可嵌入的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库。RocksDB 基于 LevelDB 构建。 该版本具体更新内容如下: Bug Fixes 修复了...
RocksDB 6.26.0 现已发布。RocksDB 是一个来自 Facebook 的可嵌入的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库。RocksDB 基于 LevelDB 构建。
该版本具体更新内容如下:
Bug Fixes
- 修复了在为同一 blob 文件中的 blob 调用 MultiGet() 时定向 IO 模式下的错误。该错误是由于未按文件偏移量对 blob 读取请求进行 排序 造成的。
- 修复 WAL 和 DB 在不同目录时不正确禁用 SST 速率限制删除的问题。如果它在不同的目录中,则仅应禁用 WAL 速率限制删除。
- 修复
DisableManualCompaction()
以取消压缩,即使它们因CompactRangeOptions::exclusive_manual_compactions == true
正在等待自动压缩耗尽。 - 修复
Env::ReopenWritableFile()
和FileSystem::ReopenWritableFile()
的契约,以指定任何现有文件不得删除或截断。 - 修复了在调用
IngestExternalFiles()
时对 multiple column families 的错误。在IngestExternalFiles()
返回后,该错误可能会导致提取的 file keys 变得可见延迟。此外,当它们不可见时对摄取的 file keys 的突变可能已经被删除(不一定立即)。 - 修复了一个可能的 race condition,影响了
WriteBufferManager
的用户,这些用户在构建WriteBufferManager
时使用了allow_stall == true
。该 race condition 导致了未定义的行为(通常是进程崩溃)。 - 修复了一个错误,即用户在调用
WriteBufferManager::SetBufferSize()
时,如果new_size == 0
,动态地禁用内存限制,那么停滞的写入将永远保持停滞。 - 使
DB::close()
线程安全。 - 修复 atomic flush 中的一个错误,其中一个 bg 刷新线程将永远等待前一个 bg 刷新线程将其结果提交到 MANIFEST,但遇到映射到 soft error 的错误(DB not stopped)。
New Features
- 使用“ldb list_live_files_metadata”时 print 有关 blob 文件的信息
- 提供了对用户定义时间戳的 SingleDelete 支持。
- 实验性新函数 DB::GetLiveFilesStorageInfo 基本上提供了其他函数的统一版本,如 GetLiveFiles、GetLiveFilesChecksumInfo 和 GetSortedWalFiles。检查点和备份可以显示小的行为变化和/或改进的性能,因为它们现在使用这个新的 API。
- 添加远程压缩读/写字节统计:
REMOTE_COMPACT_READ_BYTES
,REMOTE_COMPACT_WRITE_BYTES
. - 引入一个实验性功能,从 block cache 中转储 blocks 并将它们插入二级缓存以减少缓存预热时间(例如,在迁移 DB 实例时使用)。更多信息在
rocksdb/utilities/cache_dump_load.h
的class CacheDumper
和CacheDumpedLoader
类中。此功能在未来可能会发生变化,它仍然是实验性的。 - 引入了一个新的 BlobDB 配置选项
blob_garbage_collection_force_threshold
,当这些 Blob 文件中的垃圾比率达到或超过指定的阈值时,该选项可用于触发针对 SST 文件的压缩,这些 SST 文件引用了最旧的 Blob 文件。这可以减少偏斜工作负载的空间放大,其中受影响的 SST 文件可能不会被提取以进行压缩。 - 添加了对稳定且普遍唯一的 table file (SST) 唯一标识符的实验性支持,可通过新函数
GetUniqueIdFromTableProperties
获得。只有 RocksDB >= 6.24 的 SST 文件支持 unique IDs。 - 添加了对“rocksdb.dbstats”(
DB::Properties::kDBStats
) 的GetMapProperty()
支持。作为映射属性,它包括在 DB 的生命周期内累积的 DB 级内部统计信息,例如用户写入相关的统计信息和正常运行时间。
Public API change
- 使 SystemClock 扩展了 Customizable 类并添加了 CreateFromString 方法。实现需要使用 ObjectRegistry 注册并实现 Name() 方法才能通过此方法创建。
- 使 SliceTransform 扩展了 Customizable 类并添加了一个 CreateFromString 方法。实现需要使用 ObjectRegistry 注册并实现 Name() 方法才能通过此方法创建。Capped 和 Prefixed 转换类返回一个短名称(无长度);使用 GetId 作为完全限定名称。
- 使 FileChecksumGenFactory、SstPartitionerFactory、TablePropertiesCollectorFactory 和 WalFilter 扩展了 Customizable 类并添加了 CreateFromString 方法。
- 为了与新基类 FileStorageInfo 兼容,SstFileMetaData 的一些字段被弃用。
- 添加
file_temperature
到IngestExternalFileArg
,这样在 ingesting SST 文件时,就能够显示这批文件的 temperature。 - 如果
DB::Close()
以非中止状态失败,再次调用DB::Close()
将返回原始状态而不是 Status::OK。 - 将 CacheTier 添加到 advanced_options.h 以描述使用的缓存层。在
DBOptions
(immutable)中添加一个lowest_used_cache_tier
的选项并将其传递给BlockBasedTableReader。默认情况下,它是CacheTier::kNonVolatileBlockTier
,这意味着,总是同时使用块缓存(kVolatileTier)和二级缓存(kNonVolatileBlockTier)。将其设置为CacheTier::kVolatileTier
,DB 将不使用二级缓存。 - 即使当 options.max_compaction_bytes 被命中时,压缩输出文件也只会在它与 grandparent files 的边界对齐时被剪切。options.max_compaction_bytes 可能会因更改而略有违反,但违反的程度不会超过一个目标 SST 文件大小,通常要小得多。
Performance Improvements
Java API Changes
- 为新的集成 BlobDB 选项添加 Java API 绑定
keyMayExist()
支持 ByteBuffer。- 修复 multiget 抛出 Null Pointer Exception for num of keys > 70k ( #8039 )
更新说明:https://github.com/facebook/rocksdb/releases/tag/v6.26.0
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- CockroachDB 19.2 发布,数据存储系统
- VS Code 1.38 发布,官方图标存储库发布
- Crate 2.3.0 版本发布,数据存储系统
- WiredTiger 2.9.2 发布,MongoDB 存储引擎
- WiredTiger 3.0.0 发布,MongoDB 存储引擎
- WiredTiger 4.1.0 发布,MongoDB 存储引擎
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。