• 2024-09-28RocksDB代码分析——写入流程
    分析均基于v6.27.3。以下流程为了方便理解均经过了简化。首先,我们通过调用DB::Open来创建数据库,它返回了一个DB*。DB::Open内部调用了DBImpl::Open,在里面构造了一个DBImpl*并转换成DB*返回。所以我们拿到的DB*其实是DBImpl*。然后我们调用DB::Put来写入数据。DB::Put是个virtual
  • 2024-09-28RocksDB代码分析——Flush流程
    这里从DBImpl::MaybeScheduleFlushOrCompaction开始讲起。DBImpl::MaybeScheduleFlushOrCompaction可能会scheduleDBImpl::BGWorkFlush和DBImpl::BGWorkCompaction。这里主要看Flush。Compaction部分见:{%post_linkStorage/'RocksDB代码分析——Compaction流程'%}DBImpl::BGWo
  • 2024-09-28RocksDB代码分析——Compaction流程
    这里从DBImpl::MaybeScheduleFlushOrCompaction开始讲起。DBImpl::MaybeScheduleFlushOrCompaction可能会scheduleDBImpl::BGWorkFlush和DBImpl::BGWorkCompaction。这里主要看Compaction。Flush部分见{%post_linkStorage/'RocksDB代码分析——Flush流程'%}DBImpl::BGWorkCo