InnoDB
1. 是聚集索引,使用的是B+树作为索引结构,数据和索引是绑在一起的,存储在同一个文件中。
2. 支持事务,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间组成一个事务。
3. 支持外键。
4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。
5. 支持表,行级锁。
6. 必须要有主键。
7. InnoDB的存储文件有两个,表结构frm,存储索引和数据的ibd。
8. 不支持全文索引。
![dfba2b5b94357fb7998cdb2c3ddca544.png](https://img-blog.csdnimg.cn/img_convert/dfba2b5b94357fb7998cdb2c3ddca544.png)
MyISAM
1. 是非聚集索引,也是使用的B+树作为索引结构,但是数据和索引是分离的,分别存储在自己的文件中,索引保存的是数据在数据文件的地址指针。
2. 不支持索引。
3. 不支持外键。
4. MyISAM是有一个变量保存了整个表的行数,查询行数时只需调用该变量,但前提是在没有其他过滤条件的情况下。
5. 支持表级锁。
6. 可以没有主键。
7. MyISAM的存储文件有三个,表结构frm,数据文件myd,索引文件myi
8. 支持全文索引。
![acbe704cd682c353dcbebd8a44260364.png](https://img-blog.csdnimg.cn/img_convert/acbe704cd682c353dcbebd8a44260364.png)