尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

深入理解MySQL基本原理和架构

深入理解MySQL基本原理和架构
📅 发布时间:2026/6/19 8:12:56

🚀 一、MySQL 整体架构(从宏观到微观)

MySQL 主要由 Server 层 与 存储引擎层(InnoDB) 组成。

┌──────────────────────────────┐
│         Server 层             │
│  SQL解析、优化器、执行器、缓存 │
└──────────────────────────────┘↓
┌──────────────────────────────┐
│        存储引擎层 (InnoDB)    │
│ Buffer Pool、Redo、Undo、索引  │
└──────────────────────────────┘

Server 层负责“逻辑”

  • 连接管理(线程池)
  • SQL 解析器(词法/语法分析)
  • 优化器(决定走哪个索引、Join 顺序)
  • 执行器(真正执行)
  • 缓存(如 Query Cache 已废弃)

InnoDB 引擎负责“存储 + 事务”

  • 页(Page)机制(16KB)
  • Buffer Pool(内存读写缓存)
  • Redo Log(崩溃恢复)
  • Undo Log(MVCC/回滚)
  • B+Tree 索引
  • 事务隔离级别

📌 面试重点:Server 层做执行逻辑,InnoDB 才是存储和事务的核心。


🚀 二、查询执行的完整流程(你必须背下来)

你执行:

SELECT * FROM user WHERE id = 1;

MySQL 内部做了什么?

1. 连接器

认证、权限、线程分配。

2. 查询缓存(已废弃)

MySQL 8 已移除,直接跳过。

3. 解析器

把 SQL 转为 AST(抽象语法树),检查语法、列名是否存在。

4. 优化器

决定:

  • 走哪个索引
  • 用全表扫描还是索引扫描
  • Join 的顺序
  • 是否使用覆盖索引

5. 执行器

根据优化器计划,从存储引擎层取数据。

6. 存储引擎

从 Buffer Pool 或磁盘读取数据页,并返回给执行器。


面试必答点:优化器只是制定计划,真正取数据的是存储引擎。


🚀 三、InnoDB 的核心:页、行、索引

1)数据以 Page 为单位(16KB)

为什么要懂?

  • 索引建立
  • 回表次数
  • 全表扫描 cost
  • 大字段影响性能

所有记录都存在 Page 中,读取数据要读整个 16KB 页。

2)行格式(Compact/Dynamic)

涉及:

  • varchar 行溢出
  • off-page 存储
  • 大字段影响页分裂

3)索引是 B+Tree

主键索引(聚簇索引)和二级索引(非聚簇索引)。

聚簇索引

  • 主键顺序存储
  • 叶子节点存真实行数据

二级索引

  • 叶子节点存的是主键值
  • 因此需要回表

覆盖索引可以避免回表,是优化的重要手段之一。


🚀 四、Redo Log 与 Undo Log(事务的灵魂)

搞不懂这两个,你永远理解不了 MySQL 的写入原理。


⭐ Redo Log —— 保证“崩溃恢复”

写入一条记录时:

  1. 修改 Buffer Pool 的数据页(内存)
  2. 写入 Redo Log(顺序 IO)
  3. 事务提交成功
  4. 后台刷盘把脏页写到磁盘(异步)

为什么要有 Redo?
因为随机 IO 太慢,所以不直接写磁盘,通过“顺序写 redo log”减少 IO。

核心机制:WAL(Write-Ahead Logging)


⭐ Undo Log —— MVCC 和回滚的基础

Undo 用于:

  • 事务回滚
  • 快照读(MVCC)可见性判断

每一次更新会写 Undo,记录旧值。

MVCC 依赖:

  • undo log
  • trx_id
  • roll_pointer
  • ReadView

你刷 MySQL 面试题看到的“RC、RR 区别”其实就是 ReadView 生成时机不同。


🚀 五、Binlog(主从复制的基础)

Binlog 是 Server 层的日志,用于:

  • 主从复制
  • 数据恢复(基于时间点恢复)

与 Redo 的关键区别:

项 Redo Log Binlog
层级 InnoDB 引擎层 Server 层
作用 崩溃恢复 主从复制 / 灾备
写入方式 循环写(固定大小) 顺序追加(无限扩展)
是否物理日志 物理日志 逻辑日志(记录 SQL 或行变更)

一致性依赖 —— 两阶段提交(2PC)
解决:redo 成功写了,但 binlog 写失败导致主从不一致。


🚀 六、事务隔离与锁

你必须理解 RC、RR、Serializable 本质区别:

隔离级别 读问题 MySQL 行为
Read Uncommitted 脏读 不推荐
Read Committed 不可重复读 Oracle 默认
Repeatable Read 避免不可重复读 MySQL 默认 + MVCC
Serializable 强一致 性能差

InnoDB 通过:

  • MVCC(快照读)
  • 锁(当前读)

来保证隔离性。


🚀 七、为什么 MySQL 能抗住上万 QPS?

关键点:

  1. Buffer Pool:缓存热点页,绝大部分读不落盘
  2. Redo Log(WAL):顺序写,写入快
  3. B+Tree 索引:层级低,查找快
  4. 主从 + 读写分离:扩展读能力
  5. 连接池 / 线程池:减少连接开销

🚀 总结一张图(核心知识一图掌握)

Client↓
Server 层解析器 → 优化器 → 执行器↘           ↑Binlog     |↓
InnoDB 引擎Buffer PoolRedo Log / Undo LogB+Tree 索引页组织、事务、锁

相关新闻

  • 2025年装配式建筑房屋材料制造/安装公司排行榜,精选技术强
  • 轻松上手:使用 Vercel 部署 HTML 页面教程 - 实践
  • redis集群下如何启用lua脚本

最新新闻

  • DVWA靶场实战:从原理到防御的XSS攻击深度解析
  • 2026年6月忻州黄金回收实测哪些门店更靠谱 - 余生黄金回收
  • 盘点靠谱火焰复合机厂家,远华上榜 - myqiye
  • DeepSeek-V4长任务能力深度解析:跨页指代、分层KV Cache与DSPE编码
  • 深孔钻头选购,如何选择永昌工具这样的好品牌 - 工业品网
  • 2026年免费快速:PPT转PDF并压缩全攻略(小程序+公众号) - 时时资讯

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号