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

相关推荐
youdexiang19 分钟前
Android录音软件时间关键词检索功能分析
java·人工智能
sunshine22 girl1 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat1 小时前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
泡茶喝茶写代码3 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
hasty3 小时前
policy.xml 在,不代表策略生效:ImageMagick 补丁给安全配置验收的提醒
xml·mysql·安全
\光辉岁月/3 小时前
7.javase-面向对象
java·开发语言
weixin_531094694 小时前
heap_4内存管理
java·开发语言·算法
程序员南飞4 小时前
win系统安装minio
java·数据结构·算法
Escalating_xu4 小时前
【Python】使用库:标准库、第三方库、pip、项目实战与程序打包
java·python·pip
Wang's Blog5 小时前
Java框架 SpringCloud 快速入门: 过滤器链执行顺序
java·spring cloud