InnoDB引擎逻辑存储结构及架构

news2025/6/2 12:17:22

简化理解版

想象 InnoDB 是一个高效运转的仓库:

  1. 核心内存区 (大脑 & 高速缓存 - 干活超快的地方)

    • 缓冲池 Buffer Pool (最最核心!):

      • 作用: 相当于仓库的“高频货架”。把最常用的数据(表数据、索引)从慢速的磁盘提前搬到快速的内存里。下次要用直接拿,不用跑远路去磁盘。

      • 好处: 读写速度飞起!是 InnoDB 快的关键。

    • 日志缓冲区 Log Buffer

      • 作用: 一个小型“临时笔记本”。记录对数据的修改操作(增删改)📝,写满一本(或定时)就交给“归档员”写到磁盘的大账本里。

      • 好处: 避免频繁写慢速磁盘,先攒着一起写,效率高。

  2. 磁盘结构 (仓库本体 & 账本 - 持久存储的地方)

    • 表空间 Tablespaces (数据大本营):

      • 作用: 磁盘上真正存放你表的数据(.ibd文件)和索引的大容器。想象成仓库的货架和货位规划图。

      • 类型: 系统表空间(ibdata1,存一些公共信息)、独立表空间(每个表有自己的.ibd文件,主流)、临时表空间等。

    • 重做日志 Redo Log (救命账本 - ib_logfile0ib_logfile1):

      • 作用: 一个循环写的“操作流水账”。记录所有修改操作本身(比如“把A记录字段X从1改成2”)。万一仓库突然停电(崩溃),靠这个账本能精确重做一遍没来得及存到货架的操作,保证数据不丢。

      • 关键点: 顺序写、速度快,是崩溃恢复的核心保障。

    • 撤销日志 Undo Log (后悔药记录):

      • 作用: 记录修改前的旧数据版本📜。用来做两件事:

        • 事务回滚(后悔了,撤销操作)。

        • 实现多版本并发控制MVCC(让不同人看到不同时刻的数据快照,互不干扰)。

  3. 线程们 (仓库工人 - 各司其职干活的):

    • 主线程 Master Thread 总管,协调其他工人,负责后台任务(比如定期刷脏页到磁盘、合并插入缓冲等)。

    • IO线程: 专门负责读写磁盘(读数据页到缓冲池、写日志缓冲区到重做日志文件、写脏页数据到表空间等)。分读线程和写线程。

    • 清理线程 Purge Thread 专门回收那些已经没人需要的旧版本数据(由Undo Log产生的)。

    • 页面清理线程 Page Cleaner Thread 专门负责把缓冲池里被修改过但还没写回磁盘的“脏数据页”刷回磁盘。

最简化记忆框架:

  1. 内存干活快: 缓冲池(缓存数据) + 日志缓冲区(攒操作记录)。

  2. 磁盘存永久: 表空间(存数据文件) + 重做日志(崩溃恢复账本) + 撤销日志(回滚/MVCC)。

  3. 线程来协作: 主线程(总管) + IO线程(搬磁盘) + 清理线程(收垃圾) + 页面清理(刷脏页)。

关键互动流程简化版:

  1. 你执行一个UPDATE语句。

  2. InnoDB 先去缓冲池找这条数据在不在内存。

    • 在:直接改内存里的数据(现在它是“脏页”了)。

    • 不在:先让IO线程表空间文件读到缓冲池,再改。

  3. 把“改了哪条数据,怎么改的”这个操作记录写到日志缓冲区

  4. 日志缓冲区满了(或事务提交时),IO线程把这一批操作记录快速顺序写入重做日志redolog文件(磁盘)。

  5. 后台页面清理线程会在合适的时候,把缓冲池里改过的“脏页”慢慢写回表空间文件(磁盘)。

  6. 如果改错了或者事务回滚,撤销日志undolog里记录了旧值,可以恢复。

  7. 如果突然断电,重启时,InnoDB 会检查重做日志,把那些已经记录在日志里(说明操作有效)但还没写回数据文件的操作重做一遍,保证数据不丢。

一句话总结核心:

InnoDB 靠 缓冲池 在内存里飞快干活,用 重做日志 保证数据安全不丢,靠 表空间 存数据文件,撤销日志 支持回滚和多版本读,各种 线程 默默协作完成所有后台任务。

InnoDB引擎逻辑存储结构

架构

1,内存结构

2,磁盘结构

 

3,后台线程

将缓冲池中的数据在合适的时间刷新到磁盘中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2392662.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第4讲、Odoo 18 模块系统源码全解与架构深度剖析【modules】

引言 Odoo 是一款强大的开源企业资源规划(ERP)与客户关系管理(CRM)系统,其核心竞争力之一在于高度模块化的架构设计。模块系统不仅是 Odoo 框架的基石,更是实现功能灵活扩展与定制的关键。本文将结合 Odoo…

pytorch简单线性回归模型

模型五步走 1、获取数据 1. 数据预处理 2.归一化 3.转换为张量 2、定义模型 3、定义损失函数和优化器 4、模型训练 5、模型评估和调优 调优方法 6、可视化(可选) 示例代码 import torch import torch.nn as nn import numpy as np import matplot…

四、web安全-行业术语

1. 肉鸡 所谓“肉鸡”是一种很形象的比喻,比喻那些可以随意被我们控制的电脑,对方可以是WINDOWS系统,也可以是UNIX/LINUX系统,可以是普通的个人电脑,也可以是大型的服务器,我们可以象操作自己的电脑那样来…

Unity基础学习(十二)Unity 物理系统之范围检测

