InnoDB 与 MyISAM 都是 MySQL 的存储引擎,主要区别如下:
MyISAM 不支持事务和外键,而 InnoDB 支持
MyISAM 直接表级锁定,锁定整张表,而 InnoDB 支持表锁和行锁
MySAM 使用非聚簇索引(非聚集索引),索引和记录分开,而 InnoDB 使用聚簇索引(聚集索引),索引和记录在一起。
MylSAM 读写互相阻塞,但读并不会阻塞另外的读。而 InnoDB 读写阻塞与事务隔离级别相关,通过级别可以控制阻塞操作。
MyISAM 会将数据存储成三个文件,文件名字与表名相同,扩展名指出文件类型,.frm 存储表结构,.MYD 存储表数据,.MYI 存储索引信息。而 InnoDB 存储数据有系统表空间和独立表空间两种方式,独立表空间:.frm(存储表结构)和 .ibd(存储数据+索引)放在一起。
InnoDB 与MylSAM的使用场景
使用场景如下: