news 2026/4/30 1:59:50

浅谈 MySQL InnoDB 的内存组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
浅谈 MySQL InnoDB 的内存组件

前言

MySQL中执行一条SQL语句,相应表数据的读写都是由存储引擎去做(更新数据、查询数据)。

在这个过程,存储引擎需要决策一些事情

  • 数据是从内存查还是从硬盘查

  • 数据是更新在内存,还是硬盘

  • 内存的数据什么时候同步到硬盘

所以存储引擎会按照内部逻辑与内存、硬盘交互。

我们可以按需选择存储引擎,比如常见的InnoDB、MyISAM、Memory等等。

众多存储引擎中,InnoDB是最为常用的,从MySQL5.5.8版本开始,InnoDB是默认的存储引擎。

InnoDB简介

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。

特点是行锁设计、支持MVCC、外键,提供一致性非锁定读,同时本身设计能够最有效的利用内存和CPU,是MySQL最常用的存储引擎。

InnoDB的重要内存结构

InnoDB存储引擎在内存中有两个非常重要的组件,分别是缓冲池(Buffer Pool)和重做日志缓存(redo log buffer)。

Buffer Pool简介

缓冲池(Buffer Pool)里面会缓存很多的数据,比如数据页、索引页、锁信息等等。

MySQL表数据是以页为单位,你查询一条记录,会从硬盘把一页的数据加载出来,加载出来的数据叫数据页,会放入到Buffer Pool中。

后续的查询先从Buffer Pool中找,没有命中再去硬盘加载,减少硬盘IO开销,提升性能。

更新表数据的时,如果Buffer Pool里命中数据,就直接在Buffer Pool里更新。

总之Buffer Pool会缓存很多的数据,以便后续的查询与更新。

小贴士:这里只是用数据页举例帮助大家理解,大家千万不要认为Buffer Pool里面只有数据页,它只是占Buffer Pool大部分空间,关于Buffer Pool更多细节,后续会有专门的文章讲解。

redo log buffer简介

接着思考一个问题,假设我们把Buffer Pool中某个数据页的某条数据修改了,但是硬盘的数据还未同步,此时数据是不一致的,如果MySQL宕机了,数据就丢失了。

这可怎么办呢。

为了保证数据的持久性,InnoDB存储引擎加入了redo日志功能,也叫重做日志。

每当我们对表数据进行更新时,会把“在某个数据页上做了什么修改”记录到重做日志缓存(redo log buffer)里。

当事务提交时,会把redo log buffer清空,刷盘到redo日志文件。

这样MySQL宕机了也没关系,因为重启后会根据redo日志去恢复数据。

小贴士:redo日志细节也很多,本文只做个介绍,后续会有专门的文章讲解。

小结

其实不难发现,缓冲池(Buffer Pool)和重做日志缓存(redo log buffer),它们都是为了减少硬盘IO开销。

因为Buffer Poolredo日志涉及内容较多,后面会出两篇文章单独讲。

今天讲的这些内容全是在给后面的文章做铺垫,大家先知道它们是干嘛的,留个印象就行了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 23:18:30

暗黑破坏神2 PlugY插件全解析:从安装到精通的进阶指南

暗黑破坏神2 PlugY插件全解析:从安装到精通的进阶指南 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 对于每一位暗黑破坏神2的单机玩家而言,…

作者头像 李华
网站建设 2026/4/26 22:14:09

5步根治键盘连击:专业级防抖工具全攻略

5步根治键盘连击:专业级防抖工具全攻略 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 机械键盘连击问题不仅影响打字效率&a…

作者头像 李华
网站建设 2026/4/18 18:04:27

金融数据接口全方位指南:从量化分析到API调用的零门槛实践

金融数据接口全方位指南:从量化分析到API调用的零门槛实践 【免费下载链接】akshare 项目地址: https://gitcode.com/gh_mirrors/aks/akshare 在金融科技快速发展的今天,高效获取准确的市场数据成为量化分析、投资决策和学术研究的核心基础。本文…

作者头像 李华
网站建设 2026/4/23 17:45:40

VibeThinker-1.5B真实表现如何?技术文档翻译测评

VibeThinker-1.5B真实表现如何?技术文档翻译测评 你是否试过把一段英文技术文档丢给通用大模型翻译,结果发现:术语翻得五花八门,“callback”一会儿是“回调”,一会儿是“回叫”,甚至冒出“回传函数”这种…

作者头像 李华
网站建设 2026/4/25 13:09:54

3个核心价值助力前端文档处理:从0到1掌握浏览器端文件解析技术

3个核心价值助力前端文档处理:从0到1掌握浏览器端文件解析技术 【免费下载链接】ofd.js 项目地址: https://gitcode.com/gh_mirrors/of/ofd.js 在数字化转型加速的今天,企业级应用对文档处理的需求日益增长。传统解决方案往往依赖后端服务进行文…

作者头像 李华
网站建设 2026/4/22 20:13:29

颠覆式开源图像查看器:重新定义创意工作流

颠覆式开源图像查看器:重新定义创意工作流 【免费下载链接】ImageGlass 🏞 A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 作为设计师,你是否曾因图片查看器启动缓慢而错失灵感迸发…

作者头像 李华