MyISAM和InnoDB的区别
mysql5.5版本后将InnoDB作为默认的存储引擎,之前都是用MyISAM,两种的区别在于以下五点:
1.数据的存储结构不同
- MyISAM有三个文件:
- .frm:表结构的定义文件
- .MYD:数据文件
- .MYI:索引文件
- InnoDB有两个文件:
- .frm文件:存储为表结构文件
- .ibd:存储的是数据和索引文件
- 由于MyISAM的数据和索引是分开的,因此在索引查找的时候,MyISAM的叶子节点存储的是数据所在的地址,而不是数据
2.存储空间的消耗不同
- MyISAM可能会被压缩,存储空间变小,支持三种存储模式,静态表、动态表、压缩表
- InnoDB需要更多的内存和存储,会在主内存中建立专有的缓冲区,用来去告诉缓冲数据和索引,其所在表都保存在同一个数据文件中,其大小只受限于操作系统的文件大小,一般是2G
3.对事务的支持不同
- MyISAM注重的是效率,每次查询都具有原子性,执行速度比InnoDB快一些,但不支持事务操作
- InnoDB支持外键等高级数据库的操作,事务提交,事务回滚,安全性高!
4.对锁的支持不同
- 如果执行大量的查询,MyISAM更好,在执行增删改的时候,需要锁定整个表,效率更低
- InnoDB支持行级锁,在删除插入的时候只需要锁定操作行就行
5.对外键的支持不同
- MyISAM不支持外键
- InnoDB支持外键