innodb 的 buffer pool 管理 page

在这里插入图片描述

page 页结构

  • page是整个InnoDB存储的最基本构件,也是InnoDB磁盘管理的最小单位,与数据库相关的所有内容都存储在这种Page结构里。

  • Page分为几种类型,常见的页类型有

    • 数据页(B±tree Node)
    • Undo页(Undo Log Page)
    • 系统页(System Page)
    • 事务数据页 (Transaction System Page)
  • page 页结构可分为3个部分
    在这里插入图片描述

1.通用部分 (文件头+文件尾)

  • 文件头和文件尾
  • 将页的内容进行封装 ,通过文件头和文件尾校验的CheckSum方式来确保页的传输是完整的
  • 其中比较重要的是在文件头中的FIL_PAGE_PREVFIL_PAGE_NEXT字段,通过这两个字段,我们可以找到该页的 上一页和下一页,实际上所有页通过两个字段可以形成一条双向链表

2.记录部分 (最小和最大记录 +用户记录 + 空闲空间)

  • 最小和最大记录 +用户记录 + 空闲空间
    主要作用是存储记录,所以“最小和最大记录”和“用户记录”部分占了页结构的主要空间。
    另外空闲空间是个灵活的部分,当有新的记录插入时,会从空闲空间中进行分配用于存储新记录

3.目录部分 (页目录)

  • 页目录
  • 数据页中行记录按照主键值小到大顺序串联成一个单链表
  • 页中记录是以单向链表的形式进行存储的,且单链表的链表头为最小记录,链表尾为最大记录。
  • 并且为了更快速地定位到指定的行记录,通过Page Directory实现目录的功能,借助Page Directory使用二分法快速找到需要查找的行记录。
    在这里插入图片描述

page 页分类

free page(空闲页)

空闲page,未被使用

clean page(干净页)

被使用page,数据没有被修改过

dirty page(脏页)

脏页,被使用page,数据被修改过,Page页中数据和磁盘的数据产生了不一致
在这里插入图片描述

page 页维护

针对上面所说的三种page类型,InnoDB通过三种链表结构来维护和管理

1.free list(管理free page)

  • 空闲缓冲区,管理free page
  • free链表是把所有空闲的缓冲页对应的控制块作为一个个的节点放到一个链表中, 这个链表便称之为free链表
  • 基节点:free链表中只有一个基节点是不记录缓存页信息(单独申请空间)它里面就存放了free链表的
    • 头节点的地址
    • 尾节点的地址
    • 还有free链表里当前有多少个节点
      在这里插入图片描述

2.flush list (dirty page)

  • 需要刷新到磁盘的缓冲区,管理dirty page
  • 内部page按修改时间排序。
    · innoDB引擎为了提高处理效率,在每次修改缓冲页后,并不是立刻把修改刷新到磁盘上,而是在未来的某个
    时间点进行刷新操作.所以需要使用到uSh链表存储脏页,凡是被修改过的缓冲页对应的控制块都会作为节点加入到flush链表.
    在这里插入图片描述

3.Iru list(管理 clean page,dirty page)

  • 正在使用的缓冲区,管理clean page和dirty page
  • 缓冲区以midpoint为基点,
    • 前面链表称为new列表区,存放经常访问的数据(热数据区),占63%;
    • 后面链表称为old列表区,存放使用较少数据(冷数据区),占37%

在这里插入图片描述

  • 冷数据区的数据页什么时候会被转到到热数据区呢?
    1.如果该数据页在LRU链表中存在时间超过1S,就将其移动到链表头部(链表指的是整个LRU链表)
    2.如果该数据页在LRU链表中存在的时间短于1s,其位置不变(由于全表扫描有一个特点,就是它对某个页的频
    繁访问总耗时会很短)

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

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

相关文章

PC显示字体和浏览器的字体不一致

1:设置了PC的区域,显示字符, 2:导致浏览器显示的字符一半大一半小 3:为什么去设置这个,因为担心封号 4:不让它检测出我是他大佬

重要的数据模型之一Brand

重要的数据模型之一Brand 1. 创建class类2. 属性 2.1 属性name2.2 其他属性2.3 代码2.4 绘制牌2.5 添加属性2.6 重写绘制函数2.7 错误2.8 简单测试一下 3. 定义一个线程4. 修改5. 本次结束代码 重要的数据模型之一Brand 学习于bilibili 春娇与志明 1. 创建class类 在model包…

【C++初阶】第七站:string类的初识(万字详解、细节拉满)

前言: 📍本文知识点:string的初识 💨个人博客:Dream_Chaser~-CSDN博客 🚩本专栏:C 目录 一、什么是STL 二、STL的六大组件 三、STL的缺陷 四、为什么学习string类? 五、标准库中…

云ERP vs 本地ERP:优劣对比与选择指南

在性能方面,本地ERP需要需要较高级别的计算机系统和其他设备来确保其高效运行。如果企业的计算机设备不够先进,那么选择本地ERP可能导致系统性能下降。而云ERP解决方案则能保证性能,只要企业拥有稳定的互联网连接即可。 在成本方面&#xff0…

