MySQL高级--01_1--数据库缓冲池(buffer pool)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 数据库缓冲池(buffer pool)
        • DBMS 会申请占用内存来作为数据缓冲池,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool 之后才可以访问。
    • 1 缓冲池 vs 查询缓存
        • 缓冲池和查询缓存是一个东西吗?不是。
    • 2.缓冲池如何读取数据
    • 3. 查看/设置缓冲池的大小
    • 4. 多个Buffer Pool实例
    • 5. 引申问题
    • 6.调优策略
    • 7. Buffer Pool的内存淘汰策略
        • 冷热分区的LRU策略
    • 8.Redo Log跟Buffer Pool的关系 重做日志 持久性
    • 9.更新操作的流程:


数据库缓冲池(buffer pool)

DBMS 会申请占用内存来作为数据缓冲池,在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool 之后才可以访问。

在这里插入图片描述

1 缓冲池 vs 查询缓存

缓冲池和查询缓存是一个东西吗?不是。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.缓冲池如何读取数据

  1. 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中
  2. 如果存在就直接读取
  3. 如果不存在,就会通过内存或磁盘将页面存放到缓冲池中再进行读取。

在这里插入图片描述

3. 查看/设置缓冲池的大小

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 多个Buffer Pool实例

在这里插入图片描述

5. 引申问题

Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子。

在这里插入图片描述

6.调优策略

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. Buffer Pool的内存淘汰策略

Redis–06–持久化策略—内存优化策略
在这里插入图片描述
在这里插入图片描述

冷热分区的LRU策略

LRU链表会被拆分成为两部分,一部分为热数据,一部分为冷数据。冷数据占比 3/8,热数据5/8。

image.png

数据页第一次加载进来,放在LRU链表的什么地方?

放在冷数据区域的头部

冷数据区域的缓存页什么时候放入热数据区域?

MySQL设定了一个规则,在 innodb_old_blocks_time 参数中,默认值为1000,也就是1000毫秒。

意味着,只有把数据页加载进缓存里,在经过1s之后再次对此缓存页进行访问才会将缓存页放到LRU链表热数据区域的头部。

为什么是1秒?

因为通过预读机制和全表扫描加载进来的数据页通常是1秒内就加载了很多,然后对他们访问一下,这些都是1秒内完成,他们会存放在冷数据区域等待刷盘清空,基本上不太会有机会放入到热数据区域,除非在1秒后还有人访问,说明后续可能还会有人访问,才会放入热数据区域的头部。

8.Redo Log跟Buffer Pool的关系 重做日志 持久性

事务–04—MySQL事务日志----redo日志

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.更新操作的流程:

1.从存储引擎层,拿到数据,记录到Buffer Pool,进一步的返回给Server层

2.server层会把这个数据页里面的数据进行修改

3.调用存储引擎,记录到Buffer Pool

4.Redo Log Undo Log 记录

5.事务提交

image.png在这里插入图片描述

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

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

相关文章

如何快速完成企业私有云部署

快解析赋能企业私有云部署 ​ 很多企业形成了以总部为中心的多点生产体系结构,并借助网络化办公工具搭建跨区域协同办公系统,满足总部与分支机构间的信息互通,进而促进异地业务的信息共享,提高办公处理效率和综合管理水平。 北…

blog目录,全用GTP写的代码,一步步完善需求。

GTP真是好用&#xff0c;直接对话&#xff0c;一步步完善需求&#xff0c;写代码无忧。Question&#xff1a;网站文章添加个目录导航的代码。 <p><span style"line-height:1;"><span style"font-size:16px;"><u><a href"h…

echarts绘制一个柱状折线图

其他echarts&#xff1a; echarts绘制一个环形图 echarts绘制一个饼图 echarts绘制一个环形图2 效果&#xff1a; 代码&#xff1a; <template><div class"wrapper"><!-- 柱状图 --><div v-if"type new_bar" ref"barChar…

临床骨科常用的肩关节疾病量表,医生必备!

根据骨科医生的量表使用情况&#xff0c;常笑医学整理了临床骨科常用的肩关节疾病量表&#xff0c;为大家分享临床常见的肩关节疾病量表评估内容&#xff0c;均支持量表下载和在线使用&#xff0c;建议收藏&#xff01; 1.臂、肩、手功能障碍&#xff08;disabilites of the ar…

java死锁的成因和解决方案

一、什么是死锁&#xff1f; 在Java中&#xff0c;死锁是指两个或多个线程互相持有对方所需要的锁&#xff0c;并且在无法继续执行的情况下永久地等待对方释放锁。这种情况下&#xff0c;所有涉及的线程都无法继续执行&#xff0c;程序被卡住&#xff0c;无法正常终止。 死锁通…

代立冬:基于Apache Doris+SeaTunnel 实现多源实时数据仓库解决方案探索实践

大家好&#xff0c;我是白鲸开源的联合创始人代立冬&#xff0c;同时担任 Apache DolphinScheduler 的 PMC chair 和 SeaTunnel 的 PMC。作为 Apache Foundation 的成员和孵化器导师&#xff0c;我积极参与推动多个开源项目的发展&#xff0c;帮助它们通过孵化器成长为 Apache …

【GEE】时间序列多源遥感数据随机森林回归预测|反演|验证|散点图|完整代码

实验介绍 分类和回归之间的主要区别在于&#xff0c;在分类中&#xff0c;我们的预测目标是离散的类别&#xff0c;而在回归中&#xff0c;预测目标是连续的预测值。 本实验的研究区域位于佛蒙特州的埃塞克斯郡&#xff0c;使用训练数据来模拟土壤氧化还原深度&#xff0c;然…

中缀表达式转后缀表达式与后缀表达式计算(详解)

**中缀表达式转后缀表达式的一般步骤如下&#xff1a; 1&#xff1a;创建一个空的栈和一个空的输出列表。 2&#xff1a;从左到右扫描中缀表达式的每个字符。 3&#xff1a;如果当前字符是操作数&#xff0c;则直接将其加入到输出列表中。 4&#xff1a;如果当前字符是运算符&a…

告别新手!超详细深色UI设计指南

深色用户界面的设计&#xff0c;从手中握持的移动屏幕到宽广的大型屏幕&#xff0c;都已经越来越普遍。深色UI具有何种独特魅力呢&#xff1f;它所带来的不仅仅是力量和奢华的象征&#xff0c;更是精致优雅的体现。然而&#xff0c;将一个设计从浅色主题调整到深色主题&#xf…

docker安装node及使用

文章目录 一、安装node二、创建node容器三、进入创建的容器如有启发&#xff0c;可点赞收藏哟~ 一、安装node 查看可用版本 docker search node安装最新版本 docker install node:latest二、创建node容器 docker run -itd --name node-test node–name node-test&#xff1…

Spark---DataFrame存储、Spark UDF函数、UDAF函数

四、DataFrame存储Spark UDF函数 1、储存DataFrame 1&#xff09;、将DataFrame存储为parquet文件 2&#xff09;、将DataFrame存储到JDBC数据库 3&#xff09;、将DataFrame存储到Hive表 2、UDF&#xff1a;用户自定义函数 可以自定义类实现UDFX接口 java&#xff1a; …

SpringMVC 案例

文章目录 前言1. 计算器1.1 准备前端代码1.2 测试前端代码1.3 完成后端代码1.4 验证程序 2. 留言板2.1 前端代码准备2.2 测试前端代码2.3 完成前后端交互代码2.4 完成后端代码2.5 案例测试2.6 完善前后端交互2.7 完善后端代码2.8 完整功能测试 lombok简单的方式添加Lombok工具3…