这是一个创建于 1995 天前的主题,其中的信息可能已经有所发展或是发生改变。
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 )
谢谢