MySQL 的 InnoDB 缓冲池里有什么?--InnoDB存储梳理(二)

文章目录

  • 缓冲池的配置
  • 介绍一张表 INNODB_BUFFER_POOL_PAGES
    • 字段解释

缓冲池的配置

以下配置的意思,缓冲池在内存中的大小为20M;只有1个缓冲池实例;每一块的大小,插入缓冲占的百分比

# InnoDB 缓存池配置
innodb_buffer_pool_size = 20M
innodb_buffer_pool_instances = 1
innodb_buffer_pool_chunk_size = 2M# InnoDB 插入缓冲配置
innodb_change_buffer_max_size = 25

在我们启动mysqld的时候,日志中会打印InnoDB的初始化信息

在这里插入图片描述

介绍一张表 INNODB_BUFFER_POOL_PAGES

它是InnoDB存储引擎的一个缓存池页的信息表,用于显示 InnoDB 缓冲池中各页的信息,是一个临时表,没有主键,生产上别随便用。

查询这个表的数量1280个数据,算一下,InnoDB 的一页是 16k,1280 * 16k = 20480k;刚好就我们配置的 20M;在MySQL启动的时候,它就会把配置的所有的缓存池空间分成页,放到这个数据表里面。
在这里插入图片描述

字段解释

POOL_ID: 缓冲池的 ID。指缓冲池的编号。是代表当前这个页属于哪一个缓存池实例,innodb_buffer_pool_instances如果设置为2,就能看到这个字段值有0和1;我们设置了只有1个缓冲池实例,所以只有一个缓冲池实例0
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4d027e1df28343489640e1db2a8e02fb.png

BLOCK_ID: 缓冲池中的块 ID。看我的数据库,一个块有 10 页,现在有 1280 页,块ID最大 127。在这里插入图片描述
SPACE: 表示页所属的表空间 ID。0 通常表示系统表空间,就是data目录下的ibdata1文件,ID代表的信息,可以在 INNODB_SYS_TABLESPACES 中查询到,表空间就代表那个文件存储了这个页的信息,一般每张表都会有一个 *.ibd 文件存放该表的数据信息,这个就代表一下两个页的信息是存在test/test7.ibd这个文件里面的。
在这里插入图片描述
在这里插入图片描述

PAGE_NUMBER: 页号,在其所在的表空间中的编号,一般表空间的表空间头信息页、插入缓冲的位图信息页是在前面的,后面是段索引页,再后面就都是数据页,共享表空间没有存储表的数据信息,存储的事其他的信息。
在这里插入图片描述

PAGE_TYPE: 页的类型。可能的类型包括:

  • INDEX: B-tree 索引页也是存放数据的页,innodb 是聚簇索引存储的方式,主键索引和数据都在叶子节点上。
  • FILE_SPACE_HEADER: 表空间头页。
  • IBUF_BITMAP: 插入缓冲位图页。
  • IBUF_FREE_LIST: 插入缓冲空闲列表页。
  • IBUF_INDEX: 插入缓冲池/ insert buffer。
  • INODE: INODE 页。
  • SYSTEM: 系统页,可能包含数据字典、系统元数据…
  • UNKNOWN: 未知页类型,这个一般是未分配的页的类型。

查看当前我们的缓冲池中有哪些页。

SELECT POOL_ID, PAGE_TYPE, COUNT(*) AS PAGES FROM INNODB_BUFFER_PAGE GROUP BY POOL_ID, PAGE_TYPE;

在这里插入图片描述

这里是我执行了一条insert语句之后产生的,这就是是我们的插入操作用上了插入缓冲池;如果我们插入的表没有索引,那么不管怎么尝试都不会有这个类型的页面。所以 change buffer 只对非唯一索引有用,其他的没用
在这里插入图片描述FLUSH_TYPE: 页的刷新类型。缓冲池的刷新行为;代表该页的刷新是怎么产生的,比如,后台线程刷新的,用户查询刷新的FIX_COUNT: 页的固定计数。表示有多少事务当前固定了这个页,防止其从缓冲池中被驱逐,暂时还不知道用途。

IS_HASHED: 表示页是否在缓冲池哈希表中。可能的值有 YESNO,暂时还不知道用途。

