InnoDB 和 MyISAM 对比
事务与外键
InnoDB 支持事务与外键,具有安全性与完整性,适合大量的 insert 与 update 操作;
索引结构
InnoDB 使用聚集索引(聚簇索引),索引和记录存储在一个文件中。MyISAM 使用非聚集索引,索引文件与数据我呢见分开。
并发能力
MyISAM 使用表锁,所以会导致并发效率底;InnoDB 读写阻塞可以与隔离级别有关,可以采用多并发版本(MVCC)来支持高并发。
存储文件
InnoDB 表对应两个文件,一个.frm 表结构文件,一个.ibd 数据文件。InnoDB 表最大支持64TMyISAM 表对应三个文件,有个.frm 表结构文件,一个 MYD 表数据文件,一个.MYI 索引文件,从mysql5.0开始默认支持256TB
适用场景
InnoDB 适用于增删改比较多的情况(需要支持事务的情况);并发比较高的情况(行级锁对并发有很好的适应性);数据一致性要求比较高;硬件设备内存比较大,可以利用 InnoDB 较好的缓存能力来提高内存利用率,减少磁盘的 I/O;MyISAM 使用与查询比较多,没有事务的情况(不支持事务);并发比较少的情况;数据修改比较少的情况;数据一致性要求不高的情况;
总结
两中引擎该如何选择?
是否需要事务?有->InnoDB
是否存在并发修改?有-> InnoDB
是否追求快速查询,并且数据修改少?是 --> MyISAM
评论