我知道B+tree在内存中是如何工作的,但我不明白像MySQL这样的数据库是如何使用它的。
在没有任何优化的情况下,如果任何数据被更新/插入,树节点(叶节点或非叶节点)应该保存到磁盘,并且如果有人搜索,应该从磁盘加载。
如何将B+tree节点序列化为磁盘上的一个文件?磁盘中的随机访问似乎不可避免。
发布于 2021-09-01 12:36:53
是的,随机访问在InnoDB中持续发生。索引的B+Tree数据结构被写到表空间中的许多页中,而不一定是连续的页。每一页都有指向下一页的链接,下一页可能位于表空间中的任何位置。
这可以通过将页面加载到RAM和innodb缓冲池来缓解,在该缓冲池中,随机访问不会产生开销。
如果您对InnoDB如何在页面上存储索引的详细信息感兴趣,我建议您学习Jeremy Cole的一系列博客文章:https://blog.jcole.us/innodb/
https://stackoverflow.com/questions/69013569
复制相似问题