gotoxu
(Gotoxu)
1
你好!
在阅读TiKV源码的过程中,我们发现 split_check
下的 keys checker
在检查键时跳过了 Column Family != CF_WRITE的所有键:
fn on_kv(&mut self, _: &mut ObserverContext<'_>, key: &KeyEntry) -> bool {
if !key.is_commit_version() {
return false;
}
...
}
pub fn is_commit_version(&self) -> bool {
self.cf == CF_WRITE
}
因此,假如我使用的是Raw API,那么 keys checker
将无法发挥作用?不知道我这样理解是否正确?如果正确的话,请问这样设计是基于什么考量?
1 个赞
splitchecker 有多个子类。rawapi 会使用 default 中的 range 进行切割。
1 个赞
gotoxu
(Gotoxu)
4
确实有多个子类。包括 size, half, keys, table。
对于keys checker来说,由于在 on_kv
方法中首先判断了 is_commit_version
,由于Raw API写入的KV存储在default
Column Family 中,因此这里会返回false
咯?于是函数直接就返回了。
因此,最终在keys checker中调用split_keys
方法时返回的就是一个空集合。那代表说Raw API写入的KV在这里检查后不会产生任何split keys
?
gotoxu
(Gotoxu)
5
我了解Raw API写入的KV会使用其他Checker来进行分裂。
我只是想确认一下,Keys checker对于Raw API写入的KV是不是不会检测的?如果是,那是否代表:
# region-max-keys = 1440000
# region-split-keys = 960000
这两个配置在Raw API模式下就无效了?
会检测。这两个配置在 raw api 下仍然是有效的。
gotoxu
(Gotoxu)
8
其余的Checker具体指哪个Checker呢?可以说明一下吗?谢谢!
system
(system)
关闭
10
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。