1、InnoDB支持事务,MyISAM不支持;
2、InnoDB支持外键,MyISAM不支持;
3、InnoDB是簇索引,MyISAM是非簇索引;
4、Innodb不支持fulltext全文索引,MyISAM支持;
5、InnoDB支持到行级锁,MyISAM仅支持表级锁;
6、InnoDB表唯一索引必选,Myisam可以选;
7、存储文件不同,Myisam这棵树的叶子结点存储数据是物理地址,InnoDB的叶子结点直接存储数据记录,这也是簇索引与非簇索引的区别。
8、MyISAM存储结构相对简单,易于恢复,备份覆盖即可。若程序写少读多,对原子性要求不高,MyISAM是最优选择。
9、若大量写入作为核心业务,InnoDB是最优选择。InnoDB最恼人的是ibdata1只能增大,无法缩小,只能全部备份、删除ibdata,然后全部恢复,相当于重新迁移数据库了。这点不如微软的SQL Server,可以随时压缩清空日志到1MB。
多年的实际工程体验中,MySQL数据量达到百万以后,如果没有设计好分库分表分区索引,PHP+MySQL分页就是一个梗。而SQL Serve在千万级以上,C#+存储过程,分页秒开,当然这其中也有C#的功劳,毕竟编译型语言执行效率要高于解释性语言。从备份&还原来看,后者易于前者,备份还原,或复制附加数据,非常简单。
总是选择MySQL是因为这货人缘好,Windows、Unix、Linux 和 Mac OS通吃,易于跨平台移植。而SQL Server在非Windows之外的系统上运行,需要繁琐的安装工作。