Mysql底层存储引擎

1.单值索引

1.索引

1.存储引擎是建立在表级别的。

2.索引是存储在磁盘中的。

3.B+树比B树的优点:

    在高度相等的情况下,B+树比B树存储的数据更多,因为每个点最大是16k

    用B+树存储而不用Hash存储的原因是:大部分数据查找的时候都不是等值查找。

    B+数存储的底层数据叶子节点是双向指针,非叶子节点是冗余索引,冗余索引没有数据

B数底层叶子节点是没有指针的,也没有冗余索引,非叶子节点要存储数据

在navicat中新建表的时候从“字段”移到选项上可以选择存储引擎。

MyISAM存储引擎(非聚集索引:数据和索引不放在一个文件里)

优点:可被压缩,节省空间,可以转化为只读表,提高检索效率

缺点:不支持事务

frm文件是 表结构信息

MYD文件是 表数据:D data

MYI文件是 表索引:I index

Memory存储引擎

每个表均以.frm文件存储

表级锁机制

不包含TEXT和BLOB字段

缺点:不支持事务,容易丢失,所有数据和索引存储在内存当中,断电就没了

有点查询速度快,

InnoDB存储引擎(聚集索引:数据和索引放在一块)现在用的最多的

frm文件是表结构信息

ibd文件是索引和数据放一块

InnoDB索引实现:

1.表数据文件本身就是按B+Tree 组织的一个索引结构文件

2.聚集索引-叶子节点包含了完整的数据记录

3.为什么INnoDB表必须有主键,并且推荐使用整型数的自增主键?不推荐使用UUID

    因为UUID是String类型的,既不是整型又不是自增类型。

    因为整型的数据比字符串类型的比大小速度更快,整型bigint也就8个字节,字符串可能很大。

    自增:非自增的会导致树节点的分裂,分裂之后还要做平衡。自增维护成本低。

4.为什么非主键索引结构叶子节点存储的是主键值?

2.联合索引的底层数据结构

联合索引的时候先比较第一个字段的大小,第一个大小相同再比第二个的值

最左前缀:

用到索引的几种方式:①name...②name,age...③name,age,position...

eg:下面三条只有第一条用到了索引。

原因:只有采用了name之后age才是有序的,如果不采用name属性,在所有数据中,age不是有序所以还是要全表扫描

          eg:搜索age = 30 ,找到第一个数据后,第二个数据是31,但是还是要继续找后面的数据,第四个也是30.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值