GitHub user git-hulk added a comment to the discussion: 
CompactOnExpiredCollector的工作不符合预期

> 问题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(kMetadataColumnFamilyName, 
> 0.3)大概意图是解决大量tombs的问题,看起来使用rocksdb::CompactOnDeletionCollectorFactory可能是一个更好的选择。

CompactOnExpiredTableCollector 就是为了实现 CompactOnDeletionCollector 不同的 Key 
计算逻辑而自己实现的(见第一个问题)。

GitHub link: 
https://github.com/apache/kvrocks/discussions/2898#discussioncomment-12932497

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to