Ch13-LevelDB 之 事务
July 18, 2022
LevelDB 事务
...LevelDB 事务
...在 Minor Compaction 完成的时候,会对新生成的 version 计算一次 compaction_level_ 和 compaction_score_。这两个参数决定了当前 version 的 是否需要做 Major Compaction。
...Minor Compaction 流程
...Open 流程
...Endian-neutral encoding:
* Fixed-length numbers are encoded with least-significant byte first
* In addition we support variable length "varint" encoding
* Strings are encoded prefixed by their length in varint format
-- util/coding.h
WAL 一般用于故障恢复,其内容就是内存里 MemTable 内容的持久化,当一个 MemTable 写满后,开启一个新的 MemTable 时,也同时会开启一个新的 WAL,当 MemTable 被 Dump 到磁盘后,相应的 WAL 可以被删除。所以说控制每次 WAL 写入磁盘的方式,便可以控制最多可能丢失的数据量。
...要想说明 Manifest 就不得不提出另一个重要的概念——Version。
...SSTable
...MemTable
...Arena 内存管理
...