MySQL中有哪些存储引擎?
有InnoDB、MyISAM、Memory等
InnoDB和MyISAM有什么区别?
InnoDB | MyISAM | |
事务 | 支持 | 不支持 |
主键 | 一定要有 | 不一定要有 |
外键 | 支持 | 不支持 |
聚簇索引 | 是 | 不是 |
全文索引 | 不支持(v5.7之后也支持) | 支持 |
行数 | 不存储 | 存储 |
行锁 | 支持 | 不支持 |
储存文件 | frm(表定义文件)、ibd(数据文件) | frm(表定义文件)、myd(数据文件)、 myi(索引文件) |
小细节:
- 因为MyISAM存储引擎不支持外键,所以当你试图将含有外键的表的存储引擎转为MyISAM的话,是会报错的。
应用场景
- 如果大部分操作都是查询操作时:MyIsam,比如BI报表。
- 如果需要事务:InnoDB
- 如果是普通的业务系统,涉及到CRUD的操作:InnoDB