MyISAM和InnoDB作为MySQL的两种主要的存储引擎(在MySql5.5以后版本,Mysql默认采用的是InnoDB)
主要区别
MyISAM不支持事务处理(原子性操作)等高级处理,而InnoDB类型支持(InnoDB的AUTOCOMIIT是打开的)
MyISAM表不支持外键;
在执行update、insert、delete等操作时MyISAM会锁表,InnoDB只会锁行(InnoDB琐行也不是绝对的,假如执行一个Sql语句时MySql不能确定要扫描的范围,InnoDB也会锁全表,例如:update table set num=1 where name like “%aaa%”)
MyISAM类型强调的是性能,执行的速度比InnoDB要快
InnoDB不能保存表的具体行数,当需要获取表的行数时需要扫描整个表来计算
InnoDB不支持全文索引,MyISAM支持(建立倒排索引)
思考
因此,当数据库有大量的写入、更新操作而查询操作较少时或者对数据的完整性要求较高的时候选用InnoDB,而当数据库主要以查询为主而相比较而言更新和写入比较少,并且业务方面数据的完整性要求不那么严格就选用MyISAM表。(MyISAM表的查询操作效率和速度都比InnoDB要快)