当前位置: 首页 > news >正文

数据页和缓存页(BufferPool)

1. 数据页(dataPage)

什么是数据页?

数据页是 MySQL 存储引擎在磁盘和内存之间传输数据的基本单位,默认大小为16KB。

数据页的结构:

  • 表头:储存与页相关的元信息,比如,页号,页类型。
  • 数据行:存储实际的表格记录数据。
  • 指针和链表:为了高效地访问数据,数据页中还包含了指向其他相关页的指针和链接。

什么是页分裂:

当数据页满了以后,无法再插入新的行时,数据库引擎会自动将该页分裂为两个页,以便容纳新的数据,将原始页的一部分移到新的数据页的另一部分,通过指针连接,从而保证索引的有序和高效性。

2. 缓存页(bufferPool)

什么是缓存页?

bufferPool是基于内存的,而mysql数据是存储在磁盘中,将数据以数据页的形式缓存在bufferPool中,可以很大的提升读写效率。Buffer Pool 以页为单位缓冲数据,可以通过 innodb_buffer_pool_size 参数调缓冲池的大小,默认是 128 M。

缓存页的数据结构?

innodb通过以下三种链表来管理缓存页

Free List(空闲页链表):管理空闲页;

Flush List(脏页链表):管理脏页;

LRU List,管理脏页加干净页,将最近且经常查询的数据缓存在其中,而不常查询的数据就淘汰出去。

脏页什么时候会被刷入磁盘?

1、redo log日志满的时候,会主动触发脏页刷新到磁盘;

2、Buffer Pool空间不足时,需要将一部分数据页淘汰掉,如果淘汰的是脏页,会将脏页刷新到磁盘;

3、Mysql认定空闲的时候,会定期将脏页同步到磁盘;

4、在Mysql关闭之前,会将脏页全部刷入磁盘。

ps:以下是我整理的java面试资料,密码是obht,感兴趣的可以看看。最后,创作不易,觉得写得不错的可以点点关注!

链接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》 

http://www.lryc.cn/news/309161.html

相关文章:

  • LibreOJ 136. 最小瓶颈路 题解 最小生成树 倍增
  • 前端学习第三天-css基础
  • 各种使用chatgpt prompts技巧
  • 基于单片机的企业指纹考勤系统设计
  • JUC(java.util.concuurrent)的常见类介绍
  • 【中科院计算所】WSDM 2024冠军方案:基于大模型进行多文档问答
  • Android提供了多种方式来打开特定文件夹中的视频
  • 基于django的购物商城系统
  • Swagger3 使用详解
  • JVM 第二部分-2(堆,方法区)
  • 蓝桥杯Java B组历年真题(2013年-2019年)
  • 你是谁,便会遇见谁
  • Linux/Centos 部署静态IP,解决无法访问目标主机、Destination Host Unreachable、无法ping通互联网的问题
  • 在学习云原生的时候,一直会报错ImagePullBackOff Back-off pulling image
  • Android Activity跳转详解
  • 计算机网络(2)-----数据链路层
  • 贪心算法(算法竞赛、蓝桥杯)--修理牛棚
  • 【AIGC】微笑的秘密花园:红玫瑰与少女的美好相遇
  • vue3 中 主题定制
  • 数据分析之Logistic回归分析(二元逻辑回归、多元有序逻辑回归、多元无序逻辑回归)
  • 【c++】通讯录管理系统
  • Tomcat 架构
  • Spring 整合mybatis
  • centos7升级openssl_3
  • nvidia a100-pcie-40gb环境安装
  • 嵌入式 Linux 下的 LVGL 移植
  • js同步和异步请求
  • 【Leetcode】2369. 检查数组是否存在有效划分
  • Laravel Octane 和 Swoole 协程的使用分析
  • 腾讯云又双叕降价,云服务器配置优惠价格表2024新版报价