附录 术语表


附录 术语表

本附录汇总全书核心术语,按主题分组,便于查阅与复习。每个术语给出中文名、英文原名、一句话释义,并标注相关章节。

架构与数据流

术语 英文 释义 相关章节
内存表 MemTable 内存中的有序写入缓冲区,基于跳表实现,承接所有新写入 第 2 章
不可变内存表 Immutable MemTable 写满后被冻结的只读内存表,等待后台刷盘 第 2 章
有序字符串表 SSTable 磁盘上内部按键排序、不可变的数据文件 第 2 章
预写日志 WAL / Write-Ahead Log 追加式持久化日志,先写日志再改内存,崩溃恢复的依据 第 3 章
日志结构合并树 LSM-Tree 把随机写变成顺序写、用后台合并整理数据的存储范式 第 1 章
清单文件 Manifest 记录所有 SSTable 文件层级与键范围的版本变更日志 第 2 章
当前指针文件 CURRENT 记录最新 Manifest 文件名的引导文件 第 2 章

核心机制

术语 英文 释义 相关章节
写入流程 Write Path 从 WriteBatch 到 WAL、MemTable、后台落盘的写入链路 第 3 章
读取流程 Read Path 从内存到多级磁盘的"由新到旧"查找链路 第 3 章
内存固化 Minor Compaction 把 Immutable MemTable 刷成 L0 SSTable 的过程 第 3 章
层级重组 Major Compaction 磁盘内部多路归并、清理冗余、逐层下沉的过程 第 3 章
写放大 Write Amplification 实际写入磁盘数据量 ÷ 用户逻辑写入量 第 3 章
读放大 Read Amplification 完成一次逻辑读取实际访问的数据量 第 3 章
空间放大 Space Amplification 存储数据量 ÷ 有效数据量 第 3 章
墓碑标记 Tombstone LSM 中代表"键已删除"的特殊记录 第 3 章
组提交 Group Commit 领导线程捎带排队批次一次性持久化的机制 第 3 章

算法与数据结构

术语 英文 释义 相关章节
跳表 SkipList 概率平衡的有序结构,MemTable 的实现基础 第 4 章
布隆过滤器 Bloom Filter 概率型结构,确定回答"不存在"、含糊回答"可能存在" 第 4 章
表缓存 Table Cache 缓存已打开 SSTable 的文件句柄与索引块 第 4 章
块缓存 Block Cache 缓存解压后的数据块,LRU 淘汰 第 4 章
前缀压缩 Prefix Compression Block 内相邻键只存差异的零成本压缩 第 4 章
Snappy Snappy 速度优先的通用压缩算法,Block 级默认压缩 第 4 章
变长整数 Varint 用更少字节表示小整数的编码 第 8 章

并发与一致性

术语 英文 释义 相关章节
序列号 Sequence Number 全局递增的逻辑时钟,每次写入分配一个 第 5 章
批量写 WriteBatch 一组操作的原子容器,整批写日志 + 共享序列号 第 5 章
快照 Snapshot 记录某个序列号的一致视图,创建 O(1) 第 5 章
版本 Version 某时刻的完整文件集合视图 第 2/5 章
版本集 VersionSet 管理版本链与当前指针的组件 第 2 章
单写者 Single Writer 任意时刻最多一个写线程的并发约束 第 5 章
快照隔离 Snapshot Isolation 读取锚定一个序列号,不受后续写入影响 第 5 章

源码与调优

术语 英文 释义 相关章节
环境抽象 Env 把操作系统封装成统一接口的抽象层 第 8 章
迭代器 Iterator 统一数据遍历接口,组合模式构建复杂遍历 第 8 章
数据视图 Slice 指针 + 长度的零拷贝数据表示 第 8 章
内存分配器 Arena 批量申请统一释放的内存分配器 第 8 章
写停顿 Write Stall L0 文件过多时主动降速/停写的背压机制 第 3/6 章
写入缓冲区大小 write_buffer_size 单个 MemTable 的容量上限 第 6 章
数据块大小 block_size SSTable 数据块的未压缩大小 第 6 章

常见缩写速查

