innodb myisam 区别

btree索引实现

innodb 主键是聚集索引,叶子节点存储主键和数据,普通索引叶子节点存储的是主键。

mysql 索引 - 图1

mysql 索引 - 图2

myisam 索引的子节点是数据的指针。

mysql 索引 - 图3

功能

  • innodb 支持事物,支持外键、一般更新是行锁(前提是能定位到行)

  • myisam 更新是表锁

文件

myisam
**
.frm存储表定义
.MYD存储表数据
.MYI存储表索引

innodb

.frm表结构文件
.ibd表独占空间(因为聚集索引,索引文件和数据文件是一体的)

单个表文件可以独享空间,默认是共享空间。