MySQL 提供了多个存储引擎——包括处理事务安全表的引擎和处理非事务安全表的引擎,在MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。

存储引擎简介

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。
这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。
通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
而存储引擎说白了就是
如何存储数据如何为存储的数据建立索引如何更新、查询数据 等技术的实现方法。
例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎,因为内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库,以确保事务处理不成功时数据的回退能力,你就要选择支持事务的存储引擎。

存储引擎分类介绍

下面就简单介绍一下MySQL的存储引擎。

InnoDB

InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。
InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择:
更新密集的表。 InnoDB存储引擎特别适合处理多重并发的更新请求。
事务。 InnoDB存储引擎是支持事务的标准MySQL存储引擎。
自动灾难恢复。 与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
外键约束。 MySQL支持外键的存储引擎只有InnoDB。
支持自动增加列AUTO_INCREMENT属性。
从5.7开始innodb存储引擎成为默认的存储引擎。
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

MyISAM

MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器。
每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。
例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件:
tb_demo.frm,存储表定义。tb_demo.MYD,存储数据。tb_demo.MYI,存储索引。
MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。