最近学的东西

3.19
主要学习了存储的相关概念。
1. 为什么数据库用 B/B+-tree 而不使用平衡树?




还是 tradeoff。数据库有大量的数据存放在磁盘中,磁盘 \(IO\) 的速度 \(<<\) 内存 \(IO\) 的速度,所以问题转化为最小化磁盘 \(IO\) 的速度。而 B/B+ tree 更类似为分块(根号)类型的树,若一个块有 \(B\) 的数据,树高为 \(D\),那么磁盘 \(IO\) 次数为 \(D\),大概可以存 \(B^D\) 的数据。(当然 B tree 不是,B tree 非叶节点也有数据,若一个数据所占空间为 \(dm\),可能一个块只有 \(B/dm\) 个数据)。 而平衡树更类似为 \(log\) 类型的树,适合在内存里使用。
2. SSD 的写放大

3. NOR Flash & NAND Flash

NOR 读取速度快,适合做 ROM;NAND 写入速度快,应用最普遍。
3.20
太久没看代码了,有点生疏,还好有 cursor 大人。
今天看了 github 别人写的 femu 的文档还有 nvme-io.c,对 femu 的处理模式有了更深的理解。

浙公网安备 33010602011771号