请教下 mysql 的 B+ 树在实际硬盘上怎么保存的?

2020-03-23 16:44:45 +08:00
 Newyorkcity
B+ 树的结构我大致知道,我想问的是,emmmm,怎么说呢,那我换个问法,就是我如下关于 mysql 的工作想法,是否正确?

『电脑关机的时候,mysql 把索引集中写在硬盘的某一块地方里。电脑开机,mysql 启动,它找到这一页索引加载到内存,然后比如现在要找一个被索引列的列值 = 2048 的记录,那么就在内存的索引里查询,查到最后一个 B+ 树的内部节点,这个内部节点告知 索引列值为 2000 - 3000 的记录都记录在硬盘 0xF000 处,于是 mysql 将磁盘上地址从 0xF000 到 0xF000+m*1000 的所有数据全部拉入内存,然后用偏移量 48m 命中 2048 的那条记录 』 ?
(其中 0xF000+m*1000 是一条记录占用的单元数量)
(其中 2000 - 3000 有 1000 个数据 是因为 1000m 最接近但没有超过对硬盘分页的话的一页的大小?比如 1 页 4KB,一条记录的大小 m = 2word = 16byte 那 1000m = 16kb,就不对了,应该是 1000/16 = 62 )
谢谢
650 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/655416

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX