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

📢博客主页:https://blog.csdn.net/2301_779549673

📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📢本文由 JohnKi 原创,首发于 CSDN🙉

📢未来很长,值得我们全力奔赴更美好的生活✨

文章目录


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


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

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

在对数据库进行 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 中包含至少一个 CChunk,Chunk 管理着多个数据页
  • 缓冲池中使用控制块与数据页建立对应关系,通过双向链表连接每个控制块,从而管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内存结构总结 做了一个较为详细的介绍,不知道对你有没有帮助呢

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

相关推荐
花间相见13 分钟前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见15 分钟前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing202330 分钟前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
这个DBA有点耶40 分钟前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构
SL_staff1 小时前
考勤同步工资核算总出错?破解企业级精准自动化的三个刚性支点
mysql·github·全栈
对空六课1 小时前
RFM分层边界变化的回溯计算
大数据·服务器·前端·数据库·人工智能·算法·数据分析
小羊没烦恼!1 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
CableTech_SQH1 小时前
行业运维新标杆:百盛3D全场景运维系统
运维·数据库·信息与通信·综合布线
毕业设计7031 小时前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
ITOM运维行者2 小时前
WAN监控怎么做?从链路质量指标到路径级定位的完整方法
数据库·人工智能·机器学习