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

相关推荐
RainbowSea2 小时前
12. LangChain4j + 向量数据库操作详细说明
java·langchain·ai编程
RainbowSea2 小时前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑6 小时前
Jpa使用union all
java·spring boot·后端
用户3721574261357 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊8 小时前
Java学习第22天 - 云原生与容器化
java
渣哥9 小时前
原来 Java 里线程安全集合有这么多种
java
间彧10 小时前
Spring Boot集成Spring Security完整指南
java
间彧10 小时前
Spring Secutiy基本原理及工作流程
java
Java水解11 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
Java水解11 小时前
Mysql查看执行计划、explain关键字详解(超详细)
后端·mysql