InnoDB和MyISAM存储引擎的几点区别
1. 事务
- InnoDB支持事务,默认情况下InnoDB会自动将对数据修改的单条SQL语句封装成事务,并进行进行自动提交;MyISAM不支持事务
2. 索引组织方式
- InnoDB中索引默认的数据结构为B+Tree,且索引的组织方式为聚集索引,即表中的索引和具体的行数据存储在同一个文件中;MyISAM中索引默认的数据结构也为B+Tree,索引的组织方式为非聚集索引,即表中的索引和具体的行数据分开存储
3. 外键索引
- InnoDB支持创建外键索引l;MyISAM不支持外键索引
4. 全文索引
- InnoDB在MySQL 5.6之前不支持全文索引,在MySQL 5.6之后开始支持英文全文索引,在MySQL 5.7之后开始支持中文全文索引;MyISAM一直支持全文索引
5. 行表锁
- InnoDB锁粒度最小的锁为行锁,默认使用行锁,适合高并发操作场景;MyISAM锁粒度最小的锁为表锁,不适合高并发操作
小结
比较项 | InnoDB | MyISAM |
---|---|---|
事务 | 支持 | 不支持 |
索引组织方式 | B+Tree聚集索引,索引和数据存储在同一个文件中 | B+Tree非聚集索引,索引和数据分开存储 |
外键 | 支持 | 不支持 |
全文索引 | MySQL 5.6开始支持英文全文索引,MySQL 5.7开始支持中文全文索引 | 支持 |
行表锁 | 支持表锁,行锁(默认),适合高并发操作 | 支持表锁 |