博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库面试总结
阅读量:5121 次
发布时间:2019-06-13

本文共 1294 字,大约阅读时间需要 4 分钟。

背景:将找工作过程中,数据库相关的知识在此总结,一定要静心筛选,方便以后查看。——20190303

平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

平衡二叉树特点:

(1)非叶子节点最多拥有两个子节点;

(2)非叶子节值大于左边子节点、小于右边子节点;

(3)树的左右两边的层级数相差不会大于1;

(4)没有值相等重复的节点;

 

B树和平衡二叉树稍有不同的是B树属于多叉树又名平衡多路查找树

B树的特点:

B树相对于平衡二叉树的不同是,每个节点包含的关键字增多了,特别是在B树应用到数据库中的时候,数据库充分利用了磁盘块的原理(磁盘数据存储是采用块的形式存储的,每个块的大小为4K,每次IO进行数据读取时,同一个磁盘块的数据可以一次性读取出来)把节点大小限制和充分使用在磁盘快大小范围;把树的节点关键字增多后树的层级比原来的二叉树少了,减少数据查找的次数和复杂度;

B+树的特点

1、B+树的层级更少:相较于B树B+每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快;

ps:B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加

2、B+树查询速度更稳定:B+所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定;

3、B+树天然具备排序功能:B+树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。

4、B+树全节点遍历更快:B+树遍历整棵树只需要遍历所有的叶子节点即可,,而不需要像B树一样需要对每一层进行遍历,这有利于数据库做全表扫描。

B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点本身存有关键字其数据的地址,所以这种数据检索的时候会要比B+树快。

相同思想:采用二分查找和数据平衡策略来提升查找数据的速度

不同点:这些数据结构在演变的过程中通过IO从磁盘读取数据的原理进行一步步的演变,每次演变都是为了让节点的空间更加合理的运用起来,从而使树的层级减少,打到快速查找的目的。

 

MySQL高级 之 explain执行计划详解

ps: 详细讲解explain中各个字段的含义

id ,select type,table,type,key,exta

type:访问类型,sql查询优化中一个很重要的指标,结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,好的sql查询至少达到range级别,最好能达到ref

当发起一个被索引覆盖的查询(也叫作索引覆盖查询)时,在EXPLAIN的Extra列可以看到“Using index”的信息

  

 

 

转载于:https://www.cnblogs.com/lixuwu/p/10464053.html

你可能感兴趣的文章
名词缩写
查看>>
request实现页面包含
查看>>
编写一个基本的连接池来实现连接的复用&一些工程细节上的优化
查看>>
Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋
查看>>
caffe-cifar的训练以及测试例子
查看>>
Total commander 使用教程
查看>>
我在使用的小工具(分享给大家)
查看>>
EXCEL 收藏
查看>>
计算机英语学习
查看>>
IDEA 中生成 Hibernate 逆向工程实践
查看>>
接口练习2
查看>>
3.CSS -高级选择器
查看>>
Java继承中成员方法的overload(重载/过载)
查看>>
Java新集合
查看>>
Linux系统目录
查看>>
有关webapplicationcontext的初始化
查看>>
第一个比较困扰的问题汉诺塔递归问题
查看>>
CSS基础学习(二) 之 width min-width max-width属性
查看>>
css基础参考文档
查看>>
通过反射比较两个相同类型的对象中的值是否相同
查看>>