innodb和myisam是Mysql中常用的两种引擎,以下是两者的比较:
innodb | myisam | |
---|---|---|
对事务的支持 | 支持四种事务的隔离级别 | 不支持 |
支持的锁种类 | 行锁、页锁、表锁 | 表锁 |
是否支持全文索引 | 不支持 | 支持 |
索引 | 聚集索引 | 非聚集索引 |
并发 | 根据事务隔离级别 | 读写互相阻塞 |
储存 | 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件 | 在磁盘中储存成三个文件,分别是:索引文件、数据文件、表定义 |
使用场景 | 事务要求高,对数据大量的修改操作… | 事务要求不高,查询操作多、并发低… |
下面看一下两者的索引实现的原理:
myisam:非聚集索引
采用B+树的数据索引结构
索引作为单独的文件储存起来,记录了数据的存放地址
上图以表的Col1字段作为主键,可以看出索引文件里储存的是数据主键的地址