【MySQL】如何理解MySQL的存储引擎

本文介绍了MySQL中常用的三种存储引擎Innodb、MyISAM和Memory的特点,比较了它们在事务支持、外键、索引类型、锁定机制以及全文索引方面的差异。InnoDB提供事务安全但写入效率较低,MyISAM快速但不支持事务,Memory在内存中存储速度快但数据易丢失。
摘要由CSDN通过智能技术生成

一、常见存储引擎

我们可以知道表的类型是由存储引擎决定的,如图所示,我们可以看到MySQL中支持八种储存引擎,那么我们这里就介绍常用的三种存储引擎,分别是Innodb、MyISAM、Memory。

二、Innodb、MyISAM、Memory的特点

1、Innodb

Innodb存储引擎提供了具有提交 、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,Innodb写的处理效率差并且会占用更多的磁盘空间保留数据和索引。

2、MyISAM

MyISAM存储引擎不支持事务、也不支持外键,但访问速度很快,对事务的完整性没有要求。

3、Memory

Memory储存引擎使用内存中的内容来创建表。每个Memory表只实际对应一个磁盘文件。Memory类型的表访问非常得快,因为它得数据是放在内存中得,并且默认使用Hash索引。但是服务器一旦关闭,表中数据会丢失,但表的结构还在。(常用:用户的在线情况

三、Innodb与MyISAM的区别

1. InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提 交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。

2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败。

3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。 但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该 过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的, 索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 

4. InnoDB支持行锁,MyISAM支持表锁。InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用 一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。

5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值