Mysql innodb如何知道页面是叶子页面还是非叶子页面?

Mysql innodb如何知道页面是叶子页面还是非叶子页面?,mysql,innodb,b-tree,Mysql,Innodb,B Tree,我已经阅读mysql内部代码几个星期了,有一个问题让我困惑不解 我们都知道叶页在B+树数据结构中充当索引,并且 存储在非叶子页面上的真实数据。但我如何知道哪一个是 页页还是非页页页?请有人给我点灯。页眉中有一个页面级别字段。如果它是零,那就是一页叶子 我们都知道叶页在B+树数据结构中充当索引,并且 存储在非叶页上的真实数据 这句话没有意义。可以说,表存储在名为PRIMARY的索引中,或者(GEN\u CLUSTER\u index如果将唯一索引用作主索引)。主索引是一个B+树。索引的键是主键字

我已经阅读mysql内部代码几个星期了,有一个问题让我困惑不解

我们都知道叶页在B+树数据结构中充当索引,并且

存储在非叶子页面上的真实数据。但我如何知道哪一个是


页页还是非页页页?请有人给我点灯。

页眉中有一个页面级别字段。如果它是零,那就是一页叶子

我们都知道叶页在B+树数据结构中充当索引,并且 存储在非叶页上的真实数据

这句话没有意义。可以说,表存储在名为
PRIMARY
的索引中,或者(
GEN\u CLUSTER\u index
如果将唯一索引用作主索引)。主索引是一个B+树。索引的键是主键字段。在非叶子页面中,键是键,值-是下面页面的页面id。在叶页面中,键再次是键,但值是表字段的其余部分


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

页眉中有一个页面级别字段。如果它是零,那就是一页叶子

我们都知道叶页在B+树数据结构中充当索引,并且 存储在非叶页上的真实数据

这句话没有意义。可以说,表存储在名为
PRIMARY
的索引中,或者(
GEN\u CLUSTER\u index
如果将唯一索引用作主索引)。主索引是一个B+树。索引的键是主键字段。在非叶子页面中,键是键,值-是下面页面的页面id。在叶页面中,键再次是键,但值是表字段的其余部分


二级索引也是B+树。索引的键是次键字段,值是记录的主键。

检查哪个讨论了您的问题(我想)。非叶页是在B树的中间发生的。在B树的最底部,当不可能进行更多的遍历时,您将访问叶页面。它们包含索引中的所有信息,如果您涵盖其他栏目,可能还不止这些。非常感谢:DCheck哪个讨论了你的问题(我想)。非叶页是在B树的中间发生的。在B树的最底部,当不可能进行更多的遍历时,您将访问叶页面。它们包含索引中的所有信息,如果您涵盖其他栏目,可能还不止这些。非常感谢:D
int leaf_page = mach_read_from_2(page + PAGE_HEADER + PAGE_LEVEL) == 0;