NEWEST_MODIFICATION: 页的最新修改 LSN(日志序列号)。修改了数据之后,该值会有改动,数据库重启的时候就是0。

OLDEST_MODIFICATION: 页的最早修改 LSN。一般为0,暂时还不知道用途。

ACCESS_TIME: 页的最后访问时间。在某些配置中,这个值可能总是为 0。

TABLE_NAME: 表的名称。如果页不属于任何表,此值为 NULL,这个页是那张表的页信息。

INDEX_NAME: 索引的名称。如果页不属于任何索引,此值为 NULL 如果是INDEX页会有该信息。

NUMBER_RECORDS: 页中的记录数,这一页存了多少个记录。

DATA_SIZE: 页中的数据大小(字节数),这个页存了多少数据。

COMPRESSED_SIZE: 页的压缩大小(如果页被压缩),暂时还不知道用途。

PAGE_STATE: 页的状态。常见的值有:

  • NOT_USED: 页未使用。
  • FREE: 页空闲。
  • DIRTY: 脏页。
  • CLEAN: 干净页。
  • FILE_PAGE 文件页,这个页面对应的是某个表空间 .ibd 文件里面的页

IO_FIX: 页的 IO 修复状态。常见的值有:

  • IO_NONE: 没有 IO 操作。
  • IO_READ: 读取操作。
  • IO_WRITE: 写入操作。

IS_OLD: 页是否是旧的。可能的值有 YESNO

FREE_PAGE_CLOCK: 页的空闲页面时钟计数,暂时还不知道用途。

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

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

相关文章

Python之循环语句

这是《Python入门经典以解决计算问题为导向的Python编程实践》中58-65的内容,主要将了while循环语句和for循环语句。 循环 一、while循环语句语法:工作原理:案例解读要点 二、for循环语句语法工作原理、案例:寻找完全数 三、whil…

学习记录——day30 网络编程 端口号port 套接字socket TCP实现网络通信

目录 一、端口号 port 二、套接字 socket 1、原理 2、socket函数介绍 三、TCP实现网络通信 1、原理 2、TCP通信原理图 3、TCP相关函数 1)bind 绑定 2)listen 监听 3)accept 接收连接请求 4)recv 接收 5)sen…

Ubuntu系统中安装ffmpeg工具(详细图文教程)

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 📝《暗光增强》 &a…

RAG:系统评估,以RAGAS为例

面试的时候经常会问到,模型和系统是怎么评估的,尤其是RAG,这么多组件,还有端到端,每部分有哪些指标评估,怎么实现的。今天整理下 目前最通用的是RAGAS框架,已经在langchain集成了。在看它之前&…

Java面试--设计模式

设计模式 目录 设计模式1.单例模式?2.代理模式?3.策略模式?4.工厂模式? 1.单例模式? 单例模式是Java的一种设计思想,用此模式下,某个对象在jvm只允许有一个实例,防止这个对象多次引…

文本分类任务算法演变(一)

文本分类任务算法演变 1.简介和应用场景1.1使用场景-打标签1.2使用场景-电商评论分析1.3使用场景-违规检测1.4使用场景-放开想象空间 2贝叶斯算法2.1预备知识-全概率公式2.2贝叶斯公式2.3文本分类中的应用2.3.1任务如下 2.4贝叶斯的优缺点 3.支持向量机3.1支持向量机-决策函数3…

libnl教程(2):发送请求

文章目录 前言示例示例代码构造请求创建套接字发送请求 简化示例 前言 前置阅读要求:libnl教程(1):订阅内核的netlink广播通知 本文介绍,libnl如何向内核发送请求。这包含三个部分:构建请求;创建套接字;发送请求。 …

Web开发:web服务器-Nginx的基础介绍(含AI文稿)

目录 一、Nginx的功能: 二、正向代理和反向代理的区别 三、Nginx负载均衡的主要功能 四、nginx安装目录下的各个文件(夹)的作用: 五、常用命令 一、Nginx的功能: 1.反向代理:例如我有三台服务器&#x…

大数据项目——实战项目:广告数仓(第二部分)集群环境部署

