知识整理(五)

1.B+树和b-树的区别

b-树是一个多路自平衡的的搜索树,她类似于普通的平衡二叉树,不同的一点是b-树允许每个节点有更多的子节点,

b-树具有如下特点

1.所有的键值分布再整棵树中(索引值和data都在每个节点里)

2.任何一个关键字出现只出现在一个节点中

3.搜索有可能在非叶子节点结束(最好O(1))就能找到数据

4.在关键字全集里做一次查找,性能逼近二分查找

b-树的应用:

b-树是专门为外部存储器设计的,如磁盘,它对于读取和写入大块数据有良好的性能,所以一般用在文件系统及数据库中

延伸:内存访问的时间约为50ns,而磁盘在10ms左右,速度相差了近5个数量级,说明程序大部分时间会阻塞在磁盘io上,因此提高程序性能,只能减少io次数,而对于像avl树和红黑树这类平衡二叉树在设计上无法迎合内存,并且平衡二叉树的高度较高,平衡二叉树是通过旋转来完成平衡的,如果无法一次性加载到内存完成旋转操作

空间局部性原理:

如果一个存储器的某个位置被访问,那么在它附近的位置也会被访问

多叉的好处是降低了高度,

B+树是b树的变形体,也是一种多路搜索树,它与b-树的不同之处在于

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素

B+树相对于b-树的优势:

1.io次数更少

2.查询性能稳定

3.范围查询简便

平衡二叉树有可能形成线性结构

2.数据库隔离级别,幻读和不可重复读的区别

不可重复读的的重点是修改

同样的条件,你读取过的数据,再次读取出来发现值不一样了

幻读的特点在于新增和删除

同样的条件,第一次和第二次读取的记录数不一样

延伸:事务的隔离级别

1.read_uncomited  读未提交,会造成脏读,不可重复读,幻读

2.read_commited 读已提交,会造成 不可重复读,幻读

3.repeatable_read 防止不可重复读,脏读,但不能避免幻读

4.SERIALIZABLE 此级别下事务是顺序执行的,可以避免上述级别的缺陷,但开销较大

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值