Linux的基本使用

1.Linux的背景 1.1什么Linux Linux是⼀个操作系统.和Windows是"并列"的关系. 1.2Linux系统的优势 1. 开源(意味着免费,便宜) 2. 稳定(Linux可以运⾏很多年,都不会发⽣重⼤问题) 3. 安全(Linux只有管理员或者特定⽤⼾才能访问Linux内核) 4. ⾃由(不会被强加商业产品和…

练习题-15

问题:设函数 f ( x ) ∑ n 0 ∞ cos ⁡ ( n x ) 2 n f(x)\sum_{n 0}^{\infty} \frac{\cos (nx)}{2^n} f(x)∑n0∞​2ncos(nx)​. 求 A ∫ 0 2 π f 2 ( x ) d x A\int_0^{2\pi} f^2(x) dx A∫02π​f2(x)dx. 解:把 f f f看成是某个周期 2 π 2\pi 2…

EasyCloud软件简介

运行环境:Win10 PCL1.9 VTK8.1 Qt5.12 VS2017 基于PCL点云库的三维点云数据处理软件 1.软件用户界面 本软件的用户界面主要包括以下几个部分(如图1): [1]菜单栏,将软件功能模块划分为不同菜单&…

JAVA八股--集合面试题

AVA八股--集合面试题--上 java只有值传递,没有引用传递代理模式Java之HashMap和Hashtable选用 ArrayDeque 来实现队列要比 LinkedList 更好为什么HashMap的长度一定是2的次幂?HashMap常见遍历方式 java只有值传递,没有引用传递 文章讲解 文…

第四讲 Buffer Pool

问题:DBMS 是如何管理其内存和磁盘之间来回移动数据的? 答案:在决定如何在磁盘中来回移动数据时,我们必须考虑两个关键方面: 空间控制【Spatial Control】: 将页【pages】写在在磁盘的什么地方&#xff…

HJ6 质数因子HJ7 取近似值HJ8 合并表记录HJ9 提取不重复的整数

HJ6 质数因子 质数因子_牛客题霸_牛客网 题目分析 算法的核心是质因数分解,它通过以下步骤实现: 1. 处理2的因子 首先,算法处理输入数n的2因子。因为2是最小的质数,也是唯一的偶数质数,所以首先检查n能被2整除多少…

vsc ctrl+. 无效的问题

描述 ubuntu ibus 输入法 vsc ctrl.快捷键无效 输出 _e 解决方案: 运行 ibus-setup 把表情符号这里的快捷键改了

MR混合现实情景实训教学系统在消防安全模拟上的教学应用

MR混合现实情景实训教学系统在消防安全模拟上的教学应用,将为消防安全教育带来一场革命性的改变。该系统能通过混合现实技术将真实环境与虚拟环境结合,让学生亲身体验到真实的火灾现场,并在模拟环境中进行实践操作,提高消防安全意…

Linux系统——Mysql索引详解

目录 一、索引介绍 1.索引的概念 2.索引的作用 3.索引的缺点 4.创建索引的原则依据 5.索引优化 二、索引的分类和创建 1.索引分类 1.1普通索引 1.1.1直接创建索引 1.1.2修改表方式创建 1.1.3创建表的时候指定索引 1.2唯一索引 1.2.1直接创建唯一索引 1.2.2修改表…

mysql 空间查询 多边形内的点

数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段,原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…

基于Springboot+Vue的前后端分离的简单Demo案例(一)

后端创建Springboot项目 创建数据库表结构及表信息 添加依赖&#xff08;pom.xml&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/X…

微服务网关介绍

1. 为什么是Spring Cloud Gateway 一句话&#xff0c;Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本&#xff0c;而这个版本是基于过滤器的&#xff0c;是阻塞IO&#xff0c;不支持长连接。Zuul 2.x版本跟1.x的架构大一样&#xff0c;性能也有…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)

前言 在当前多元化开发环境下&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱&#xff0c;而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

ArcGis 地图文档

ArcGis官网 https://developers.arcgis.com/labs/android/create-a-starter-app/ Arcgis for android 加载谷歌、高德和天地图 https://blog.csdn.net/qq_19688207/article/details/108125778 AeroMap图层地址: API_KEY: 7e95eae2-a18d-34ce-beaa-894d6a08c5a5 街道图&#xf…

Python模块与包管理使用pip与virtualenv【第151篇—模块与包管理】

Python模块与包管理&#xff1a;使用pip与virtualenv 在Python开发中&#xff0c;模块和包管理是至关重要的&#xff0c;它们使得代码的组织、重用和共享变得更加简单和高效。本文将介绍两个Python生态系统中最常用的工具&#xff1a;pip和virtualenv。通过这些工具&#xff0…

探索医用制氧机的种类及其应用场景

医用制氧机是一种能够制取高纯度氧气的制氧设备&#xff0c;广泛应用于各种场景。随着科技的进步和行业需求的增加&#xff0c;医用制氧机的种类和应用领域也在不断扩展。本文将探索医用制氧机的多元种类及其应用领域&#xff0c;以更好地了解这一设备的重要性。 一、医用制氧机…