首页 > 技术文章 > Innodb和MyISAM比较

wzyxidian 2016-04-17 10:24 原文

Innodb和MyISAM比较

(1)MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快

(2)MyISAM不支持事务、外键,InnoDB支持事务和外键

(3)MyISAM使用的表级锁.,而InnoDB默认使用的行级锁,也可以使用表级锁。如果大量使用select,MyISAM更快;大量使用insert、update、delete使用InnoDB更好。

(4)MyISAM的主键与辅助索引都使用的非聚集索引,而InnoDB主键索引使用的聚集索引,辅助索引使用的非聚集索引

(5)InnoDB不支持FULLTEXT类型的索引;

(6)InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的;

(7)对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引

Innodb和MyISAM选择

(1)平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。

(2)My+ISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。

(3) 还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们对应那表的frm.MYD,MYI的文件,让他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。

更全面的请访问链接: http://blog.csdn.net/xifeijian/article/details/20316775

推荐阅读