Skip to content

CompactOnExpiredCollector的工作不符合预期 #2898

Answered by git-hulk
qiwei9743 asked this question in 中文
Discussion options

You must be logged in to vote

问题1,compact meta cf的时候,为什么deleted_keys需要计算 subkey的数量,也就是deleted_keys_ += metadata.size + 1 ? NeedCompact函数需要依赖metadata.size的原理是什么?

这个数值主要是给 Compaction Checker 使用,Compaction Checker 会处理全部的 Column Family,所以更多会关心对应 Key 范围的 Key-Value 数量,不关心到底是哪个 Column Family(权重一致).

问题2, CompactOnExpiredCollector::AddUserKey函数中的deleted_keys_ += metadata.size + 1大概率是执行不到的代码;meta cf compact过程中,对于metakey1(已经过期了),先调用MetadataFilter::Filter,把metakey1转换成entry_type rocksdb::kEntryDelete,导致调用CompactOnExpiredCollector::AddUserKey的时候,不会调用到deleted_keys_ += metadata.size + 1;

这个还是取决于 Compaction 调度,Metadata 不一定会比 SubKey 更加早被 Compaction,即使是 Metadata 更早回收也影响不是很大。

1.我理解NewCompactOnExpiredTableCollectorFactory(kMetadataCo…

Replies: 2 comments 1 reply

Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
1 reply
@git-hulk
Comment options

Answer selected by qiwei9743
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
中文
Labels
None yet
2 participants