MySQL-数据缓冲池(Buffer Pool)

  • InnoDB存储引擎以 为单位管理存储空间,增删改查的本质就是访问页面。为提高查询效率,DBMS会占用内存作为缓冲池,在执行SQL之前,会将磁盘上的页 缓存到内存中的 缓冲池(Buffer Pool)后执行相关SQL语句。

1、缓冲池(Buffer Pool)

  • 在InnoDB存储引擎中有部分数据会放到内存中,缓冲池占该内存的大部分空间,用来存储各种数据的缓存,如下所示:
    在这里插入图片描述
  • 缓冲池的重要性:消除CPU和磁盘之间的鸿沟,InnoDB存储引擎中会将完整页的数据全部加载到内存中将其缓存起来,省去磁盘IO
  • 缓冲原则:“位置 * 频次”原则,提高I/O访问效率进行优化,会优先对使用频次高的热数据进行加载
  • 预读特性:在读取数据的时候存在一个“局部性原理” 即 使用一些数据,大概率会使用它周围的数据,则会采用预读的机制提前加载,有效减少未来可能的磁盘I/O操作

2、查询缓存

  • 是指提前将 查询结果缓存 起来,后续不需要执行就能获取到结果。
  • 在MySQL的查询缓存并非缓存查询计划,而是查询对应的结果,只要数据表发生变化,查询缓存都会失效。
  • 与 缓冲池 的共同特点都是通过缓存的机制提高效率

3、缓冲池读取数据

  • 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行读操作的时候,首先会判断该页面是否在缓存池中,如果存在直接读取,如果不存在就会通过内存或磁盘将页面放到缓冲池中再进行读取。
  • 缓存在数据库中的结构和作用如下所示:
    在这里插入图片描述
  • 当对数据库中的记录进行修改时,首先会修改缓冲池中页里面的记录信息,然后数据库会以一定频率刷新到磁盘上。缓冲池会采用一种叫 checkpoint 的机制 将数据写入磁盘

4、查看和设置缓冲池的大小

  • MyISAM存储引擎,只缓存索引,不缓存数据,对应的键缓存参数为:key_buffer_size
  • InnoDB存储引擎,通过查看innodb_buffer_pool_size变量来查看缓冲池的大小,命令如下:
mysql> show variables like '%innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (1.01 sec)
  • InnoDB存储引擎设置缓冲池大小,命令如下:
mysql> set global innodb_buffer_pool_size=268435456;
Query OK, 0 rows affected (0.45 sec)mysql> show variables like '%innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+------------------------

5、多个缓冲池(Buffer Pool)实例

  • 缓冲池的本质就是 InnoDB向操作系统申请一块 连续的内存空间,在多线程环境下,访问Buffer Pool中的数据都需要加锁处理。
  • Buffer Pool 特别大并且多线程并发访问特别高时,可以将Buffer Pool 拆分成若干个小的Buffer Pool ,每个Buffer Pool称为一个实例
  • 每个实例都是独立的去申请内存空间,独立的管理各种链表。
  • 查看缓冲池的个数,执行命令如下:
mysql> show variables like '%innodb_buffer_pool_instances%';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 1     |
+------------------------------+-------+
1 row in set (0.00 sec)
  • 对Buffer Pool拆分,可以在配置文件中配置 具体启动选项,如:
[root@rqtanc ~]# vim /etc/my.cnf[server]
innodb_buffer_pool_instances=2
  • Buffer Pool的实例大小相关计算依据为:innodb_buffer_pool_size/innodb_buffer_pool_instances

6、缓冲池更新数据流程

在这里插入图片描述

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

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

相关文章

【51单片机LCD1602显示矩阵键盘原始键值】2023-6-1

缘由https://ask.csdn.net/questions/7955623 #include "reg52.h" sbit LCD1602_RS P3^5;//RS端数据命令选择(H/L) sbit LCD1602_RW P3^6;//RW端读写选择(H/L) sbit LCD1602_EN P3^7;//EN端使能信号上升沿25ns void PanDuan1602(/*LCD1602忙判断*/) { LCD1602…

Webshell绕过技巧分析之-base64编码和压缩编码

在网络安全运营,护网HVV,重保等活动的过程中,webshell是一个无法绕过的话题。通常出现的webshell都不是以明文的形式出现,而是针对webshell关键的内容进行,混淆,编码来绕过网络安全产品,例如IDS…

docker系列9:容器卷挂载(下)

传送门 docker系列1:docker安装 docker系列2:阿里云镜像加速器 docker系列3:docker镜像基本命令 docker系列4:docker容器基本命令 docker系列5:docker安装nginx docker系列6:docker安装redis docker系…

百度地图推出「AI 导游」功能:限时免费 五一期间上线

​​​​​​ 分享一个AI工具、资料、课程资源平台:AI科技智库 百度地图推出了「AI 导游」功能,用户可以在景区使用手机打开百度地图,点击左上的「AI 导游」按钮即可使用。 这个功能可以提供智能讲解,根据用户的实时位置智能送景…

校园网访问云服务器IP地址大坑

问题 用云服务器配置入站规则时: 可以指定IP允许访问特定端口,比如说我就开放22和3306,但是千万别照搬网上的教程,把规则设置成0.0.0.0,就是允许所有IP访问的意思,我设置之后mysql就被删库勒索了。 然后想…

Golang | Leetcode Golang题解之第66题加一

