数据库索引的实现

B树,B+树:

https://www.jianshu.com/p/332caf8bed3a

https://blog.youkuaiyun.com/qq_30431719/article/details/81360169

一个M阶B树:

  1. 根节点为空至少有一个关键字和两个子节点;
  2. 非根节点有k个关键字[⌈M/2-1⌉,M-1],i个子节点[⌈M/2⌉,M];

一个M阶B+树:

  1. 根节点为空至少有一个关键字和两个子节点;
  2. 非根节点有k个关键字[⌈M/2⌉,M],i个子节点[⌈M/2⌉,M];

预读:磁盘预读的长度一般为页的整倍数; 数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入 。

B+树的优点:

1、B+树的磁盘读写代价更低:

B+树的所有根节点都不带有任何数据信息,只有索引信息,所有数据信息全部存储在叶子节点里,这样,整个树的每个节点所占的内存空间就变小了,读到内存中的索引信息就会更多一些,相当于减少了磁盘IO次数;

2、B+树的数据信息遍历更加方便:

B+树只要遍历叶子节点就可以实现整棵树的遍历,而B树不支持这样的操作(或者说效率太低);

3、B+树的查询效率更加稳定:

由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

InnoDB和MyISAM主键索引的实现区别,一个聚集一个非聚集:

http://www.cnblogs.com/vicenteforever/articles/1613119.html

http://database.51cto.com/art/200905/124370.htm

转载于:https://my.oschina.net/u/2286010/blog/731937

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值