Buffer Pool

一.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区域对应的控制块。

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

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

相关文章

显示器显示的画面突然偏红色如何解决

显示器显示的画面突然偏红色如何解决 1. 概述2. 解决方法结束语 1. 概述 显示器显示的画面突然偏红色 ,使用向日葵远程电脑,看到的画面是正常的,但是显示器上的画面确还是骗红的,这时候就需要看一下是不是开启了系统也夜间模式&a…

四川百幕晟科技:提升店铺质量方法是什么?

抖店是抖音旗下的移动电子商务平台,为商家提供在线销售和促销的机会。在抖店,经验值是商家评价和信誉的重要指标之一。反映了平台上商户的服务质量和用户满意度。那么,如何查看自己在抖店手机上的体验分数呢? 1、如何查看抖店手机…

Eclipse 安装串口终端工具

Eclipse已集成串口终端显示,只需要我们自己下载安装即可使用。使用SSH连接也差不多。 查看eclipse版本信息 help->About Eclipse 查看version,我的是4.7.3a,记住代号,我的是“Oxygen”,下面有用。 安装eclipse自带的“Termin…

FPGA实现Cordic算法——向量模式

FPGA实现Cordic算法——向量模式 FPGA实现Cordic算法——向量模式1.cordic算法基本原理2.FPGA实现cordic算法向量模式i、FPGA串行实现cordicii、FPGA流水线实现cordiciii、实验结果 FPGA实现Cordic算法——向量模式 1.cordic算法基本原理 FPGA中运算三角函数,浮点数…

初见QT,控件的基本应用,实现简单登录窗口

窗口实现代码 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口设置this->setFixedSize(538, 373); //固定窗口大小this->setWindowIcon(QIcon("G:\\QT_Icon\\windos_icon2.png"))…

多图片展示弹窗插件

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>图片预览完善</title><style>/*** Created by WangCheng on 2020/9/24.*//*背景框*/.mask-layer * {padding: 0;margin: 0;box-sizing: border-box;}.mask-laye…

肖sir__mysql之三表__008

mysql之三表 create table student( stu_no int, stu_name varchar(10), sex char(1), age int(3), edit varchar(20) ) DEFAULT charsetutf8; insert into student values (1,‘wang’,‘男’,21,‘hello’), (2,‘小明’,‘女’,22,‘haha2’), (3,‘hu’,‘女’,23,‘haha3…

Fast-DDS 服务发现简要概述

阅读本文章需要对DDS基础概念有一些了解&#xff0c;一些内容来自Fast-DDS官方文档&#xff0c;一些是工作中踩过的坑。 1. 服务发现阶段 满足OMG标准的DDS服务发现分为两部分&#xff0c;分别是: PDP(Participant Discovery Protocol 参与者发现协议)&#xff1a;参与者确认…

豆瓣图书评分数据的可视化分析

导语 豆瓣是一个提供图书、电影、音乐等文化产品的社区平台&#xff0c;用户可以在上面发表自己的评价和评论&#xff0c;形成一个丰富的文化数据库。本文将介绍如何使用爬虫技术获取豆瓣图书的评分数据&#xff0c;并进行可视化分析&#xff0c;探索不同类型、不同年代、不同…

第13节-PhotoShop基础课程-裁剪工具

文章目录 前言1.裁剪工具1.基本操作 Alt Shift2.拉直3.内容识别 自动填充 2.透视裁剪工具3.切片工具-长图分成多个4.切片选择工具5. 存储为一张一张 前言 1.裁剪工具 1.基本操作 Alt Shift 2.拉直 可以矫正图片 3.内容识别 自动填充 2.透视裁剪工具 可以拉正图片 3.切片工具-…

Spring系列文章:Spring中的设计模式

一、简单⼯⼚模式 BeanFactory的getBean()⽅法&#xff0c;通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式&#xff08;静态⼯⼚模 式&#xff09;&#xff1b; 二、⼯⼚⽅法模式 FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法&a…

Python中进行特征重要性分析的9个常用方法

特征重要性分析用于了解每个特征(变量或输入)对于做出预测的有用性或价值。目标是确定对模型输出影响最大的最重要的特征&#xff0c;它是机器学习中经常使用的一种方法。 为什么特征重要性分析很重要? 如果有一个包含数十个甚至数百个特征的数据集&#xff0c;每个特征都可能…

发现某设备 adb shell ps 没有输出完整信息

某错误示例 并不是都使用 -ef 参数查找都能够返回完整信息&#xff0c;某些版本设备不适用 -ef 也不会返回完整信息。 简单兼容 简单兼容不同版本 Android 设备查找进程列表&#xff0c;没有通过脚本判断 Android 版本&#xff0c;如有兴趣可以自己修改。 :loop adb shell…

在测试过程中引入可观测性平台提升业务质量

作者 观测云 产品技术专家 成都办公室 - 刘跃兰 前言 随着微服务技术的发展&#xff0c;微服务概念已深入人心&#xff0c;越来越多的企业开始使用微服务架构来开发业务应用。业务应用系统的整体架构变得更加复杂&#xff0c;并存在各种各样的不确定性因素&#xff0c;从而对…

小节8:Python之文件操作

1、文件在哪里&#xff1f; 如果用代码对文件进行操作&#xff0c;需要先找到那个文件 MacOS/Linux&#xff1a;斜杠/ 表示根目录&#xff0c;一切的文件、目录都存放在根目录下面。 Windows系统&#xff1a;就不一样了&#xff0c;它每一个磁盘分区都有自己的根目录&#x…

01-Redis核心数据结构与高性能原理

上一篇&#xff1a; 1.Redis安装 下载地址&#xff1a;http://redis.io/download 安装步骤&#xff1a; # 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下&#xff0c;并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz…

[C++入门]---List的使用及模拟实现

文章目录 1.list的介绍2.list的使用2.1list的构造函数2.2list modifiers2.3list capacity2.4list elment access2.5iterator的使用 3.list的模拟实现3.1list的源码 1.list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向…

【数据结构】堆排序详解

文章目录 一、堆排序思想二、向上调整建堆排序三、向下调整建堆排序四、总结 对于什么是堆&#xff0c;堆的概念分类以及堆的向上和向下两种调整算法可见&#xff1a; 堆的创建 一、堆排序思想 int a[] { 2,3,5,7,4,6 };对于这样一个数组来说&#xff0c;要想要用堆排序对它…

java.lang.ClassCastException: android.os.BinderProxy cannot be cast to ...

项目开发遇到下面这个报错了&#xff01; 问题原因 直接说原因&#xff0c;就是因为进程间不能直接传递对象&#xff0c;应该传递该Binder对象的映射&#xff08;代理对象&#xff09;&#xff0c;所以类型转换就出错了。如果在同一个进程中&#xff0c;直接传递对象没有关系&a…

9月15日作业

Qt代码 #include "mywnd.h"//构造函数的定义 mywnd::mywnd(QWidget *parent): QWidget(parent) //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作 {//窗口设置this->resize(QSize(500, 433));this->setWindowTitle("Widget&quo…