目录
一、结构和索引
二、基本差别:
三、细节和具体实现差别:
四、锁方面的区别
五、适用的场景
一、结构和索引
MyISAM:
不管是主键索引、唯一键索引或者普通索引,其索引均属于稀疏索引
数据和索引分开存储
InnoDB
必须有且只有一个索引,获取数据分两步,先定位到主键再通过主键查找
数据和索引存在一起
二、基本差别:
InnoDB支持事务处理等高级处理
MyISAM执行速度比InnoDB快,但不提供事务支持
三、细节和具体实现差别:
1.InnoDB不支持FULLTEXT类型的索引
2.InnoDB中不保存表的具体行数,MyISAM保存
四、锁方面的区别
1.MyISAM默认表级锁,不支持行级锁
对id为3的数据更新,不能同时对id为4的数据更新,因为整个表都被锁住了
2.InnoDB默认行级锁,也支持表级锁
行级锁则可以同时对id=3和id=4的锁更新
InnoDB:
使用的是二段锁,加锁解锁分两部分,即对操作分别加锁,然后commit时统一解锁。
->行级锁的开销较大,因为需要扫描到某行的具体位置上锁
->INNODB 数据和索引绑定在一起,主键索引效率很高,其他则需执行两次
->MYISAM 数据和索引分离,索引保存的是数据文件的指针,主键索引和辅助索引是独立的,因此它在数据量增删改比较少的时候性能要比INNODB好