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

【MySQL】日志缓冲区详解 以及 InnoDB内存结构总结

📢博客主页:https://blog.csdn.net/2301_779549673
📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述

文章目录

  • 🏳️‍🌈一、日志缓冲区的作用?
  • 🏳️‍🌈二、日志不通过Log Buffer直接写入磁盘不行吗?
  • 🏳️‍🌈三、InnoDB内存结构总结
  • 👥总结


前些天发现了一个巨牛的 人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到 网站。


在这里插入图片描述

🏳️‍🌈一、日志缓冲区的作用?

日志缓冲区 是服务器启动时向操作系统申请的一片连续的内存区域,存储即将要写入磁盘日志文件的数据。

在对数据库进行 DML 操作时,InnoDB 会记录对应操作的日志,比如为保证数据完整性实现数据库崩溃恢复的 Redo Log,这些日志会首先写入 Log Buffer 中,从而解决同步写磁盘导致的性能问题然后根据不同落盘策略最终写入磁盘

🏳️‍🌈二、日志不通过Log Buffer直接写入磁盘不行吗?

如果日志不通过 Log Buffer 直接写入磁盘,那么每次进行 DML 操作都会进行一次磁盘I/0,这样会严重影响效率,所以把日志统一写入内存中的LogBuffer,根据刷盘策略统一进行落盘操作,可以实现一次磁盘I/0写入多条日志,从而提升效率

🏳️‍🌈三、InnoDB内存结构总结

InnoDB内存结构主要分为:

  • Buffer Pool 缓冲池、
  • Change Buffer 变更缓冲区
  • adaptive_hash_index 自适应哈希索引。
  • Log Buffer 日志缓冲区。

缓冲池

  • 内存中的主要工作区域。
  • 缓冲池中包含至少一个 Instances,每个 Instances 中包含至少一个 CChunkChunk 管理着多个数据页
  • 缓冲池中使用控制块与数据页建立对应关系,通过双向链表连接每个控制块,从而管0理数据页
  • 缓冲池中有三个链表分别是 Free List、LRU List 和 Flush List:。
    • Free List: 只管理 Free 页
    • LRU List: 管理 Clean 页和 Dirty 页
    • Flush List: 只管理 Dirty 页
  • 缓冲池淘汰策略采用变形的最近最少使用算法LRU。

变更缓冲区
用来缓存对二级索引数据的修改,从而减少磁盘的10次数以提升效率。

自适应哈希索引
为频繁使用的查询条件和对应的数据页建立映射关系,从而提升内存级别的查询效率

日志缓冲区
把日志统一写入内存中的 Log Buffer,根据刷盘策略统一进行落盘操作,从而减少磁0盘的10次数以提升效率


👥总结

本篇博文对 【MySQL】日志缓冲区详解 以及 InnoDB内存结构总结 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

http://www.xdnf.cn/news/437995.html

相关文章:

  • 解决docker alpine缺少字体的问题 Could not initialize class sun.awt.X11FontManager
  • 浅析 Golang 内存管理
  • Chrome安装最新vue-devtool插件
  • 国产免费工作流引擎star 6.5k,Warm-Flow升级1.7.2(新增案例和修复缺陷)
  • 【​​HTTPS基础概念与原理​】​​SSL/TLS协议演进史:从SSLv3到TLS 1.3
  • 嵌入式Linux Qt开发:2、Qt creator简单配置、Qt Designer使用以及信号槽机制使用
  • QT之信号与槽
  • 嵌入式设计模式基础--C语言的继承封装与多态
  • Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
  • 初学c语言14(指针6)
  • 用模型预测控制算法实现对电机位置控制仿真
  • 深入浅出入侵检测系统(IDS)的工作原理与应用场景
  • TTS-Web-Vue系列:Vue3实现内嵌iframe文档显示功能
  • Ubuntu24.04编译ORB_SLAM的一系列报错解决
  • 数字取证-内存取证(volatility)
  • 使用VSCode编辑Markdown+PlantUml
  • 前端面试宝典---js垃圾回收机制
  • “海外滴滴”Uber的Arm迁移实录:重构大规模基础设施​
  • 知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑
  • 广东省省考备考(第十天5.14)—言语(第三节课)
  • deepseek梳理java高级开发工程师算法面试题
  • C++23 中的 ranges::starts_with 与 ranges::ends_with
  • Go语言中的函数类型参数:深入理解`func()`
  • 编程日志5.6
  • 比亚迪固态电池突破:王传福的技术哲学与产业重构|创客匠人热点评述
  • 部署安装gitlab-ce-17.9.7-ce.0.el8.x86_64.rpm
  • PyQt5基本窗口控件(QComboBox(下拉列表框))
  • AI开发者的算力革命:GpuGeek平台全景实战指南(大模型训练/推理/微调全解析)
  • 注解和 XML 两种方式有什么区别?
  • hudi + flinksql 处理 金额汇总的实时场景