Ch06-AmDB 之 Executor
December 6, 2022
AmDB 之 Executor
...AmDB 之 Executor
...AmDB 之 Index
...Chunk 由多个 Row 组成
...AmDB 之 ID 生成器
...AmDB 之编码
...AmDB 为本人独立研发的一款单机版关系型数据库管理系统,旨在更加深入的学习数据库的相关知识,所涉及到的功能点会逐渐向 MySQL 对齐,后续应该会考虑完全兼容 MySQL 相关协议。
...1. B+ Tree # B+ Tree 是平衡搜索树的一种,是为了磁盘搜索而生的。它一般将磁盘块大小作为叶子节点的大小,方便数据读取,插入,原地更新等。B+ Tree 的查询/插入/删除 的时间复杂度都是 O(LogN) 2. LSM Tree # LSM Tree 的核心思想是将离散的随机读写请求转换成批量的顺序读写请求。它采用的是 Append Only 方式对数据插入,更新(无法原地更新)。查询顺序为如下步骤。 Memtable -> Frozen Memtable -> L0 -> L1 -> ··· -> LN 3. LSM Tree Compaction # Compaction 实际是数据的重新整合,实质是多路归并排序,主要作用是减少 SSTable 的数量,提升查询性能。但是它资源耗费比较高(IO:需要大量的读取与写入操作;CPU:涉及 checksum 计算,rowkey 比较;性能抖动) 3.1 Amplification # 名词 英文 说明 读放大 Read Amplification 本次扫描的数据量/实际返回的数据量 写放大 Write Amplification 磁盘写入的数据量/实际的数据量 空间放大 Space Amplification 存储的数据量/实际的数据量 3.2 Compaction Strategy # 不同的 Compaction 策略是对写放大、空间放大、读放大的一个权衡。 ...
LevelDB 事务
...在 Minor Compaction 完成的时候,会对新生成的 version 计算一次 compaction_level_ 和 compaction_score_。这两个参数决定了当前 version 的 是否需要做 Major Compaction。
...Minor Compaction 流程
...