key-value 存储系统,RocksDB 3.10 发布
RocksDB 是一个来自 非死book 的可嵌入式的支持持久化的 key-value 存储系统,也可作为 C/S 模式下的存储数据库,但主要目的还是嵌入式。RocksDB 基于 LevelDB 构建。关于 RocksDB 的性能说明。
RocksDB 3.10 发布,此版本更新内容如下:新特性
-
GetThreadStatus() 现在可以报告详细的线程状态信息:
-
Thread Operation including flush and compaction.
-
The stage of the current thread operation.
-
The elapsed time in micros since the current thread operation started. More information can be found in include/rocksdb/thread_status.h. In addition, when running db_bench with --thread_status_per_interval, db_bench will also report thread status periodically.
-
修改 LRU 缓存算法
-
编译优化
-
We now allow level-compaction to place files in different paths by specifying them in db_paths along with the target_size. Lower numbered levels will be placed earlier in the db_paths and higher numbered levels will be placed later in the db_paths vector.
-
潜在的性能提升
-
添加 BlockBasedTableOptions.format_version 选项
-
添加基于表格式的新块
-
默认库构建提供 MemEnv (env that stores data in memory)
-
添加 SliceTransform.SameResultWhenAppended()
-
Block based table now makes use of prefix bloom filter if it is a full fulter.
-
Block based table remembers whether a whole key or prefix based bloom filter is supported in SST files. Do a sanity check when reading the file with users' configuration.
-
Fixed a bug in ReadOnlyBackupEngine that deleted corrupted backups in some cases, even though the engine was ReadOnly
-
options.level_compaction_dynamic_level_bytes, a feature to allow RocksDB to pick dynamic base of bytes for levels. With this feature turned on, we will automatically adjust max bytes for each level. The goal of this feature is to have lower bound on size amplification. For more details, see comments in options.h.
-
Added an abstract base class WriteBatchBase for write batches
-
Fixed a bug where we start deleting files of a dropped column families even if there are still live references to it
Public API changes
-
Deprecated skip_log_error_on_recovery and table_cache_remove_scan_count_limit options.
-
Logger method logv with log level parameter is now virtual
RocksJava
-
Added compression per level API.
-
MemEnv is now available in RocksJava via RocksMemEnv class.
-
lz4 compression is now included in rocksjava static library when running
make rocksdbjavastatic
. -
Overflowing a size_t when setting rocksdb options now throws an IllegalArgumentException, which removes the necessity for a developer to catch these Exceptions explicitly.
此版本现已提供下载:https://github.com/非死book/rocksdb/archive/v3.10.zip。