Day 021 作为 RocksDB 高级特性、优化与专题深挖的目录页,简要梳理 Merge Operator、Compaction Filter、SST File Ingestion、Backup / Checkpoint 和 DeleteRange 的定位、原理、必要性与大概实现链路。
从 Options、MutableCFOptions、VersionStorageInfo、WriteController 和 RateLimiter 出发,理解 RocksDB 参数如何影响 memtable、L0、level target、后台 compaction 债务、I/O 限流和 write stall,并整理一套可执行的调参顺序。
从 TransactionDB、LockManager、SnapshotChecker、OptimisticTransactionDB 和 WritePrepared / WriteUnprepared 出发,理解 RocksDB 如何在既有 LSM 之上叠加事务隔离、冲突检测和恢复语义。
从 integrated BlobDB 的读写路径、blob 文件格式、MANIFEST 元数据、flush/compaction/GC、blob cache、scan、merge 与动态开关边界出发,理解 RocksDB 如何把大 value 从 LSM 中抽离出来。
从 ColumnFamilyHandle、ColumnFamilyData、ColumnFamilySet 和读写路径入手,解释 RocksDB 如何在一个 DB 内维护多套逻辑 LSM 状态,以及哪些资源按 Column Family 隔离、哪些资源仍由 DB 共享。
沿着 RocksDB BlockBasedTable 读路径,解释 Block Cache、Bloom Filter、Prefix Bloom、Partitioned Index/Filter 如何减少读放大,并从构建端和读取端源码串起 filter、index、data block 与缓存的关系。
回看 RocksDB CompactionIterator 如何消费 internal key 流,并结合 snapshot、delete tombstone、single delete、merge、range tombstone 与 CompactionJob 输出链路决定新 SST 中最终保留什么。
对比 RocksDB 的 Level、Universal、FIFO 三种 compaction style,解释 tiering compaction 的含义,并从 ColumnFamilyData、WriteController、DBImpl 写路径和 RateLimiter 看 write stall 如何减速、停止和保护后台整理。
从 VersionStorageInfo 的 compaction score、ColumnFamilyData 的 picker、DBImpl 的后台调度、CompactionJob 的输出 SST 构建、以及 VersionEdit/LogAndApply 的提交链路出发,建立 RocksDB compaction 的基础机制与主流程。
从 CURRENT 指向 MANIFEST、VersionEdit 增量记录、VersionBuilder/VersionEditHandler 的应用与回放、以及 VersionSet::LogAndApply/Recover 的主链出发,讲清 RocksDB 如何持久化 SST 元数据、切换 current Version,并在 DB 打开时恢复回来。