目录 第4章 广告数仓架构设计 第5章 集群环境准备 5.1 服务器准备 5.1.1 创建3台虚拟机 5.1.2 SSH无密登录配置 5.1.3 编写集群分发脚本xsync 5.1.4 JDK准备 5.1.5 环境变量配置说明 5.2 Hadoop部署 5.2.1 完全分布式运行模式(开发重点) 5.2…

去噪、梯度与边缘检测

图像噪点消除 噪声在图像处理中指的是图像中出现的干扰因素,通常由采集设备或传输过程引起。噪声使得图像的亮度变得不均匀或引入了随机的干扰点。常见的噪声类型包括: 高斯噪声:符合正态分布的噪声,会使图像变得模糊或出现噪点。…

Java基础之switch分支语句

switch分支语句 ​ switch语句也称为分支语句,其和if语句有点类似,都是用来判断值是否相等,但switch默认只支持byte、short、int、char这四种类型的比较,JDK8中也允许String类型的变量做对比。 语法: switch (表达式…

8.15 哈希表中等 139 Word Break review 467 Unique Substrings in Wraparound String

139 Word Break【逐一对比vs.多种 分割 组合】 片面思考的思路&#xff1a; class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {//字符串和对应的字典&#xff0c;如果s种可以用空格分隔出一个或多个字典里的词就返回true//核心&#x…

windows 安装TVM

TVM支持在Windows环境下使用&#xff0c;但需要一些额外的配置。以下是如何在Windows Python环境中安装TVM的详细步骤。 1. 安装TVM的预备条件 在Windows上安装TVM之前&#xff0c;需要确保系统已经安装了以下工具和依赖项&#xff1a; Visual Studio: 安装包含C开发工具的V…

利用ZXing.Net Bindings for EmguCV识别条形码及绘制条形码边框17(C#)

上一篇博文&#xff1a;绘制条形码的效果不是很好&#xff1a;利用Emgucv绘制条形码边框16(C#)-CSDN博客 测试环境&#xff1a; win11 64位操作系统 visual studio 2022 ZXing.Net.Bindings.EmguCV 0.16.4 测试步骤如下&#xff1a; 1 新建.net framework 4.8的控制台项目…

Linux日常运维-主机名hosts

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本小章内容就是Linux进阶部分的日常运维部分&#xff0c;掌握这些日常运维技巧或者方法在我们的日常运维过程中会带来很多方…

【Vue3】嵌套路由

【Vue3】嵌套路由 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本文内…

【Linux】缓冲区和文件系统

目录 一、缓冲区 1.1 概念 1.2 用户缓冲区和内核缓冲区 二、磁盘的结构 三、文件系统 3.1 初识“块”和inode 3.2 磁盘分区和文件系统 一、缓冲区 1.1 概念 要理解什么是缓冲区&#xff0c;先看这段代码 #include <stdio.h> #include <string.h> #includ…

Linux系统驱动(十八)SPI总线(未整理)

文章目录 一、SPI总线协议简介二、SPI子系统驱动&#xff08;二&#xff09;SPI子系统API&#xff08;三&#xff09;SPI设备树节点 三、代码示例 一、SPI总线协议简介 高速、同步、全双工、非差分、总线式 传输速度在几十M 差分总线和非差分总线 非差分总线&#xff1a;受压…

江协科技STM32学习笔记(第13章 WDG看门狗)

第13章 WDG看门狗 13.1 WDG看门狗 13.1.1 WDG简介 看门狗就是程序运行的一个保障措施&#xff0c;我们得在程序中定期地喂狗&#xff0c;如果程序卡死了&#xff0c;没有在规定的时间里喂狗&#xff0c;那么看门狗硬件电路就会自动帮我们复位一下&#xff0c;防止程序长时间…

最新爆火文生图模型FLUX

在AI图片生成领域&#xff0c;Flux模型的推出引起了广泛关注。随着AI技术的不断进步&#xff0c;新的模型层出不穷&#xff0c;而Flux正是其中的一颗新星。 Flux&#xff1a;一款迅速走红的AI图片生成模型 8月初&#xff0c;初创公司Black Forest Labs推出了文本生成图像模型…