我已经阅读mysql内部结构几个星期了,有一个问题很困惑
我总是这样。我们都知道叶页充当 B+ 树数据结构中的索引,并且
存储在非叶子页上的真实数据。但是我怎么知道哪一个是
叶子页还是非叶子页?有人请告诉我吗?谢谢。
最佳答案
页眉中有一个 PAGE_LEVEL 字段。如果为零,则为叶页。
https://github.com/twindb/undrop-for-innodb/blob/master/c_parser.c#L657
int leaf_page = mach_read_from_2(page + PAGE_HEADER + PAGE_LEVEL) == 0;
We all know leaf page acts as index in a B+ tree data structure and the real data stored on the non-leaf page.
这句话没有道理。您可以说表存储在名为 PRIMARY
的索引中,或者(如果使用唯一索引作为主索引,则为 GEN_CLUSTER_INDEX
)。 PRIMARY 索引是一棵 B+ 树。索引的键是主键字段。在非叶子页面中,键是键,值是下面页面的页面 id。在叶子页面中,键仍然是键,但值是表字段的其余部分。
二级索引也是一棵B+树。索引的键是辅助键字段,值是记录的主键。
关于mysql - innodb如何知道一个页是叶子页还是非叶子页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52941537/