在此说明四种数据库引擎,其他的自行百度了解。
Archive: 支持插入和查询两种功能。在MySQL 5.5以后的版本支持索引。
使用 Archive引擎创建表,会生成 frm 文件和 ARZ 文件,frm 文件中存储表的定义,ARZ 文件中存储表的压缩后的数据和索引。
ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,查询速度快,并且不占用大量的内存和存储资源。不支持事务处理,也不能够容错:如果硬盘崩溃了,那么数据文件无法恢复。
MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。查询速度快。还有一些扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。缺点是不能在表损坏后恢复数据。
使用 MyISAM 引擎创建表,会生成 frm 文件、MYD文件和MYI文件,frm 文件中存储表的定义,MYD 文件中存储表的数据,MYI文件中存储表的索引。
InnoDB:InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。
MySQL5.5 后,InnoDB 就是 MySQL 默认的存储引擎,在这之前是 MyISAM 引擎。MYSQL5.6.4版本才支持全文检索
使用 InnoDB 引擎创建表,会生成 frm 文件和 idb 文件,frm 文件中存储表的定义,idb 文件中存储表的数据和索引。
MEMORY: MEMORY是MySQL中一类特殊的存储引擎。数据直接存储在内存中。
MEMORY默认使用哈希索引。速度比使用B型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。注意,如果重启或者关机或者mysql服务崩溃,所有数据都会消失。
使用 MEMORY 引擎创建表,只会生成 frm 文件,因为表的数据是暂时存放在内存中的。
不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:
功 能 | MYISAM | Memory | InnoDB | Archive |
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |