我已经阅读了几周的mysql内部知识,而这个问题令人困惑
我总是。我们都知道叶页在B +树数据结构中充当索引,并且
非活页上存储的真实数据。但是我怎么知道是哪一个
活页还是非活页?请问有人启发我吗?
答案 0 :(得分:2)
页面标题中有一个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;
我们都知道叶页充当B +树数据结构中的索引,并且 存储在非页面上的真实数据。
这句话没有道理。您可以说表存储在名为PRIMARY
的索引中,或者(如果将唯一索引用作主索引,则为GEN_CLUSTER_INDEX
)。主索引是B +树。索引的键是主键字段。在非叶子页面中,键是键,值-是下面页面的页面ID。在叶子页中,键再次是键,但值是表字段的其余部分。
二级索引也是B +树。索引的键是辅助键字段,值是记录的主键。