MySql存储引擎

一、 MyISMA(B+非聚簇索引)

1.MyISAM主要特点

MySql5.5之前存储引擎默认是MyISAM,该存储引擎并发小(表级锁)、不支持事务,所以适用的场景比较少,主要特点如下:
(1)不支持事务。
(2)不支持外键,如果强行增加外键不会报错,只是外键不起作用。
(3)对数据的查询缓存只缓存索引,不缓存数据并且是利用操作系统自身的缓存。
(4)默认的锁粒度是表级锁,并发量小、加锁快、锁冲突小,所以不太会发生死锁。
(5)支持全文索引,但是MySql的全文索引一般不会用,都会用其他成熟的解决方案(ElasticSearch,Solr等)。
(6)数据库所在主机如果宕机,MyISAM数据文件容易损坏,难以恢复。
(7)数据的物理组织形式是非聚簇索引,索引和数据分开存储,主键索引树的叶子结点上只存放源数据的物理地址值。

2.MyISAM原理
在这里插入图片描述
MyISAM使用的B+非聚簇索引数据结构,也就是数据和索引没有在一块存储。数据库中每张表至少生成三个文件:存放表结构的文件、存放索引的文件、存放源数据的文件。

如上图所示,每个枝节点的数据会在叶子结点中重复出现,叶子结点之间有联系,并且叶子结点中有一块区域存放的是源数据物理地址值,通过这个物理地址值可以检索到源数据。

当新创建一张表时,MySql会默认创建一个主键索引。当通过主键索引查找数据时,MySql会先从主键索引树中查找到对应的叶子结点的位置,再通叶子结点中存储的源数据的物理地址值找到源数据。当通过你自己创建的其他索引查找数据时,先从其他索引树上找到对应的叶子结点,再通过叶子结点中存储的主键索引节点的位置,找到主键索引树上对应的叶子结点,最后通过叶子结点中存储的源数据的物理地址值找到源数据。

二、InnoDB(B+聚簇索引)

1.InnoDB的主要特点

从MySQL5.5版本之后,MySQL的默认内置存储引擎已经是InnoDB了,他的主要特点有:
(1)支持事务。默认的事务隔离级别是可重复读。
(2)支持外键
(3)支持缓存管理,通过缓存池将索引和数据全部缓存起来,提高索引效率。
(4)锁的粒度为行级锁,可以支持更高的并发量。
(5)灾难恢复性好
(6)数据的物理组织形式是聚簇索引,索引和数据存储在一块,都位于B+树的叶子结点上。

2.InnoDB的原理

在这里插入图片描述
InnoDB使用的B+聚簇索引数据结构,也就是数据和索引存储在一块。数据库中每张表至少生成两个文件:存放表结构的文件、存放索引和数据的文件。

如上图所示,每个枝节点的数据会在叶子结点中重复出现,叶子结点之间有联系,并且叶子结点中有一块区域存放的就是源数据。

当新创建一张表时,MySql会默认创建一个主键索引。当通过主键索引查找数据时,MySql会从主键索引树中查找到对应的叶子结点的位置,进而直接找到源数据。当通过你自己创建的其他索引查找数据时,先从其他索引树上找到对应的叶子结点,再通过叶子结点中存储的主键索引节点的位置,找到主键索引树上对应的叶子结点进而直接找到源数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值