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

news2024/11/25 18:36:49

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

文章目录

  • 数据库缓冲池(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.coloradmin.cn/o/1292254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Inno Setup 打包程序文件 怎么把其中一个文件安装时复制到指定系统文件夹

环境: Inno Setup 6.6 Win10 专业版 问题描述: 使用Inno Setup 打包程序文件 怎么把其中一个文件安装时复制到指定系统文件夹 将文件api-ms-win-shcore-scaling-l1-1-1.dll复制到system32里面 解决方案: 1.由于安全和权限的限制,直接在Inno Setup脚本中复制文件到C:\…

如何使用phpStudy本地快速搭建网站并内网穿透远程访问

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点,测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中,查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

RuntimeError: CUDA error: out of memory怎么解决

遇到这个问题的原因是之前的程序没有结束进程。 需要打开Linux的命令窗口。输入命令 nvidia-smi 发现有很多的进程没有结束。使用如下命令查看进程 发现这些黄色框里的进程就是需要结束掉的进程。 查看当前conda的环境都有哪些,目前项目主要用到的是main这个。 使…

12_企业架构之Tomcat部署使用

Tomcat 学习目标和内容 1、能够描述Tomcat的使用场景 2、能够简单描述Tomcat的工作原理 3、能够实现部署安装Tomcat 4、能够实现配置Tomcat的service服务和自启动 5、能够实现Tomcat的Host的配置 6、能够实现Nginx反向代理Tomcat 7、能够实现Nginx负载均衡到Tomcat 一、Tomcat介…

git-vscode

git-vscode ctrlshiftp 创建分支 create branch 直接切到新的分支了 切换分支 直接点左下角自己选择 vscode中配置仓库 https://blog.csdn.net/zora_55/article/details/129709251 推送tag tag作用就是在 Git 中,标记存储库历史记录中特定提交的一种方式。t…

生成器简述 - python 基础进阶知识点补全(一)

可迭代对象: 可以用于for ... in ..循环对对象都是可迭代对象,比如: list tuple dict set 可以迭代的对象就是可迭代对象,python 中一切都是对象,在这里主要说的是变量 a [1,2,3] b (1,2,3,) c "1234&q…

docker---数据卷

数据卷(数据共享) 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的…

TCP协议一对一聊天UDP协议群聊

一对一聊天 服务端: package 一对一用户;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; …

进行生成简单数字图片

1.之前只能做一些图像预测,我有个大胆的想法,如果神经网络正向就是预测图片的类别,如果我只有一个类别那就可以进行生成图片,专业术语叫做gan对抗网络 2.训练代码 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transfo…

排序分析(Ordination analysis)及R实现

在生态学、统计学和生物学等领域,排序分析是一种用于探索和展示数据结构的多元统计技术。这种分析方法通过将多维数据集中的样本或变量映射到低维空间,以便更容易理解和可视化数据之间的关系。排序分析常用于研究物种组成、生态系统结构等生态学和生物学…

java--枚举

1.枚举 枚举是一种特殊类 2.枚举类的格式 注意: ①枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。 ②这些名称,本质是常量,每个常量都会记住枚举类的一个对象。 3.枚举类的特点 ①枚举类的…

Java 第21章 网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封装成不同的类,用户只要创建这些类的对象,使用相应的方法,即使不具备有关的网络支持,也可以编写出高质量的网络通信程序。 …

JPA(Java Persistence API)是什么

JPA的官网地址:https://jcp.org/en/jsr/detail?id338 当前最新的版本是2.2版本:https://jcp.org/aboutJava/communityprocess/mrel/jsr338/index.html JPA是一个Java持久化的API,通过这个API,在Java EE和Java SE 环境中管理持…

鸿蒙开发ServiceAbility基本概念

时间过长,开发者必须在Service里创建新的线程来处理(详见线程间通信),防止造成主线程阻塞,应用程序无响应。 创建Service 介绍如何创建一个Service 创建Service的代码示例如下:查看获取鸿蒙开发 (qq.com)…

HTTP 缓存机制

一、强制缓存 只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存而无需再请求服务器。 强制缓存是利用下面这两个 HTTP 响应头部(Response Header)字段实现的,它们都用来表示资源在客户端缓存的有效期: Cache…

ChatGPT学习笔记

1 ChatGPT架构图 (ChatGPT_Diagram.svg来自于【OpenA | Introducing ChatGPT】) 2 模型训练 ChatGPT在训练时使用了PPO方法;

pandas空格及网页空格符NBSP替换处理

df3[动作一课程内容]df3[动作一课程内容].str.replace( ,) df3[动作一课程内容]df3[动作一课程内容].str.replace( ,) 截图中代码为python展示代码,由于网页空格符和常规空格符看起来大致相同,但却不能用常规空格替换解决

基于个微机器人的开发

简要描述: 下载消息中的动图 请求URL: http://域名/getMsgEmoji 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明…

树莓派4B iio子系统 mpu6050

编写基于iio的mpu6050 遇到的问题,在读取数据时,读出来的数据不能直接拼接成int类型 需要先将其转换成short int,再转换成int 效果如图所示 注:驱动是使用的modprobe加载的 画的思维导图(部分,上传的…

预付费远传水表和传统水表有什么不同?

随着科技的发展,预付费远传水表作为一种新型智能水表,与传统水表相比有着许多不同之处。那么,预付费远传水表和传统水表究竟有什么不同呢? 首先,预付费远传水表具备智能化功能。与传统水表只能记录用水总量不同&#x…