数据库内核开发

数据库基本架构

屏幕截图 2023-06-15 173746

关系数据库结构

屏幕截图(1)

Buffer POOL缓存机制

屏幕截图(8)

因为我们的数据库中的数据是放在磁盘里的,但我们每次读取都去读磁盘,显然这样效率就大寄特寄了,所以类似于cup与主存之间,我们也需要一个缓冲区来加快读写速率。

B+Tree

1.叶结点大小和存储单元大小一致,能起到预读数据效果

2.叶节点有链接关系,可以遍历

3.只有叶结点放数据

屏幕截图 2023-06-22 185507

B+tree搜索过程:

比如搜索29,在磁盘块1中可以看出,29在p2所指区域

在p2区域,可以看出29小于36在p1区域

最后找到磁盘块7,搜索到29

B+树的删除过程

屏幕截图(14)

删除7

屏幕截图(16)

屏幕截图(17)

删除11

屏幕截图(18)

B+树插入过程

插入40

屏幕截图(15)

LSM-Tree架构

屏幕截图(9)

用户输入的数据会先存放在memorytable中,当memorytable中的数据达到一定阈值,memorytable就会变成一个Frozen~(只读),然后生成一个新的memorytable,把Forzen写入磁盘

Compaction

屏幕截图(10)

Compaction操作是将多个SSTable合成一个,能提高查询效率,但提高了能耗

屏幕截图(11)

Compaction三个概念:1.对写放大2.空间放大3.读放大

屏幕截图(12)

比较常用的策略

屏幕截图(13)

三种策略对比