RocksDB 5.4.5 发布,可持久化 key-value 存储系统

RocksDB 5.4.5 发布了,RocksDB 是一个来自 facebook 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式。RocksDB 基于 LevelDB 构建。本次更新如下:

公共 API 更改

  • Support dynamically changing stats_dump_period_sec option via SetDBOptions().

  • Added ReadOptions::max_skippable_internal_keys to set a threshold to fail a request as incomplete when too many keys are being skipped while using iterators.

  • DB::Get in place of std::string accepts PinnableSlice, which avoids the extra memcpy of value to std::string in most of cases.

  • PinnableSlice releases the pinned resources that contain the value when it is destructed or when ::Reset() is called on it.

  • The old API that accepts std::string, although discouraged, is still supported.

Replace Options::use_direct_writes with Options::use_direct_io_for_flush_and_compaction. See Direct IO wiki for details.


  • Memtable flush can be avoided during checkpoint creation if total log file size is smaller than a threshold specified by the user.

  • Introduce level-based L0->L0 compactions to reduce file count, so write delays are incurred less often.

  • (Experimental) Partitioning filters which creates an index on the partitions. The feature can be enabled by setting partition_filters when using kFullFilter. Currently the feature also requires two-level indexing to be enabled. Number of partitions is the same as the number of partitions for indexes, which is controlled by metadata_block_size.

  • DB::ResetStats() to reset internal stats.

  • Added CompactionEventListener and EventListener::OnFlushBegin interfaces.

  • Added DB::CreateColumnFamilie() and DB::DropColumnFamilies() to bulk create/drop column families.

  • Facility for cross-building RocksJava using Docker.

Bug 修复

  • Fix WriteBatchWithIndex address use after scope error.

  • Fix WritableFile buffer size in direct IO.

  • Add prefetch to PosixRandomAccessFile in buffered io.

  • Fix PinnableSlice access invalid address when row cache is enabled.

  • Fix huge fallocate calls fail and make XFS unhappy.

  • Fix memory alignment with logical sector size.

  • Fix alignment in ReadaheadRandomAccessFile.

  • Fix bias with read amplification stats (READ_AMP_ESTIMATE_USEFUL_BYTES and READ_AMP_TOTAL_READ_BYTES).

  • Fix a manual / auto compaction data race.

  • Fix CentOS 5 cross-building of RocksJava.

  • Build and link with ZStd when creating the static RocksJava build.

  • Fix snprintf's usage to be cross-platform.

  • Fix build errors with blob DB.

  • Fix readamp test type inconsistency.


>>>【全民狂欢,评论有礼】5月15日-31日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

Originally posted here: 

RocksDB 5.4.5 发布,可持久化 key-value 存储系统