[!quote] 存储引擎 存储引擎 是存储数据,建立索引,更新/查询数据 ……技术的实现方式,存储引擎是基于表的,不是基于数据库的【
也就是一个数据库中可以有多个存储引擎】
- 不同的存储引擎有不同的优缺点,没有好坏之分,要看具体的使用场景
SQL
-- 查看当前数据库支持的存储引擎
SHOW ENGINES;InnoDB
[!quote] InnoDB 在 MySQL 5.5 之后,InnoDB 是默认的存储引擎,兼顾高可靠性和高性能
- DML 语句支持事务,也就是遵循 ACID 模型
- 行级锁
- 支持外键
逻辑存储结构
InnoDB 存储引擎的表后缀为 .ibd ,里面存储了表结构,表数据,索引
- Tablespace 表空间
- Segment 段
- Extent 区 :大小固定为 1M
- Page 页 :大小固定为 16K
- Row 行
mermaid
graph LR
subgraph Tablespace表空间
a[Segment段]
b[Segment段]
c[Segment段]
d[……]
end
c-->Segment段
subgraph Segment段
e[Extent区]
f[Extent区]
g[Extent区]
h[……]
end
g-->Extent区
subgraph Extent区
i[Page页]
j[Page页]
k[Page页]
l[……]
end
k-->Page页
subgraph Page页
m[Row行,也就是表中的一行]
n[Row行]
o[Row行]
p[……]
endMyISAM
MyISAM 是早期的 MySQL 默认存储引擎,不支持事务,而且是表锁,不是行锁,而且不支持外键,==现在基本被 MongoDB 取代==
Memory
Memory 存储引擎是基于内存的存储引擎,==基本被 Redis 取代==