存储引擎 | InnoDB | MyISAM |
---|---|---|
文件存储结构 | .frm文件:存放表结构的定义信息 .ibd文件或.ibdata文件:存放InnoDB数据(数据和索引) 【独享表空间】每个表一个.ibd文件 【共享表空间】所有表使用一个.ibdata文件 | - .frm文件:存放表结构的定义信息 - MVD(MYData)文件:存储MyISAM表的数据 - MYI(MYIndex)文件:存储MyISAM表的索引相关信息 |
事务 | 支持 | 不支持 |
外键 | 支持 | 不支持 |
索引 | 支持聚簇索引和非聚簇索引 | 仅支持非聚簇索引 |
锁 | 支持表级锁和行级锁 | 仅支持表级锁,不适合高并发 |
关注点 | 事务 | 性能 |
表大小 | 大 | 小 |
索引缓存 | 不仅缓存索引还缓存数据,内存大小对性能有非常大影响 | 仅缓存索引 |
是否保存具体行数 | 否。count(*) 时需要全表扫描,效率低 | 是。内部有一个变量记录表的行数,效率高 |
使用场景 | 1.数据增删改查都相当频繁(和支持的锁相关) 2.可靠性要求比较高,要求支持事务 | 1.频繁执行全表count 语句2.对数据进行增删改的频率不高,查询非常频繁(不需要回表) 3.没有事务 |