题目&#xff1a; 题解&#xff1a; func plusOne(digits []int) []int {n : len(digits)for i : n - 1; i > 0; i-- {if digits[i] ! 9 {digits[i]for j : i 1; j < n; j {digits[j] 0}return digits}}// digits 中所有的元素均为 9digits make([]int, n1)digits[0]…

自动化滇医通

###我已经将数据爬取出来### 现在开源集合大家的思路一起研究 &#xff08;请更换ip 以及 暂停时间 不然会提示违规操作&#xff09; 脚本读取预约信息后开始随机抢一家的&#xff0c;qiang方法里面请自行修改抓包数据参数&#xff01;&#xff01; 现在开源大家一起讨论 pyt…

题目:吃奶酪

问题描述&#xff1a; 解题思路&#xff1a; 枚举每种吃奶酪顺序&#xff0c;并计算其距离&#xff0c;选择最小的距离即答案。v数组&#xff1a;记录顺序。 注意点&#xff1a;1. 每次用于min的s需要重置为0。 2. 实数包括小数&#xff0c;所以结构体内x,y为double类型。 3. 第…

【iOS】pthread、NSThread

文章目录 前言一、pthread 使用方法pthread 其他相关方法 二、 NSThread创建、启动线程线程相关用法线程状态控制方法NSThread 线程安全和线程同步场景 线程的状态转换 前言 五一这两天准备将GCD相关的知识完&#xff0c;同时NSOperation与NSThread、pthread也是相关知识&…

向量体系结构(4):多条车道内存组

笔记来源《计算机体系结构 量化研究方法》。 接着向量体系结构(2)讲&#xff0c;解决最后留下的问题中的两个问题 向量体系结构&#xff1a;向量执行时间-CSDN博客 &#xff08;1&#xff09;向量处理器如何实现每个时钟周期处理多于一个元素的能力? &#xff08;2&#x…

Hdfs小文件治理策略以及治理经验

小文件是 Hadoop 集群运维中的常见挑战&#xff0c;尤其对于大规模运行的集群来说可谓至关重要。如果处理不好&#xff0c;可能会导致许多并发症。Hadoop集群本质是为了TB,PB规模的数据存储和计算因运而生的。为啥大数据开发都说小文件的治理重要&#xff0c;说HDFS 存储小文件…

Echarts关系图的配置项,一文全解,一目了然。

一、什么是关系图 ECharts 是一个由百度开发的开源可视化库&#xff0c;用于创建丰富的交互式数据可视化图表。关系图&#xff08;Relationship Graph&#xff09;是 ECharts 中的一种图表类型&#xff0c;用于展示节点之间的关系和连接。 关系图通常用于展示复杂的网络结构&a…

2024年 Java 面试八股文——Mybatis篇

目录 1. 什么是Mybatis&#xff1f; 2. 说说Mybatis的优缺点 3. Xml映射文件中&#xff0c;都有哪些标签 4. #{}和&{}有什么区别 5. Mybatis是如何进行分页的,分页插件的原理是什么 6. Mybatis是如何将sql执行结果封装为目标对象并返回的&#xff1f; 7. Mybatis是怎…

vscode远程免密ssh原理与实操方法

什么是SSH SSH是一种加密协议&#xff0c;全称为Secure Shell&#xff0c;用于安全地远程登录到服务器或其他远程设备上执行命令或传输文件。它提供了一种安全的加密通信机制&#xff0c;使得远程登录和文件传输等操作不会被恶意攻击者窃取或篡改&#xff0c;确保了数据的保密…

5.3 进程间通信管道和共享内存

每次打开一个网页都是一个进程 进行管道之间通信的方式&#xff1a;以前学到的有可以在磁盘上开辟空间进行交互&#xff0c;也可以在内存中开辟缓冲区进行交互。 一定注意可读性 管道就是属于在内存中的一片缓冲区&#xff0c;管道可以在命令行中创建管道mkfifo也可以在vim中…

(优作)基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)竞赛作品

基于STM32蓝牙控制小车系统设计&#xff08;硬件源代码论文&#xff09;竞赛作品 基于意法半导体与ARM公司生产的STM32F4 DISCOVERY开发板的集电机驱动模块、电源管理模块、stm32f4主控模块、蓝牙串口通信模块、android控制端模块。电机驱动模块使用了两个L298N芯片来驱动4路电…

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Myba…

【Qt基础教程】QGridLayout与QFormLayout

文章目录 前言一、QGridLayout二、QFormLayout总结 前言 在Qt应用程序开发中&#xff0c;布局管理器是一种关键的技术&#xff0c;用于管理和安排窗口小部件的位置和大小。QGridLayout和QFormLayout是两个常用的布局管理器&#xff0c;它们分别适用于网格状和表单状的界面布局…

创新指南 | 围绕“获客、转化、增长”三要素,构建 PLG线上运营 体系

构建一个高效的 PLG线上运营 体系&#xff0c;对于任何希望利用产品本身优势推动业务增长的公司来说都是至关重要的。PLG模式通过产品本身的力量来驱动用户增长、促进转化并提升用户体验&#xff0c;从而实现自然而持续的增长。 一、PLG线上运营的整体框架和思路 PLG线上运营 …

百度网盘里的文件怎么打印?

在日常生活和工作中&#xff0c;我们经常需要打印各种文件&#xff0c;包括学习资料、工作报告、合同文件等。有时候&#xff0c;这些文件保存在百度网盘等云存储服务中&#xff0c;我们该如何方便地打印出来呢&#xff1f;今天&#xff0c;就为大家介绍一种便捷的方法——通过…