缩写 全称 一句话解释
LSM-Tree Log-Structured Merge-Tree 把随机写变成顺序写、用后台合并整理数据的存储范式
WAL Write-Ahead Log 先写日志再改数据的持久化保证机制
SSTable Sorted String Table 内部按键排序、不可变的磁盘数据文件
KV Key-Value 键值对,LevelDB 的基本数据模型
L0 / L1 / Ln Level 0 / Level 1 / Level N 磁盘数据的层级编号,越深数据越旧越有序
WA Write Amplification 写放大,实际写入量除以逻辑写入量
RA Read Amplification 读放大,一次逻辑读访问的物理数据量
SA Space Amplification 空间放大,存储量除以有效数据量
MPT Merkle Patricia Trie 以太坊用于组织状态数据的树结构,底层映射到键值对
OCC Optimistic Concurrency Control 乐观并发控制,提交时检查冲突的并发策略
MVCC Multi-Version Concurrency Control 多版本并发控制,用版本管理代替锁协调并发
P99 / P999 99th / 99.9th Percentile 第 99 / 99.9 百分位延迟,衡量尾部延迟
IOPS Input/Output Per Second 每秒 I/O 次数,衡量磁盘吞吐能力
SSD / HDD Solid State Drive / Hard Disk Drive 固态硬盘 / 机械硬盘,两类存储介质
FTL Flash Translation Layer 闪存转换层,SSD 内部的逻辑到物理映射层

术语之间的"从属关系"图

这张图展示了术语之间的从属关系:引擎分为写入、读取、后台三大块,它们共同产生"三放大"代价,并由序列号体系保证一致性。看表记术语,看图记关系——两者结合,术语才真正"入脑"。

⚠️ 注意:Compaction(文件合并)与 Compression(数据压缩)容易混淆,它们是两个完全不同的机制。
💡 提示:遇到"看着眼熟但说不清"的术语,回去重读对应章节,别只背释义。

快速自查:你掌握多少

读完本教程后,试着回答下面这些问题。能脱口而出的越多,说明掌握越扎实:

  1. LevelDB 为什么要把随机写变成顺序写?代价是什么?
  2. WAL 为什么必须先于内存写入?sync 选项影响什么?
  3. 读一个键时,查找顺序是怎样的?为什么是这个顺序?
  4. Compaction 的 Minor 和 Major 分别解决什么问题?
  5. 跳表、布隆过滤器、块缓存各在哪个环节起作用?
  6. 快照为什么创建是 O(1)?它如何影响空间回收?
  7. 写放大、读放大、空间放大如何此消彼长?调优怎么权衡?
  8. LevelDB 和 RocksDB 的核心差异是什么?何时选哪个?

如果第 5、7 题答起来费劲,建议回头重读第 4 章和第 3.4 节;如果第 8 题没把握,第 1.4 节和第 7 章会给你答案。

一张贯穿全书的记忆主线

最后,把所有术语串成一条主线,方便整体记忆:写入请求先记进 WAL(日志先行),再进 MemTable(内存缓冲);MemTable 满了冻结成 Immutable,后台刷成 L0 SSTable;Compaction 把数据逐层整理下沉;读取按"由新到旧"的顺序跨内存与磁盘查找,靠布隆过滤器和块缓存加速;序列号管理版本与快照,保证并发一致性;这一切的代价用三放大来衡量,用参数与键值设计来调优。

把这条主线背下来,你就有了一根"记忆挂钩",所有的术语、机制、参数都可以挂在这条线上。这正是本教程想带给你的最终收获——不是零散的知识点,而是一幅完整、自洽的 LevelDB 全景图。

记忆口诀:先记日志再进表(WAL + MemTable),冻结刷盘成文件(Immutable -> SSTable),后台合并永不停(Compaction),读取由新查到旧(Read Path),序列号管一切(版本 + 快照),三放大是成本账(WA/RA/SA),调优先改键再调参。

术语与概念的辨析提醒

附录最后,特别提醒三组容易被混淆的术语:

Compaction 与 Compression 不是一回事:Compaction 是"文件合并整理"(后台把多个小文件合成大文件),Compression 是"数据压缩"(用算法减小存储体积)。中文里都带"压缩"二字,英文拼写完全不同,机制也完全不同——前者动文件结构,后者动字节内容。

Sequence Number 与 Transaction ID 不同:序列号是全局递增的逻辑时钟,每次写操作分配一个,不区分"事务";事务 ID 是数据库事务系统的概念。LevelDB 没有完整事务,只有 WriteBatch 的原子批。

Table Cache 与 Block Cache 别混:前者缓存文件句柄和索引块("钥匙"),后者缓存解压后的数据块("货物")。两者的淘汰策略和生命周期都有差异,但都在读路径上协作。

这三组辨析理解到位,术语就不会再糊在一起了。

结语

术语表不是让你背的,而是"查漏补缺"的工具:读完正文后,扫一遍本表,凡是"看着眼熟但说不清含义"的条目,就回去重读对应章节。把术语从"眼熟"变成"能用",才是学习的目的。祝你顺利掌握 LevelDB,并在存储系统领域越走越远。

记忆口诀:把 LevelDB 想成一条"先记账、后理账"的流水线——WAL 记账(持久性)、MemTable 攒账(缓冲)、Compaction 誊抄(整理)、序列号管时间(一致性)、三放大是成本(调优)、Slice/Iterator/Env 是工具(源码)。

作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U