@@ -21,7 +21,9 @@ TiKV 使用了 RocksDB 的 `Column Families` (CF) 特性。
2121
2222 - ` default ` CF 主要存储的是 Raft log,与其对应的参数位于 ` [raftdb.defaultcf] ` 项中。
2323
24- 每个 CF 都有单独的 ` block-cache ` ,用于缓存数据块,加速 RocksDB 的读取速度,block-cache 的大小通过参数 ` block-cache-size ` 控制,block-cache-size 越大,能够缓存的热点数据越多,对读取操作越有利,同时占用的系统内存也会越多。
24+ 在 TiKV 3.0 版本后,所有的 CF 默认共同使用一个 block cache 实例。通过在 ` [storage.block-cache] ` 下设置 ` capacity ` 参数,你可以配置该 block cache 的大小。block cache 越大,能够缓存的热点数据越多,读取数据越容易,同时占用的系统内存也越多。如果要为每个 CF 使用单独的 block cache 实例,需要在 ` [storage.block-cache] ` 下设置 ` shared=false ` ,并为每个 CF 配置单独的 block cache 大小。例如,可以在 ` [rocksdb.writecf] ` 下设置 ` block-cache-size ` 参数来配置 ` write ` CF 的大小。
25+
26+ 在 TiKV 3.0 之前的版本中,不支持使用 ` shared block cache ` ,因此需要为每个 CF 单独配置 block cache。
2527
2628每个 CF 有各自的 ` write-buffer ` ,大小通过 ` write-buffer-size ` 控制。
2729
@@ -60,6 +62,27 @@ log-level = "info"
6062# 参数调大,增加写线程的个数。
6163# scheduler-worker-pool-size = 4
6264
65+ [storage .block-cache ]
66+ # # 是否为 RocksDB 的所有 CF 都创建一个 `shared block cache`。
67+ # #
68+ # # RocksDB 使用 block cache 来缓存未压缩的数据块。较大的 block cache 可以加快读取速度。
69+ # # 推荐开启 `shared block cache` 参数。这样只需要设置全部缓存大小,使配置过程更加方便。
70+ # # 在大多数情况下,可以通过 LRU 算法在各 CF 间自动平衡缓存用量。
71+ # #
72+ # # `storage.block-cache` 会话中的其余配置仅在开启 `shared block cache` 时起作用。
73+ # shared = true
74+ # # `shared block cache` 的大小。正常情况下应设置为系统全部内存的 30%-50%。
75+ # # 如果未设置该参数,则由以下字段或其默认值的总和决定。
76+ # #
77+ # # * rocksdb.defaultcf.block-cache-size 或系统全部内存的 25%
78+ # # * rocksdb.writecf.block-cache-size 或系统全部内存的 15%
79+ # # * rocksdb.lockcf.block-cache-size 或系统全部内存的 2%
80+ # # * raftdb.defaultcf.block-cache-size 或系统全部内存的 2%
81+ # #
82+ # # 要在单个物理机上部署多个 TiKV 节点,需要显式配置该参数。
83+ # # 否则,TiKV 中可能会出现 OOM 错误。
84+ # capacity = "1GB"
85+
6386[pd ]
6487# pd 的地址
6588# endpoints = ["127.0.0.1:2379","127.0.0.2:2379","127.0.0.3:2379"]
@@ -176,10 +199,6 @@ max-bytes-for-level-base = "512MB"
176199# 影响,target-file-size-base 参数用于控制 level1-level6 单个 sst 文件的大小。
177200target-file-size-base = " 32MB"
178201
179- # 在不配置该参数的情况下,TiKV 会将该值设置为系统总内存量的 40%。如果需要在单个物理机上部署多个
180- # TiKV 节点,需要显式配置该参数,否则 TiKV 容易出现 OOM 的问题。
181- # block-cache-size = "1GB"
182-
183202[rocksdb .writecf ]
184203# 保持和 rocksdb.defaultcf.compression-per-level 一致。
185204compression-per-level = [" no" , " no" , " lz4" , " lz4" , " lz4" , " zstd" , " zstd" ]
@@ -193,11 +212,6 @@ min-write-buffer-number-to-merge = 1
193212max-bytes-for-level-base = " 512MB"
194213target-file-size-base = " 32MB"
195214
196- # 在不配置该参数的情况下,TiKV 会将该值设置为系统总内存量的 15%。如果需要在单个物理机上部署多个
197- # TiKV 节点,需要显式配置该参数。版本信息(MVCC)相关的数据以及索引相关的数据都记录在 write 这
198- # 个 CF 里面,如果业务的场景下单表索引较多,可以将该参数设置的更大一点。
199- # block-cache-size = "256MB"
200-
201215[raftdb ]
202216# RaftDB 能够打开的最大文件句柄数。
203217# max-open-files = 40960
@@ -220,9 +234,6 @@ min-write-buffer-number-to-merge = 1
220234# 保持和 rocksdb.defaultcf.max-bytes-for-level-base 一致。
221235max-bytes-for-level-base = " 512MB"
222236target-file-size-base = " 32MB"
223-
224- # 通常配置在 256MB 到 2GB 之间,通常情况下使用默认值就可以了,但如果系统资源比较充足可以适当调大点。
225- block-cache-size = " 256MB"
226237```
227238
228239## TiKV 内存使用情况
0 commit comments