更新RocksDB简介学习

This commit is contained in:
LingZhaoHui 2023-09-23 16:56:57 +08:00
parent 541b57faf1
commit 486c9a3966
Signed by: zeekling
GPG Key ID: D96E4E75267CA2CC
1 changed files with 19 additions and 22 deletions

View File

@ -70,33 +70,30 @@ LSM树压缩策略需要围绕三个问题进行考量
### size-tiered 策略
Size-tiered策略是一种常用的Compaction策略。
Size-tiered策略是一种常用的Compaction策略。它可以有效地减少SSTable的数量和大小降低查询时的磁盘读取次数和延迟提高LSM树的查询性能和空间利用率。
- 统计每个层级中的SSTable数量和总大小。当某个层级中的SSTable数量达到预设的阈值N后就会触发Compaction操作。
- 将该层级中的所有SSTable按照大小分成若干组。每组的大小大致相等。
- 对于每组SSTable选择一个合适的合并策略。常用的合并策略包括两两合并Two-Level Merge、级联合并Cascade Merge和追加合并Append Merge等。
- 执行合并操作将同一组中的SSTable合并为一个更大的SSTable并将合并后的结果写入到下一层级的队尾。这样可以保持每个层级中的SSTable大小相近从而减少后续Compaction操作的成本。
- 更新索引和元数据信息记录新生成的SSTable的位置、大小和版本号等信息以便后续的查询和Compaction操作。
- 删除原有的SSTable文件释放磁盘空间。如果需要保留一定数量的历史版本则可以将旧的SSTable文件移动到历史版本目录中以便后续的查询和回滚操作。
![pic](https://pan.zeekling.cn//flink/basic/state/rocksdb_0003.png)
### leveled 策略
Leveled策略是LSM树中的另一种Compaction策略。
Leveled策略是一种基于有序SSTable的高效Compaction策略。它可以有效地减小空间放大和读放大问题提高LSM树的查询性能和空间利用率。
当一个 SSTable 中的数据量达到一定大小时,它就会被合并到上一层,这个过程被称为 L0 合并Level 0 Merge。在 L0 合并时,相邻的 SSTable 会被合并成一个更大的 SSTable这样可以减少 SSTable 的数量,降低查询时需要扫描的 SSTable 的数量,从而提高查询效率。
在 L0 合并完成之后,新生成的 SSTable 会被插入到第 1 层,如果第 1 层的 SSTable 数量超过了限制,那么就会进行 L1 合并,将相邻的 SSTable 合并成一个更大的 SSTable同样的过程会在第 2 层、第 3 层等等一直进行下去,直到最高层。
当进行查询时LSM 树会从最底层开始查找,如果在当前层的 SSTable 中找不到需要的数据,就会往上一层查找,直到找到需要的数据或者到达最高层。由于每一层的 SSTable 都是有序的,因此可以使用二分查找等算法来加速查询。
![pic](https://pan.zeekling.cn//flink/basic/state/rocksdb_0004.png)
## 并发控制
## 内存管理
## 日志系统
## 文件格式