MySQL 支持多种不同的存储引擎,也称为表格类型。

一、MySQL 存储引擎


1. MyISAM

MyISAM 是 MySQL5.5 之前的版本使用的默认存储引擎,这种表格类型是基于传统的 ISAM 类型(Indexed Sequential Access Method,带索引顺序访问方法),是一种存储记录和文件的标准方法。MyISAM 引擎的特点在于具有检查和修复表格的工具,此外,MyISAM 表格可以被压缩,支持全文搜索。MyISAM 的缺点是不支持外键,不是事务安全的类型,因此对于一般不需要特别保证数据读写安全的表格,MyISAM 是不错的选择。

2. InnoDB

MySQL5.5 之后的版本中默认使用 InnoDB 作为存储引擎,InnoDB 是一种事务安全型的存储引擎,所以可以使用 COMMIT 提交和 ROLLBACK 回滚的功能,InnoDB 还支持外键功能,显然, InnoDB 非常适用于对数据操作安全性和实时性非常高的业务,大多 WEB 应用中,通常都是使用 MyISAM 和 InnoDB 引擎作为主要的表格存储引擎。InnoDB 相对与 MyISAM 的缺点是操作执行的耗时要相对久一些。

3. MEMORYHEAP

MEMORY 引擎通过建立哈希索引,将表数据存放在内存中。数据存放在内存中的优点和缺点都显而易见,从内存中读写数据的速度非常快,但数据的安全性缺非常低,如果系统发生崩溃、断电,内存中的数据会立即丢失,并且通常情况下是无法修复的。因此,MEMORY 引擎适合用来存储临时建立的表格数据或者派生而来的数据表。为了防止数据库中大量写入的数据吞噬系统内存,MEMORY 引擎要求在 CREATE TABLE 语句中指定 MAX_ROWS,此外,使用 MEMORY 引擎的表格中不能使用 BLOBTEXT 或者 AUTO_INCREMENT 格式的列。

4. MERGE

MERGE 引擎允许用户在使用查询时候,将多个 MyISAM 表的集合作为一个单独的表,这样操作的优点是可以避开某些操作系统中最大文件大小的限制。

5. ARCHIVE

ARCHIVE 表中保存了大量的数据,但是只有少量的脚注。ARCHIVE 表只支持 INSERTSELECT 操作,不支持 DELETEUPDATEREPLACE,此外索引功能也不被 ARCHIVE 支持。

6. CSV

CSV 引擎将数据库中的数据通过逗号间隔之后,保存再系统中的单个文件中,这样操作的目的是为了方便系统中其它应用类似 EXCEL 的应用可以便捷地打开并查看数据。

二、MySQL 配置存储引擎


可以在创建表格时候指定使用的存储引擎:

CREATE TABLE table_name TYPE = table_type ......;

对于已经创建的表格,可以通过 ALTER 命令,修改原来的存储引擎:

ALTER TABLE table_name TYPE = table_type ......;