1.数据结构:InnoDB是将索引和数据存放在一起的,MyISAM是将索引文件和数据文件分开存放。
使用工具创建两个表,一个存储引擎为InnoDB的innodb表,一个存储引擎为MyISAM的myisam表
观察data文件,可发现InnoDB存储引擎有两个文件.frm(表定义)和.ibd(数据+索引),MyISAM有三个文件.frm(表定义)和.MYD(数据)和.MYI(索引)。
2.索引:同样索引结构都选择B+Tree,但InnoDB使用聚簇索引(叶子节点存数据或主键值),MyISAM是非聚簇索引(叶子节点存指针)。
基础结构:
具体叶子节点:
MyISAM:
InnoDB:
MyISAM支持全文索引,InnoDB在5.6后支持。
3.事务:InnoDB支持事物操作。MyISAM不支持事物。
4.锁:InnoDB支持行、表级锁(不命中索引仍为表级锁)。MyISAM支持表级锁。
5.主键:InnoDB表必须有主键(用户没有指定的话会自己找或生产一个主键)。MyISAM可以没有主键。
6.外键:InnoDB支持外键,MyISAM不支持外键。
7.count:InnoDB 不保存表的具体行数,扫描表。MyISAM 用一个变量保存了整个表的行数,查询表行数速度很快。
8.delete:InnoDB 执行delete表时,是一行一行的删除。MyISAM执行delete表时,先drop表,然后重建表。
9.场景:
InnoDB:事务,insert,delete,uodate操作多。
MyISAM:select多。
*默认就InnoDB吧,MySQL5.6以后默认就innoDB作为表存储引擎。
日常记录——MySQL—InnoDB和MyISAM区别
最新推荐文章于 2024-09-13 17:05:05 发布