数据库
InnoDB和MyISAM的区别
- InnoDB支持事务,MyISAM不支持
- InnoDB支持外键,MyISAM不支持
- InnoDB支持行锁,会死锁,并发性能好,MyISAM仅支持表锁,不会死锁,并发性能差
- InnoDB必须有主键,没有指定就为每一行数据生成不可见的ROWID列作为主键,MyISAM可以没有主键
- InnoDB不支持全文索引,MyISAM支持,5.6开始InnoDB也支持全文索引了
- MyISAM内置了一个计数器来存储表的行数。执行 select count(*) 时直接从计数器中读取,速度非常快。而InnoDB不保存这些信息
- InnoDB所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),MyISAM将索引和数据分开进行存储。
- 对AUTO_INCREMENT的处理方式不一样。如果将某个字段设置为INCREMENT,InnoDB中规定必须包含只有9. 该字段的索引。但是在MyISAM中,也可以将该字段和其他字段一起建立联合索引。
- delete from table的处理方式不一样。MyISAM会重新建立表。InnoDB不会重新建立表,而是一行一行的删除。
- 如果执行大量的SELECT,MyISAM是更好的选择。如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。