当前位置: 首页 > 工具软件 > MyISAM > 使用案例 >

InnoDB和MyISAM

冷涵忍
2023-12-01

InnoDB和MyISAM是使用MySQL时最常用的两种引擎类型,我们重点来看下两者区别。

事务和外键
InnoDB支持事务和外键,具有安全性和完整性,适合大量insert或update操作

MyISAM不支持事务和外键,它提供高速存储和检索,适合大量的select查询操作
锁机制
InnoDB支持行级锁,锁定指定记录。基于索引来加锁实现。

MyISAM支持表级锁,锁定整张表。
索引结构

InnoDB使用聚集索引(聚簇索引),索引和记录在一起存储,既缓存索引,也缓存记录。

MyISAM使用非聚集索引(非聚簇索引),索引和记录分开。
并发处理能力
MyISAM使用表锁,会导致写操作并发率低,读之间并不阻塞,读写阻塞。

InnoDB读写阻塞可以与隔离级别有关,可以采用多版本并发控制(MVCC)来支持高并发

存储文件

InnoDB表对应两个文件,一个.frm表结构文件,一个.ibd数据文件。InnoDB表最大支持64TB;

MyISAM表对应三个文件,一个.frm表结构文件,一个MYD表数据文件,一个.MYI索引文件。从 MySQL5.0开始默认限制是256TB。

MyISAM为什么查询比InnoDB快

MyISAM 适合读多,并发少的场景;这个问题要分场景来看。不同的场景, MyISAM 不一定比 InnoDB 查询快

1.InnoDB因为是B+树索引(包含索引和数据),而MyISAM只缓存索引,所以相同的空间MyISAM存储的索引要比InnoDB多,去文件中寻址也比较快,InnoDB需要映射到块再到行

2.InnoDB需要维护MVCC,查询时需要检查版本

 类似资料: