1. 基本介绍
- MySQL 的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory 等。
- MySQL 数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAM、MYISAM、InnoBDB。
- 这六种又分为两类,一类是“事务安全型”(transaction-safe),比如:InnoDB;其余都属于第二类,称为“非事务安全型”(non-transaction-safe)【mysiam 和 memory】。
2. 查看所有的存储引擎
show engines
3. 主要的存储引擎/表类型的特点
细节说明–MyISAM、InnoDB、MEMORY 的区别:
- myisam不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求
- innodb存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起myisam存储引擎,innodb写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
- memory 存储引擎使用内存中的内容来创建表。每个memory表只实际对应一个磁盘文件。memory类型的表访问非常的快,因为他的数据是放在内存中的,并且默认使用 hash 索引。但是一旦mysql服务关闭,表中的数据就会丢失掉,表的结构还在。
4. 如何选择表的存储引擎
- 如果你的应用不需要事务,处理的只是基本的 CRUD 操作,那么 myisam 是不二选择,速度快。
- 如果需要支持事务,选择 innodb
- memory 存储引擎就是将数据存储在内存中,由于没有磁盘 i./o 的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。【比如用户在线离线状态表】
5. 修改存储引擎
alter table `表名` engine = 存储引擎;