存储引擎与架构

|---------|-------------------------------|
| 层级 | 说明 |
| 表空间 | 最高层,对应 ibd 文件,含记录和索引 |
| 段 | 数据段(叶子节点)、索引段(非叶子节点)、回滚段 |
| 区 | 1MB = 64 个连续页(默认页 16KB),保证连续性 |
| 页 | 磁盘管理最小单元,默认 16KB |
| 行 | 数据按行存放,含隐藏字段 |


5. InnoDB 内存架构

5.1 Buffer Pool(缓冲池)

缓存磁盘数据的核心内存区域。增删改查先操作缓冲池,按特定频率刷盘。

Page 三种状态:

  • free page:空闲
  • clean page:已使用,未修改
  • dirty page(脏页):已修改,未刷盘

LRU 优化 :链表分 Young 区(5/8)和 Old 区(3/8)。新数据先放 Old 区头部,停留超过 innodb_old_blocks_time 才能进 Young 区,防止全表扫描污染热点数据。

5.2 Change Buffer(插入缓冲)

针对二级索引的更新缓存。DML 时数据不在 Buffer Pool,变更先存 Change Buffer,后续读取时合并。减少随机 I/O。

5.3 Adaptive Hash Index(自适应哈希索引)

系统自动为热点索引页 构建 Hash 索引,加速等值查询,无需人工干预。参数:adaptive_hash_index。

5.4 Log Buffer(日志缓冲区)

保存待写入磁盘的 redo log,默认 16MB。

|----------------------------------|-------------------------------------|
| 参数 | 说明 |
| innodb_log_buffer_size | 日志缓冲区大小 |
| innodb_flush_log_at_trx_commit | 0=每秒刷、1=每次提交刷(默认)、2=每次提交写 OS 缓存+每秒刷 |


6. InnoDB 磁盘架构

|--------------------------------|-------------------------------------------|
| 结构 | 说明 |
| 系统表空间 | Change Buffer 存储区 |
| File-Per-Table | 默认每表独立 ibd 文件(innodb_file_per_table=ON) |
| 通用表空间 | CREATE TABLESPACE 创建 |
| Undo 表空间 | 初始两个,各 16MB,存 undo log |
| 临时表空间 | 会话级和全局级 |
| 双写缓冲区 (Doublewrite Buffer) | 刷盘前先写,防止部分写导致数据页损坏 |
| Redo Log | 事务持久性的保证 |


7. 后台线程

|-------------------------|--------------------------------------------------------|
| 线程 | 职责 |
| Master Thread | 核心线程:异步刷脏页、合并 Change Buffer、回收 undo 页 |
| IO Thread | 处理 AIO(异步 IO)回调(read/write/insert buffer/log IO 各 4 个) |
| Purge Thread | 回收已提交事务的 undo log(MVCC 不再需要时) |
| Page Cleaner Thread | 协助刷脏页,减轻 Master 压力 |


8. InnoDB 三大特性

  1. 插入缓冲(Change Buffer):减少随机 I/O
  1. 两次写(Doublewrite):防止部分写失败导致数据损坏
  1. 自适应哈希索引(AHI):自动优化热点查询
相关推荐
whyutianict_vv1 小时前
AI 大模型技术架构解析:从推理链路到训练流程
人工智能·ai·架构·开发
鶴哥只手遮天1 小时前
Spring Framework 7.0.9 深度剖析-01-整体架构与设计哲学
java·后端·开源
企业解惑小助手1 小时前
企业 AI 工具泄密怎么防护整体方案设计|需求拆解与落地架构
人工智能·架构·域智盾
智慧光迅AINOPOL1 小时前
10~50 人规模办公网络组网技术分析:架构对比与选型参考
网络·架构·智能路由器
const_qiu1 小时前
第 2.5 章 2.5.6:前端登录、Token 无感续签与路由守卫
java·前端·人工智能·状态模式
李福春1 小时前
技术思考问题19:低代码省代码,能省架构吗?
低代码·架构·rxjava·深圳同盟·腾讯云架构师技术同盟·能力圈·机会成本
额额额对了1 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
devilnumber1 小时前
Java 代理模式(简单理解回顾)
java·开发语言·代理模式
她的男孩1 小时前
Spring Boot 4 升级别只看编译绿:Forge Admin 在 Jackson、Tomcat JSON 限流、MP 包名与 Flowable 库上踩过的坑
java·spring boot·后端