【发布时间】:2021-10-12 09:14:33
【问题描述】:
我正在尝试了解 InnoDB 索引,但有些困惑。
InnoDB 索引(集群和辅助)是仅在缓存中构建还是在磁盘中构建并加载到缓存中?
由于聚集索引使用 B+ 树,叶页是在缓存中还是在磁盘中?它们是否包含实际的行数据或指向行数据的指针?
请随意参考任何相关文档或文章:-)
【问题讨论】:
-
我已经编辑了这个问题,但它仍然关闭。我怎样才能重新打开它?
-
所有索引和数据块都保存在磁盘上;它们被缓存在内存中的“buffer_pool”中。这同样适用于叶节点和非叶节点(除了更频繁地使用非叶节点,因此更有可能留在缓存中)。缓存(大致)是 LRU。缓存发生在读取和写入时。所有查询都作用于缓存中的块。指向行数据的“指针”是
PRIMARY KEY的列,它们被复制到二级索引中。 (我投票支持开放;如果重新开放,我可能会提供更多详细信息。)
标签: mysql indexing memory-management innodb b-tree