Mysql数据库常见的3种存储引擎的区别

MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。其区别体现在事务安全、存储限制、空间使用、内存使用、插入数据的速度和对外键的支持。具体如下:

1、事务安全
InnoDB支持事务安全,MyISAM和MEMORY两个不支持。

2、储存限制
InnoDB有64TB的存储限制,MyISAM和MEMORY要是具体情况而定。

3、空间使用
InnoDB对空间使用程度较高,MyISAM和MEMORY对空间使用程度较低。

4、内存使用
InnoDB和MEMORY对内存使用程度较高,MyISAM对内存使用程度较低。

5、插入数据的速度:
InnoDB插入数据的速度较低,MyISAM和MEMORY插入数据的速度较高。

6、对外键的支持:
InnoDB对外键支持情况较好,MyISAM和MEMORY两个不支持外键。

三种引擎特点如下:
1、InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。

InnoDB特点: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。
如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
表的结构存储在 xxx.frm文件中
数据的存储在tablespace这样的表空间中(逻辑概念),无法被压缩,无法转换为只读
优点: 这种引擎最安全,数据库奔溃后提供自动修复;


2、MyISAM存储引擎
MyISAM 管理非事务表、是ISAM 的扩展格式。除了提供ISAM里所没有的索引的字段管理等的大量功能、MyISAM 还使用一种表格锁定的机制、来优化多个并发的读写操作。MyISAM 提供高速存储和检索、以及全文搜索能力;在MYSQL5.5.5版本及以下的所有MYSQL配置里被支持。也是默认的存储引擎。

应用场景
1:不需要事务支持的场景;
2:读多或者写多的单一业务场景、读写频繁的则不适合、会阻塞;
3:读写并发访问较低的业务;
4:数据修改相对较少的业务;
5:以读为主的业务(如博客、图片信息数据库、用户数据库等);
6:对数据的一致性要求不是很高的业务;
7:服务器硬件资源相对比较差的机器;
MyISAM特点: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用
每个myisam表都有三个文件:
.frm (储存表结构)
.myd(储存数据)
.myi(储存索引)
优点: 可以被压缩,节约存储空间,并且可以转换为只读表,提高检索效率

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