MySql 高阶 概念(了解即可)

在这里插入图片描述
mysql 分为4层结构:
连接层:负责处理链接,鉴权,安全。
服务层:负责sql接口,sql分析,sql优化,sql缓存。
引擎层:负责执行服务层的操作,不同的引擎拥有不同的特性。(索引在该层)
存储层:将数据存储到文件上。

输入 show engine; 可以查询到mysql 支持的存储引擎:
在这里插入图片描述
目前只有 InnoDB 支持 事务 。

mysql 5.5之后默认使用的就是 innoDB
想设置其他引擎可以在创建表时末尾设置 engin = xxxx:
在这里插入图片描述
在这里插入图片描述
InnoDb:默认的引擎,如果需要支持事务和外键,那就是唯一的选择。
MyISAM: 读取速度快,更新速度慢,不支持事务,已经被 mogoDB取代。
Memory:数据只存在内存中,已经被redis 取代。

一、什么是数据库索引:

索引(index)是帮助数据库提高获取数据效率数据结构

例如:下面的数据为例,当要查找45时。如果全文检索,从上到下需要比对7次,如果二叉树索引只需要2步就差查询到结果。
在这里插入图片描述

索引的数据结构

在这里插入图片描述

数据结构的特点

在这里插入图片描述

数据结构的进化:

1、二叉树: 顺序插入时,会导致层级较深。

在这里插入图片描述

2、红黑树:(平衡二叉树)会自平衡,但是在大数据量情况下,层级也会很深。

在这里插入图片描述

3、B-tree (多路平衡查找树)下面的例子是 5阶的B-tree,B树的缺点是,顺序查找速度慢。

在这里插入图片描述

4、B+树(重点)

1、所有数据都保存在叶子节点中:非叶子节点仅用于索引,不保存数据记录,这样可以提高查询性能,因为查找任何数据都必须从根节点遍历到叶子节点。
2、叶子节点之间通过链表连接:所有叶子节点按关键字的大小顺序链接,形成一个有序链表,这有利于范围查询和顺序访问。
3、更高的分支度:相较于B树,B+树每个节点可以存储更多的关键字,减少了树的高度,从而减少了磁盘I/O次数,提高了查询效率。
4、顺序访问性:由于叶子节点通过链表连接,B+树支持顺序遍历,这对于需要顺序访问数据的场景非常有用。
5、适应磁盘读写:B+树的节点大小通常与磁盘页的大小相同,这使得B+树能够很好地适应磁盘读写操作,减少磁盘I/O开销。

在这里插入图片描述
B+Tree在线演示地址:https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

B+tree 存放数据的查询效率问题

高度为2 时: 如果主键是bigint 1171 *16 = 18736 条数据 如果不 int 就是4个字节还可以翻倍
高度为3 时: 1171 * 1171 *16 = 21939856 大概2千多万条数据。所以通过主键查询效率很高。

Hash 索引:

hash索引就是采用hash算法,将key value 存储到hash 表中,如果有hash冲突就,用链表的方式解决。
有点单个数据查询速度快,但是不支持范围查询,不支持排序操作。 同理于 hashMap 和 redis
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值