当前位置: 首页 > news >正文

MySQL 系统学习 第四阶段:MySQL 高级 第七节:InnoDB 存储引擎

前面我们学习:

  • 事务:保证数据操作可靠
  • :解决并发修改问题
  • MVCC:解决高并发读取问题

这些能力是谁提供的?

答案:

InnoDB 存储引擎


一、什么是存储引擎?

MySQL 不是直接负责数据存储的。

MySQL 分为:

MySQL Server | | 存储引擎 | | 磁盘文件

存储引擎负责:

  • 数据如何存储
  • 如何读取
  • 是否支持事务
  • 是否支持锁
  • 是否支持索引

例如:

同一个 MySQL:

可以有:

user表 → InnoDB log表 → MyISAM

不同表可以使用不同引擎。


二、MySQL 常见存储引擎

查看:

SHOW ENGINES;

常见:

引擎特点
InnoDB支持事务、行锁(默认)
MyISAM查询快、不支持事务
Memory数据存内存
Archive归档数据

现在企业开发:

基本:

99% 使用 InnoDB


三、为什么 InnoDB 成为默认引擎?

因为它支持:

⭐⭐⭐⭐⭐

1. 事务

例如:

订单:

创建订单 扣库存 扣余额

必须:

全部成功。


InnoDB:

支持:

BEGIN; COMMIT; ROLLBACK;

MyISAM:

不支持事务。


2. 行级锁

InnoDB:

支持:

锁一行数据

例如:

UPDATE user SET name='Tom' WHERE id=1;

只锁:

id=1

MyISAM:

只能:

锁整张表

3. MVCC

InnoDB:

支持:

多版本并发控制。

所以:

普通查询:

不需要加锁。


四、InnoDB 整体架构 ⭐⭐⭐⭐⭐

InnoDB 可以理解为:

InnoDB +----------------+ | Buffer Pool | +----------------+ +----------------+ | Redo Log | +----------------+ +----------------+ | Undo Log | +----------------+ +----------------+ | 数据文件 | +----------------+

核心:

四大组件:

  1. Buffer Pool
  2. Redo Log
  3. Undo Log
  4. 数据文件

五、Buffer Pool(缓冲池)⭐⭐⭐⭐⭐

这是 InnoDB 性能核心。

问题:

磁盘慢。

例如:

读取数据:

CPU | 内存 | 磁盘

磁盘 IO:

非常慢。


所以:

InnoDB:

把热点数据放入内存。

这个区域:

叫:

Buffer Pool


流程:

查询数据:

SQL ↓ Buffer Pool ↓ 找到 ↓ 返回

如果没有:

SQL ↓ 磁盘 ↓ 读取 ↓ 返回

效率低。


六、Buffer Pool 工作流程

例如:

查询:

SELECT * FROM user WHERE id=1;

第一次:

Buffer Pool 没有数据 ↓ 读取磁盘 ↓ 放入 Buffer Pool ↓ 返回

第二次:

Buffer Pool 已有数据 ↓ 直接返回

这叫:

缓存命中


七、Redo Log(重做日志)⭐⭐⭐⭐⭐

问题:

事务提交后:

数据一定马上写磁盘吗?

答案:

不一定。


如果:

每次修改:

直接写磁盘:

性能很低。


InnoDB:

采用:

WAL(Write Ahead Logging)

预写日志。

思想:

先写日志,再写数据。


例如:

执行:

UPDATE user SET age=20 WHERE id=1;

流程:

修改数据 ↓ 写 Redo Log ↓ 事务提交 ↓ 后台慢慢刷新数据文件

如果突然断电:

怎么办?

恢复:

读取 Redo Log。

重新执行修改。


所以:

Redo Log 保证:

持久性(Durability)


八、Undo Log(回滚日志)

上一节讲过。

作用:

两个:

1. 回滚

例如:

事务:

UPDATE user SET age=30;

失败:

恢复:

age=20

2. MVCC

保存历史版本:

当前版本 ↓ 旧版本 ↓ 更旧版本

九、Redo Log 和 Undo Log 区别 ⭐⭐⭐⭐⭐

Redo LogUndo Log
作用恢复提交的数据恢复修改前的数据
方向向前恢复向后回滚
保证持久性原子性、MVCC
场景断电恢复事务回滚

简单记:

Redo Log: 我要重新做一遍 Undo Log: 我要撤销刚才操作

十、InnoDB 数据文件结构

MySQL 数据:

存储在:

数据目录

查看:

SHOW VARIABLES LIKE 'datadir';

InnoDB:

主要文件:

.ibd 文件

例如:

user.ibd

存:

  • 表数据
  • 索引

例如:

user表 ↓ user.ibd ↓ 数据 + B+Tree索引

十一、InnoDB 索引结构回顾