目录 一、关于范围检测的主要API: 1. 盒状范围检测 Physics.OverlapBox 2. 球形范围检测 Physics.OverlapSphere 3. 胶囊范围检测 Physics.OverlapCapsule 4. 盒状检测 NonAlloc 版 5. 球形检测 NonAlloc 版 6. 胶囊检测 NonAlloc 版 二、关于API中的两个重…

JVM 的垃圾回收机制 GC

C/C 这样的编程语言中,申请内存的时候,是需要用完了,进行手动释放的 C 申请内存 1)局部变量(不需要手动释放) 2)全局变量(不需要手动释放) 3)动态申请 malloc(通过 free 进行释放的) C 申请内存 1)局部变量 2)全局变量/静态变量 3)动态申请 new 通过 delete 进行释放 …

路由器、网关和光猫三种设备有啥区别?

无论是家中Wi-Fi信号的覆盖,还是企业网络的高效运行,路由器、网关和光猫这些设备都扮演着不可或缺的角色。然而,对于大多数人来说,这三者的功能和区别却像一团迷雾,似懂非懂。你是否曾疑惑,为什么家里需要光…

vscode实时预览编辑markdown

vscode实时预览编辑markdown 点击vsode界面,实现快捷键如下: 按下快捷键 CtrlShiftV(Windows/Linux)或 CommandShiftV(Mac)即可在侧边栏打开 Markdown 预览。 效果如下:

2505软考高项第一、二批真题终极汇总

第一批2025.05综合题(75道选择题) 1、2025 年中央一号文件对进一步深化农村改革的各项任务作出全面部署。“推进农业科技力量协同攻关”的相关措施不包括()。 A.强化农业科研资源力量统筹,培育农业科技领军企业 B.发挥农业科研平台作用&…

云原生安全基础:Linux 文件权限管理详解

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 在云原生环境中,Linux 文件权限管理是保障系统安全的核心技能之一。无论是容器化应用、微服务架构还是基础设施即代码(IaC&#xf…

[嵌入式实验]实验二:LED控制

一、实验目的 1.熟悉开发环境 2.控制LED灯 二、实验环境 硬件:STM32开发板、CMSIS-DAP调试工具 软件:ARM的IDE:Keil C51 三、实验内容 1.实验原理 (1)LED灯原理与点亮 LED即发光二极管,有电流通过…

6.4.2_3最短路径问题_Floyd算法

Floyd弗洛伊德 膜拜大佬,给大佬鞠躬鞠躬鞠躬。。。。。。。。。 Floyd算法 ----解决顶点间的最短路径: 过程: 如下: 初始化(没有中转点):2个邻接矩阵A和path,第一个是没有中转点的2个顶点之间的最短路径…

<PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…

深度学习核心网络架构详解(续):从 Transformers 到生成模型

在上一篇文章中,我们详细介绍了卷积神经网络 (CNN)、循环神经网络 (RNN) 及其变体 LSTM 和 GRU。本文将继续探讨其他必须掌握的深度学习网络架构,包括 Transformers、生成对抗网络 (GAN)、自编码器 (Autoencoder) 以及强化学习基础。我们将深入讲解这些技…

AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡

AI智能混剪视频大模型开发方案:从文字到视频的自动化生成优雅草卓伊凡 引言:AI视频创作的未来已来 近年来,随着多模态大模型(如Stable Diffusion、Sora、GPT-4)的爆发式发展,AI已经能够实现从文字生成图像…

allWebPlugin中间件VLC专用版之截图功能介绍

背景 VLC控件原有接口具有视频截图方法,即video对象的takeSnapshot方法,但是该方法返回的是一个IPicture对象,不适合在谷歌等现代浏览器上使用。因此,本人增加一个新的视频截图方法takeSnapshot2B64方法,直接将视频截图…

Scratch节日 | 六一儿童节

六一儿童节到啦!快来体验这款超简单又超好玩的 六一儿童节 小游戏吧!只需要一只鼠标,就能尽情释放你的创意,绘出属于你自己的缤纷世界! 🎮 玩法介绍 鼠标滑动:在屏幕上随意滑动鼠标&#xff0c…

深度解析:跨学科论文 +“概念迁移表” 模板写作全流程

跨学科论文速通!融合“概念迁移表”的写作导航模板 你的论文是否曾被导师皱眉评价为“四不像”?不同学科的术语在稿纸上打架,核心逻辑若隐若现? 别让心血沦为学术混搭的牺牲品。一张精心设计的 概念迁移表,能将两个看…

深度剖析Node.js的原理及事件方式

早些年就接触过Node.js,当时对于这个连接前后端框架就感到很特别。尤其是以独特的异步阻塞特性,重塑了了服务器端编程的范式。后来陆陆续续做了不少项目,通过实践对它或多或少增强了不少理解。今天,我试着将从将从原理层剖析其运行…

VScode-使用技巧-持续更新

一、Visual Studio Code - MACOS版本 复制当前行 shiftoption方向键⬇️ 同时复制多行 shiftoption 批量替换换行 在查找和替换面板中,你会看到一个 .∗ 图标(表示启用正则表达式)。确保这个选项被选中,因为我们需要使用正则…

主流 AI IDE 之一的 Windsurf 使用入门

一、Windsurf 的常见入门界面 以上是本次展示Windsurf版本信息。 1.1 个人配置中心 1.2 AI 助手快捷设置 1.3 使用额度查看页面 1.4 智能助手 Windsurf 编辑器中 AI 助手名称 :Cascade 。打开 Cascade 窗口,开始聊天就可以了。方框里有写和聊两种状态锁…