简介
通过梳理了解 mysql innodb 和 myisam 两个主要存储引擎的区别。
- 事务
- innodb 管理事务表,支持4个隔离级别,如果应用需要进行大量的写操作时推荐使用,可以有效提高多用户的并发操作能力。
- myisam 管理非事务表,支持高效的存储和检索,以及全文的搜索。如果应用需要进行大量的读操作时候推荐使用。
- 索引
- innodb
- 使用聚合索引,一个数据库需要在本地存储2个文件,分别为:表结构和数据索引文件
- 使用的是B+TREE数据结构,子节点保存的是行数据
- 本地存储文件较小
- myisam
- 使用非聚合索引,一个数据库需要在本地存储3个文件,分别为:表结构文件,索引文件和数据文件
- 使用的是B+TREE数据结构,子节点保存的是行指针,需要根据指针回原表查询获取行数据
- 本地存储文件较大
- innodb
- 锁
- innodb 默认采用行锁,但是查询如果没有使用索引或者索引失效,则会自动将行锁转换为表锁
- myisam 默认采用表锁
- 使用场景
- innodb
- 需要事务
- 数据需要进行频繁的更新
- 并发度高
- 对数据一致性要求较高
- myisam
- 不需要事务
- 数据不需要进行频繁更新
- 并发度低
- 对数据一致性要求较低
- innodb