InnoDB:

默认:

B+Tree。


结构:

Root / \ Node Node / \ / \ Leaf Leaf Leaf Leaf

特点:

数据存储在:

叶子节点。


主键索引:

叫:

聚簇索引


十二、聚簇索引 ⭐⭐⭐⭐⭐

InnoDB:

数据和主键索引存一起。

例如:

表:

user

主键:

id

结构:

B+Tree id | | 完整数据

查询:

SELECT * FROM user WHERE id=10;

一次找到数据。


十三、二级索引(辅助索引)

例如:

创建:

CREATE INDEX idx_name ON user(name);

结构:

name索引 Tom | id=10

查询:

WHERE name='Tom'

流程:

name索引 ↓ 找到id ↓ 根据id查完整数据

这个过程:

叫:

回表


十四、为什么推荐使用自增主键?

原因:

InnoDB:

主键是聚簇索引。

如果:

主键不断增加:

1 2 3 4

插入:

顺序追加。

效率高。


如果:

UUID:

8fa3... 1abc... 9def...

随机插入。

可能:

页分裂。

性能下降。


十五、InnoDB 一次 SQL 执行流程

例如:

UPDATE user SET name='Tom' WHERE id=1;

流程:

1. 查询数据 ↓ 2. Buffer Pool ↓ 3. 修改内存数据 ↓ 4. 写 Undo Log ↓ 5. 写 Redo Log ↓ 6. COMMIT ↓ 7. 后台刷磁盘

十六、本节总结

概念作用
InnoDBMySQL默认存储引擎
事务保证业务一致性
行锁提高并发
MVCC提高读取能力
Buffer Pool缓存数据
Redo Log保证持久性
Undo Log回滚和MVCC
B+Tree索引结构
聚簇索引主键索引

🎯 本节核心一句话:

InnoDB 通过 Buffer Pool 提升读性能,通过 Redo Log 保证崩溃恢复,通过 Undo Log + MVCC 保证事务一致性,是 MySQL 高并发场景的核心存储引擎。

http://www.jsqmd.com/news/1185088/

相关文章:

  • AI视频处理全流程实战:从废片筛选到智能剪辑技术解析
  • Unity游戏实时本地化实战:XUnity.AutoTranslator原理、部署与优化指南
  • 【OpenJiuwen Agent 开发平台部署】
  • 防火墙的四种登入方式
  • Linux 中 core dump 文件的生成、管理与自动化分析实战
  • 2026最新衡阳本地漏水检测公司本地精选权威推荐:正规防水补漏公司优选口碑TOP5:卫生间/厨房/阳台/飘窗/地下室渗漏水维修师傅上门 - 即刻修防水
  • 清华AI数学家来了,从想法一路推到定理,参与完成84页量子算法论文
  • Windows右键菜单“新建文本文档”消失?三步修复法,亲测有效
  • 2024年Ubuntu系统PyTorch GPU环境一站式配置指南
  • 手写数组长度计算:从Python底层理解len()的本质
  • 卡尔曼滤波原理与深度学习融合:从基础到实战应用
  • JasperReports 升级指南:从 javax.*平滑迁移到 jakarta.*
  • 2026年7月最新青岛天梭官方售后客服服务电话及地址网点大全 - 天梭服务中心
  • AssetStudio GUI高效提取Unity资源:从原理到实战的完整指南
  • fcrackzip:Mac/Linux下破解遗忘zip密码的完整指南与实战技巧
  • GPT-Image-2:中文UI生图新范式,从提示词到可交付界面
  • 从SNAP到StaMPS:Ubuntu环境下PS-InSAR数据处理全流程解析
  • YOLOv8道路坑洼检测系统:从数据集到PyQT5界面全流程实战
  • 2026年7月最新芝柏贵阳天阶万达广场维修保养服务电话 - 亨得利钟表维修中心
  • 2026实力之选:精密吸塑与厚板吸塑制造企业深度解析 - 甄选服务推荐
  • 2026年 有实力的塑料制品供应厂家:注塑、吹塑、吸塑工艺与高韧性环保材质专业解析 - 甄选服务推荐
  • 从经典教材习题到实战:深入解析SQL查询与数据操作
  • 脉冲噪声检测方法
  • 20-搜索越输越乱-用防抖序号和空态统一异步结果
  • 一维数组的使用
  • 2026年7月最新积家杭州未来科技城万达广场维修保养服务电话 - 积家官方售后服务中心
  • Unity技能系统开发:基于Game Creator 2的Abilities插件实战指南
  • Chowla猜想:刘维尔函数自相关与数论随机性的核心挑战
  • 使用Visual C++创建Windows快捷方式:IShellLink与IPersistFile接口详解
  • Windows环境iOS应用砸壳实战:Frida逆向QQ与淘宝完整指南