mysql 记录为叶子结点_Mysql的B+树索引非叶子节点到底包不包含真实数据?

主要还是表达不一致造成了理解上的困扰,不如结合代码再来看看:

private static final class Node {

private int m; // 子节点的数目

private Entry[] children = new Entry[M]; // 存储子节点的数组

// 创建一个有k个子节点的结点

private Node(int k) {

m = k;

}

}

// 内部结点(internal nodes): 只用到了key和next

// 叶子结点(leaf nodes): 只用到了key和val

private static class Entry {

private Comparable key;

private final Object val;

private Node next;

public Entry(Comparable key, Object val, Node next) {

this.key = key;

this.val = val;

this.next = next;

}

}

在美团的上下文中:磁盘块 == Node

指引搜索方向的数据项 == Entry.key

真实数据 == Entry.val

指针 == Entry.next

在《高性能MySQL》的上下文中:索引列 == Entry.key

指向下级节点的指针 == Entry.next

如此一来,世界又和谐了。

另外有一个200多页的小册子《Modern B-Tree Techniques》安利给题主(当然这本书是2011年的了,对某一具体DB的评价可能不再准确,需要留心)。

里面除了B+ Tree的基础知识以外,还包括了:一些优化方法

如何与事务相结合

查询的时候怎么用的等话题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值