ARTICLE · 1229307
深度拆解 RocksDB 源码:128 个采样锚点如
深度拆解 RocksDB 源码:128 个采样锚点如
深度拆解 RocksDB 源码:128 个采样锚点如
大归并任务一上来就抢全局锁,几十吉字节的数据区间直接被独占。后台线程池空着一大堆槽位,作业调度却只能退化为单核串行。
RocksDB 的解法是把重型任务切成多个互斥子区间,这就是子归并。我顺着源码往下挖,发现核心靠的是 128 个采样锚点。它们负责做空间投影,把大区间拆开让多线程并发推进。
切分不是随便划的。代码里严格用左闭右开区间做状态隔离,输出边界还得按祖父层拓扑裁决,防住连锁写放大。
长尾倾斜场景下,SstPartitioner 还会引发微文件灾难。这块的工程防护细节,源码里藏了不少门道。
原文深度拆解 RocksDB 源码:128 个采样锚点如何用 C++ 击碎 Compaction 单核锁死?
作者提示: 个人观点,仅供参考
广东,1小时前,















































































