数据库索引及树形结构简介

数据库索引及树(1)

关系型数据库

OLTP:

	是传统的关系型数据库,主要操作增删改查,强调事务一致性,比如银行系统、电商系统。常见的		
	数据库:mysql,Oracle等。

OLAP:

	是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,
    提供直观简单的结果。常见的列式数据库有: Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、
	Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、
  LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。目前主要了解   clickhouse

在这里插入图片描述

mysql 使用B+树索引;

mysql-数据都是存储在磁盘里,索引也是,当程序加载时,

会将索引缓存到内存里面,mysql默认的就是innodb引擎,(5.1之前好像不是)
在内存和磁盘数据交互时,一般情况下有一个最小逻辑单元,页,是4k或8k,每一个磁盘块大概是16kB
读写IO。如何优化?减少次数和每次的量

哈希表,通过hash算法找到对应key的hash值即可;存在hash冲突。数据散列,产生大量线性查询

树 --------二叉树- 红黑树 - B树 - B+树 - BST - AVL

二叉树

  • 节点有序-算法二分查找-每一个节点有,且只有两个分支 如果其是一直递增或递减,

  • 在这里插入图片描述

    将会退化成链表,要避免的话,让树节点左旋或者右旋让树平衡 即 AVL树
    在这里插入图片描述

AVL(平衡二叉树)

  • 节点有序-最短子树跟最长子树高度只差不能超过1
    相当于通过损失插入性能来弥补查询性能,但是如果读写请求一样多的时候怎么办?即红黑树
    在这里插入图片描述

红黑树(平衡二叉树)

  • 让树节点左旋或者右旋让树平衡 或变色的方式

  • 最短子树跟最长子树高度不超过两倍即可-查询性能和插入性能取得一个近似平衡
    在这里插入图片描述

    随着数据的插入,树的深度会变深,意味则IO的次数会越来越多,影响读取效率
    

    把原来有序的二叉树变成有序多叉树?但是原来的二插查找将不会是左小右大,将会是范围即B树

B树
在这里插入图片描述

  • 递归分支查过4时, 即达到时向下分
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

B+树

  • 加指针在B树的基础上扩容,在节点数据在同级中有序
  • 和B树的区别如下,左图B树,右图B+树
    在这里插入图片描述

以上图片来自百度百科和视频链接内容,如有问题可联系删除,谢谢
https://www.bilibili.com/video/BV1ov41137Vo?p=4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值