MySQL常见的三种存储引擎

时间:2024-04-14 13:42:39

1、InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都
是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。
InnoDB特点:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需
要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

InnoDB的聚簇索引就是表本身,它由表的数据与B+Tree索引组成。

其中内部节点中包括索引列和指向下一节点的指针,而叶子节点包括表所有列上的数据,比如主键列,MVCC列,回滚列其它列等等。所以我们在查询数据时直接就能够查找到我们想要的数据。

InnoDB的二级索引(非聚簇索引)

内部结点中包含索引列与指向下个节点的指针,而叶子节点则包括索引列和主键值。这也就造成了如果我们想要通过二级索引去查询一条数据的啥时候需要两轮的查询,第一轮是通过B+Tree查找到主键值,第二轮就是拿着主键值再经过一次B+Tree的查找找到真实的值。

InnoDB也使用B+Tree作为索引结构。第一个重大区别是InnoDB的数据文件本身就是索引文件。MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。

MySQL常见的三种存储引擎

2、MyISAM存储引擎
MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应
用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持
事务,不支持外键。
MyISAM特点:插入数据快,空间和内存使用比较低。如果表主要是用于插入新
记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性
要求比较低,也可以使用。

MyISAM的索引聚簇索引和非聚簇索引原理相同,就是内部结点都包含有索引列和指向下一个节点的指针,在叶子节点中包含的是行号,指向实际的物理地址。

MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址

MySQL常见的三种存储引擎

3、MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快
速访问。
MEMORY特点:所有的数据都在内存中,数据的处理速度快,但是安全性不高。
如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。
它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。