Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

key-value separation support of RocksDB #1363

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ Storage 服务提供了两份初始配置文件`nebula-storaged.conf.default`和
| 名称 | 预设值 | 说明 |
| :------------- | :------------------------ | :------------------------------------------------ |
| `log_dir` | `logs` | 存放 Storage 服务日志的目录,建议和数据保存在不同硬盘。 |
| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值为`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 |
| `v` | `0` | 日志详细级别,值越大,日志记录越详细。可选值为`0`、`1`、`2`、`3`。 |
| `minloglevel` | `0` | 最小日志级别,即不会记录低于这个级别的日志。可选值:`0`(INFO)、`1`(WARNING)、`2`(ERROR)、`3`(FATAL)。建议在调试时设置为`0`,生产环境中设置为`1`。如果设置为`4`,Nebula Graph 不会记录任何日志。 |
| `v` | `0` | 日志详细级别,值越大,日志记录越详细。可选值:`0`、`1`、`2`、`3`。 |
| `logbufsecs` | `0` | 缓冲日志的最大时间,超时后输出到日志文件。`0`表示实时输出。单位:秒。 |
|`redirect_stdout`|`true` |是否将标准输出和标准错误重定向到单独的输出文件。 |
|`stdout_log_file` |`storaged-stdout.log` | 标准输出日志文件名称。 |
Expand Down Expand Up @@ -77,19 +77,28 @@ Storage 服务提供了两份初始配置文件`nebula-storaged.conf.default`和
| 名称 | 预设值 | 说明 |
| :--------------------------| :-------------- | :------------------------ |
|`data_path` | `data/storage` | 数据存储路径,多个路径用英文逗号(,)分隔。一个 RocksDB 实例对应一个路径。 |
|`minimum_reserved_bytes`|`268435456`|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群数据写入失败。单位:字节。默认为`1073741824`,即 1GB。|
|`minimum_reserved_bytes`|`268435456`|每个数据存储路径的剩余空间最小值,低于该值时,可能会导致集群数据写入失败。单位:字节。|
|`rocksdb_batch_size` | `4096` | 批量操作的缓存大小。单位:字节。 |
|`rocksdb_block_cache` | `4` | BlockBasedTable 的默认块缓存大小。单位:兆(MB)。 |
|`engine_type` | `rocksdb` | 存储引擎类型。 |
|`rocksdb_compression` | `lz4` | 压缩算法,可选值为`no`、`snappy`、`lz4`、`lz4hc`、`zlib`、`bzip2``zstd`。 |
|`rocksdb_compression` | `lz4` | 压缩算法,可选值:`no`、`snappy`、`lz4`、`lz4hc`、`zlib`、`bzip2``zstd`。 |
|`rocksdb_compression_per_level` | - | 为不同级别设置不同的压缩算法。 |
|`enable_rocksdb_statistics` | `false` | 是否启用 RocksDB 的数据统计。 |
|`rocksdb_stats_level` | `kExceptHistogramOrTimers` | RocksDB 的数据统计级别。可选值为`kExceptHistogramOrTimers`(禁用计时器统计,跳过柱状图统计)、`kExceptTimers`(跳过计时器统计)、`kExceptDetailedTimers`(收集除互斥锁和压缩花费时间之外的所有统计数据)、`kExceptTimeForMutex`收集除互斥锁花费时间之外的所有统计数据)`kAll`(收集所有统计数据)。 |
|`rocksdb_stats_level` | `kExceptHistogramOrTimers` | RocksDB 的数据统计级别。可选值:`kExceptHistogramOrTimers`(禁用计时器统计,跳过柱状图统计)、`kExceptTimers`(跳过计时器统计)、`kExceptDetailedTimers`(收集除互斥锁和压缩花费时间之外的所有统计数据)、`kExceptTimeForMutex`收集除互斥锁花费时间之外的所有统计数据)`kAll`(收集所有统计数据)。 |
|`enable_rocksdb_prefix_filtering` | `true` | 是否启用 prefix bloom filter,启用时可以提升图遍历速度,但是会增加内存消耗。 |
|`enable_rocksdb_whole_key_filtering` | `false` | 是否启用 whole key bloom filter。 |
|`rocksdb_filtering_prefix_length` | `12` | 每个 key 的 prefix 长度。可选值为`12`(分片 ID+点 ID)`16`(分片 ID+点 ID+TagID/Edge typeID)。单位:字节。 |
|`rocksdb_filtering_prefix_length` | `12` | 每个 key 的 prefix 长度。可选值:`12`(分片 ID+点 ID)`16`(分片 ID+点 ID+TagID/Edge typeID)。单位:字节。 |
|`enable_partitioned_index_filter`|- |设置为`true`可以降低 bloom 过滤器占用的内存大小,但是在某些随机寻道(random-seek)的情况下,可能会降低读取性能。|

## Key-Value separation 配置

| 名称 | 预设值 | 说明 |
| :------------------| :------------------------| :------------------------------- |
| `rocksdb_enable_kv_separation` | `false` | 是否启用 BlobDB KV 分离存储功能。开启后可以提高查询性能。 |
| `rocksdb_kv_separation_threshold` | `100` | RocksDB KV 分离的阈值,在 flush 或 compaction 期间,大于或等于该阈值的值将被写入blob文件。单位:字节。 |
| `rocksdb_blob_compression` | `lz4` | BlobDB 的压缩算法,可选值:`no`、`snappy`、`lz4`、`lz4hc`、`zlib`、`bzip2`、`zstd`。 |
| `rocksdb_enable_blob_garbage_collection` | `true` | 在 compaction 过程中是否对 BlobDB 进行垃圾收集。 |

## misc 配置

!!! caution
Expand Down