数据页和缓存页(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面试宝典》

相关推荐
Wang's Blog14 分钟前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
讳疾忌医丶33 分钟前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
郑州光合科技余经理1 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
毅炼1 小时前
Rover-Suite 开源发布:轻量服务注册中心与网关一体化方案
java·后端·系统架构·gateway
梦想平凡1 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
sunshine22 girl3 小时前
Idea中如何搜索
java·ide·intellij-idea
猫吻鱼3 小时前
【AI 01】【Spring AI 基础使用】
java·spring·spring ai
梨涡泥窝3 小时前
基于SSM的校园二手交易平台的设计与实现
java·tomcat
许彰午3 小时前
44-useRowSet镜像实现
java·低代码·架构
bamboolm4 小时前
springboot+Ollama整合
java·ollama