首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >innodb如何知道一个页面是叶页还是非叶页?

innodb如何知道一个页面是叶页还是非叶页?
EN

Stack Overflow用户
提问于 2018-10-23 05:07:52
回答 1查看 171关注 0票数 0

几个星期以来,我一直在阅读mysql的内部信息,有一个问题令我困惑。

me always.We都知道叶页在B+树数据结构中充当索引,并且

存储在非叶page.But上的真实数据如何知道哪一个是

页页还是非叶页?有人点亮我吗?tks。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-24 04:40:17

页面标题中有一个PAGE_LEVEL字段。如果是零,那就是一页叶子。

parser.c#L657

代码语言:javascript
复制
int leaf_page = mach_read_from_2(page + PAGE_HEADER + PAGE_LEVEL) == 0;

我们都知道叶页在B+树数据结构中充当索引,而实际数据存储在非叶页面上。

这句话说不通。可以说,表存储在名为PRIMARY或(如果使用唯一索引作为主索引时为GEN_CLUSTER_INDEX)的索引中。主要索引是B+树。索引的键是主键字段。在非叶页中,键是键,下面是页的值-是页id .在叶页中,键再次是键,但值是表字段的其余部分。

辅助索引也是B+树。索引的关键字是次键字段,值是记录的主键。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52941537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档