一、 存储结构数据库
MyISAM:每一个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。
InnoDB:全部的表都保存在同一个数据文件中(也多是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操做系统文件的大小,通常为2GB。安全
二、 存储空间性能
MyISAM:可被压缩,存储空间较小。支持三种不一样的存储格式:静态表(默认,可是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。
InnoDB:须要更多的内存和存储,它会在主内存中创建其专用的缓冲池用于高速缓冲数据和索引。spa
三、 事务支持操作系统
MyISAM:强调的是性能,每次查询具备原子性,其执行数度比InnoDB类型更快,可是不提供事务支持。
InnoDB:提供事务支持事务,外部键等高级数据库功能。 具备事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。索引
四、 CURD操做事务
MyISAM:若是执行大量的SELECT,MyISAM是更好的选择。(由于没有支持行级锁),在增删的时候须要锁定整个表格,效率会低一些。相关的是innodb支持行级锁,删除插入的时候只须要锁定改行就行,效率较高
InnoDB:若是你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE 从性能上InnoDB更优,但DELETE FROM table时,InnoDB不会从新创建表,而是一行一行的删除,在innodb上若是要清空保存有大量数据的表,最好使用truncate table这个命令。内存
五、 外键it
MyISAM:不支持
InnoDB:支持io