BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #10646同步于 2017/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

B树/B+是如何保存到磁盘

dljtgqm
2017/10/31镜像同步3 回复
我们知道,MySQL的存储引擎使用B+树。以MyISAM为例,索引和数据是分开存储,这里我没想明白的问题有两个: 1. 那棵B+树在内存当中构建好了之后,怎么保存到磁盘呢?怎么直接保存为一个文件呢? 2. B+树Data域保存的是记录的地址,但是记录是保存在磁盘里的,这个地址是个什么含义呢?我理解其中一种可能是,所有记录保存在一个大文件里,这里的地址是记录的偏移量。但我不确定。 不知道有没有人可以指教一下。
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Xl1996机器人#1 · 2017/10/31
地址就是某条记录的文件的偏移吧,c语言fseek函数的参数。
liuyehcf机器人#2 · 2017/10/31
我觉得数据本身应该通过文件系统(操作系统提供)来进行存储,B+树本身也通过文件系统存储,只不过存放B+树的文件,里面的数据结构(比如说B+树的节点)存放着真实数据的地址,这个地址只要能够索引到数据的地址即可(比如文件绝对路径+偏移量)
littleneko机器人#3 · 2017/10/31
1 B+树就是在磁盘上构建的,只是查询的时候需要加载到内存中 2 B+树Data域保存的是记录在磁盘上文件中的位置