Buffer Pool

2023-09-16 12:55:11

一.Buffer Pool的含义

Buffer Pool:缓冲池,简称BP,其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。当Mysql执行查询的sql语句的时候,会先去缓存当中看是否有对应的数据,如果有则直接读内存,如果没有则去磁盘里拿,然后把数据放到Buffer Pool里拿,来提高查询速度。

Buffer Pool由缓存数据页(page)和对缓存数据页进行描述的数据块组成,控制块中存储着对应缓存页的所属的表空间、数据页的编号、以及对应缓存页在Buffer Pool中的地址等信息

BufferPool默认大小是128M,以Page页为单位,Page页默认大小16k,而控制块的大小约为数据页的5%,大概是800字节

二.InnoDB如何管理Page页

Page页分类

BP的底层是采用链表数据结构管理Page.在InnoDB访问表记录和索引时会在Page页中缓存,以后使用可以减少磁盘IO操作,提升效率。

如图就是Buffer Pool大体的结构图

Page一共有3中状态

free page:空闲page,不被使用

clean page:被使用page,数据从来没有被修改过

dirty page:脏页,被使用page,数据被修改过,但是还没有持久化到磁盘,Page页中数据和磁盘的数据产生了不一致

Page页如何管理

针对上面的3中Page类型,InnoDB通过三种链表结构来维护和管理

1.free list:表示空闲缓冲区,管理free page

free链表是把所有空闲的缓冲页对应的控制块作为一个个节点放到一个链表中,这个链表叫做free链表,free链表只有一个基节点是不记录缓存页信息(单独申请空间),它里面存放了free链表的头结点的地址,尾结点的地址,还有free链表当前有多少个节点

2.flush list  里面存放的都是脏页(Buffer Pool里面已经修改了,但是还没有持久化到磁盘),内部page按修改时间排序

InnoDB引擎为了提高处理效率,在每次修改缓冲页之后,并不是立刻把修改刷新到磁盘上,而是在未来的某个时间点进行刷新操作,所以需要使用flush链表存储脏页,所有被修改过的缓冲页对应的控制块都会作为节点加入到flush链表中

3.Iru list: 表示正在使用的缓冲区,缓冲区分为两部分,前面链表称为new列表区,存放经常访问的数据,后面的链表区称为old链表区,存放使用较少的数据

当一个新的数据页要被插入到BufferPool中的时候,会先删掉old区域最后一个控制块,然后把新的数据页插入到old区域最前头,当这个数据页第二次被访问且与第一次被访问超过1s,就会把old区域数据页加到new区域,并删掉在old区域对应的控制块。

更多推荐

【Linux】自动化构建工具 —— make/makefile&&Linux第一个小程序 - 进度条

​​📝个人主页:@Sherry的成长之路🏠学习社区:Sherry的成长之路(个人社区)📖专栏链接:Linux🎯长路漫漫浩浩,万事皆有期待上一篇博客:Linux编译器gcc/g++的使用&&初识动静态链接库文章目录一、前言二、概念三、代码实现四、实现原理1、依赖关系和依赖方法2、清理①.PHONY伪目标②.PHO

ZABBIX 6.4安装部署

ZABBIX6.4安装部署zabbix的主要组成:1、ZabbixServer6.4:Zabbix服务端,是Zabbix的核心组件。它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库中。2、ZabbixAgent:Zabbix客户端,部署在被监控设备上,负责采集监控数据,采集后的数据发送给ZabbixServ

林木种苗生产vr虚拟实训教学降低培训等待周期

林业种植管理在保护水土流失、气候变化及经济社会发展中发挥重要的作用,林业教学往往需要进入林区进行实操察验,在安全性、时间及效率上难以把控,因此有更多林业畜牧院校创新性地引进VR虚拟现实技术。在林业领域,实地调查是获取准确数据和深入了解森林生态的重要手段。然而,传统的实地调查方法存在诸多问题,如时间成本高、人力物力投入大

每天一个面试题之类加载机制、spirngboot的启动机制

jvm类加载机制Java虚拟机(JVM)的类加载机制是Java的关键部分,它负责加载、链接和初始化类。类加载机制的主要任务是将Java类的字节码文件转换为可以在JVM上执行的运行时数据结构。这个过程包括以下三个主要步骤:加载(Loading):在此阶段,类加载器负责查找并加载类的字节码文件。这个过程通常从类路径(Cla

搭建私人图床结合内网穿透实现公网访问,让您的摄影作品连接世界

文章目录1.树洞外链网站搭建1.1下载安装树洞外链1.2树洞外链网页测试1.3cpolar的安装和注册2.本地网页发布2.1Cpolar临时数据隧道2.2Cpolar稳定隧道(云端设置)2.3Cpolar稳定隧道(本地设置)3.公网访问测试社交平台具有庞大的用户基础和活跃的社交功能,我们将图片发布到社交平台可以让照片更

Learn Prompt-ChatGPT 精选案例:内容总结

ChatGPT可以通过分析内容并生成一个浓缩版本来总结文本。这对节省时间和精力很有帮助,特别是在阅读长篇文章、研究论文或报告时。通用总结​你所要做的就是把具体的文字复制并粘贴到提示中,并要求ChatGPT对所选文本进行简化总结。这里我们参考openai官网提供的例子Summarizefora2ndgrader来总结一下

想学嵌入式开发,薪资怎么样?

想学嵌入式开发,薪资怎么样?对于嵌入式工程师来说呢,它重点学习内容就是首先一定要打好基础,如果从编程语言角度来讲,那么可以在语言上选C或者C++,你可以选择其中任何一门语言作为你的入门。最近很多小伙伴找我,说想要一些嵌入式机学习资料,然后我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「嵌入式入门到高级教程+工

思腾云计算

全新一代的Atlas是支持ARM架构和X86架构的,像Intel,AMD,海光,鲲鹏,飞腾的CPU都支持。Atlas300IPro,是基于昇腾310芯片开发推理卡,最高功耗72W,被动散热,半高半长单宽,达芬奇架构,作为推理卡需求比较简单,算力和显存平衡就可,所以它支持FP16*70TFLOPS和INT8*140TOP

扩展pytest接口自动化框架-MS数据解析功能

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】开篇MeterSphere的数据源通过html页面上传后,需要将请求方式进行拆分。get接口的参数,常以params的方式进行传参,也就是在url后带上参数。post接口一般是以json字符串的形式传参,也

有效的网络带宽监控策略

世界各地的企业正在采用多种策略来减少瓶颈、增强网络性能并最大限度地提高投资回报率,以跟上不断发展的混合基础架构的步伐。虽然这些策略因组织而异,并提供了自己的好处,但它们可能会使IT基础架构的监控方式复杂化。在设计有效的监控策略时,必须了解各个组件的网络吞吐量、带宽、流量活动、运行状况和性能以及整个网络。网络带宽监视使网

【前端知识】Three 学习日志(三)—— 光源对物体表面的影响

Three学习日志(三)——光源对物体表面的影响一、设置材质为受光照影响//MeshLambertMaterial受光照影响constmaterial=newTHREE.MeshLambertMaterial();此时,场景中一片漆黑,无法看到原来的物体,需要设置光源来照亮物体。二、设置点光源//点光源:两个参数分别表

热文推荐