12

InnoDB 与 MyISAM 区别及适用场景

 2 years ago
source link: https://jjmeg.github.io/posts/inter/mysql/innodb-myisam-scene/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

InnoDB 与 MyISAM 区别及适用场景

2020.5.28 374 1 分钟

1. 索引结构

InnoDB 和 MyISAM 都使用 B+ 树作为索引结构,区别在于叶子节点:

  • MyISAM 的叶子节点存储的是数据记录所在的地址,MyISAM 存储数据有索引文件及数据文件,先在索引文件内找到数据的地址,称为非聚集索引,再到数据文件内找到具体的文件记录
  • InnoDB索引文件就是数据文件,主索引树的叶子节点存储的是行数据的数据页,页内存储了完整的行数据记录,称为聚集索引,辅助索引树叶子节点存储主键值

2. 事务、锁处理及外键支持的区别

InnoDB MyISAM

事务处理 事务安全 非事务安全

锁级别 行锁和表锁 表锁

外键支持 支持 不支持

3. 查询效率

InnoDB MyISAM

慢 快

  • InnoDB要加载数据页到缓存内,MyISAM只缓存索引块,MyISAM较少的磁盘io
  • InnoDB映射到数据页、到行,MyISAM记录文件的offset,定位比InnoDB快
  • InnoDB需要维护版本并发控制

4. 适用场景

InnoDB MyISAM

多读多写 多读少写

有事务 无事务

高并发 非高并发


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK