MySQL的引擎一般分为两种
系统兼容性好拥有较优秀的插入、查询速度,。使用表格锁定的机制,来优化多个并发的读写操作。支持索引、字段管理
不支持事务,不支持行锁、外键。如果数据库insert和update的操作比较多的话采用表锁效率低(建议使用innodb)、不能在表损坏后恢复数据
想得到更好的系统兼容性,很高效的查询速度。但是不支持事务、外键、如果更新表较多的话对效率也会有影响。
目前是MySQL的默认引擎,特点是支持事务,支持行锁和外键
不支持全文索引、启动慢、不会保存表的行数、当进行Select count(*) from table
指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。
如果要提供提交、回滚、崩溃恢复能力的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择
特点 | MyISAM | InnoDB |
---|---|---|
事务 | 不支持 | 支持 |
行级锁 | 不支持 | 支持 |
外键 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |