B/+、索引原理

1:B树

 

 

 见图知义:B树本质为平衡二杈树,但在索引中节点的检索会进行I/O操作,为了减少节点读取节点的次数(树的高度),

      将平衡二叉树优化为平衡多杈树。举例如下,查找28,根节点常驻内存无需I/O,定位到P2指针,

         P2指针磁盘读取磁盘块3,I/O次数为1,再次定位读取磁盘块8并匹配到28,查询结束,至此共只需2次I/O开销。

      I/O开销为h-1,即O(h)=O(logdN),出度d一般大于100,故而对于大数据来说树的深度也不会过深。

      此外,在读取某个节点时,根据局部性原理,会发生页预读,再次优化I/O次数(一般页为 4K,一般将节点设置为一页,计算机存储按页对齐,?hook)

2:B+,

  

 

      1°:B+所有关键词均在叶子节点,并且为叶子结点建立链指针(顺序访问指针)。B+适合做文件检索,Mysql的两大引擎均用B+索引。

      2°:innodb主要为聚合索引,索引文件包含所有数据项

        3°:主索引与辅索引

3:建立索引时:建立前缀索引注意字段选择性;能扩展索引尽量不新建(索引维护与增删开销);避免隐式转换

 

参考博文:http://freewill.top/2017/07/21/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%EF%BC%887%EF%BC%89%EF%BC%9A%E6%95%B0%E6%8D%AE%E5%BA%93%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86%E5%8F%8A%E4%BC%98%E5%8C%96/

 

posted @ 2020-06-02 02:03  异或门  阅读(232)  评论(0编辑  收藏  举报