MYSQL学习之buffer pool的理论学习

MYSQL学习之buffer pool的理论学习

by 小乌龟

文章目录

  • MYSQL学习之buffer pool的理论学习
  • 前言
  • 一、buffer pool是什么?
  • 二、buffer pool 的内存结构
  • 三、buffer pool 的初始化和配置
    • 初始化
    • 配置
  • 四、buffer pool 空间管理
    • LRU淘汰法
    • 冷热数据分离的LRU算法
    • 1.引入库
    • 2.读入数据
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、buffer pool是什么?

我们都知道,MySQL的数据都是存储在磁盘空间中的,但是操作系统与磁盘的交互是比较耗时的,势必会影响MySQL的性能,如果要提高MySQL的性能,势必要解决交互的速度问题,为了解决这一问题,buffer pool 应运而生。buffer pool 是MySQL在内存中专门为自己开辟的内存空间,相当于数据缓存,主要目的是暂存一些使用频率较高的一些,以达到提高MySQL性能的。

二、buffer pool 的内存结构

buffer pool 中主要包含两部分:数据页和数据块,数据页主要存储MySQL的数据,数据块主要存储和数据也相关的信息,两者一一对应;

  • 数据页:存储MySQL中的真实数据,每一页的默认大小为16KB。

  • 数据块:存储数据页的页码,在buffer pool中的地址以及数据页所属的表空间等数据,大约为数据页大小的5%,816个字节左右。

在这里插入图片描述

三、buffer pool 的初始化和配置

初始化

1、MySQL 启动时,会根据参数 innodb_buffer_pool_size 的值来为 Buffer Pool 分配内存区域。
2、然后会按照缓存页的默认大小 16k 以及对应的描述数据块的 800个字节 左右大小,在 Buffer Pool 中划分中一个个的缓存页和一个个的描述数据库块。
此时的缓存页和描述数据块都是空的,毕竟才刚启动 MySQL

配置

四、buffer pool 空间管理

缓冲池的大小是有限的,当数据页不断被复制到缓冲池中时,必然会出现溢出的情况,因此要存在相应的淘汰策略去不断淘汰到缓冲池中的数剧,同时还要保证常用的数据能够保存在缓冲池中。buffer pool采用LRU方法进行数据页的数据页的淘汰管理,(LRU,全称是 Least Recently Used,中文名字叫作「最近最少使用」)顾名思义,淘汰最近最少使用的数据页。
但是呢,如果基于此算法,当遇到全表扫描时,此时缓存池中会加载大量的新的数据页,从而将缓存池中的已存在的且被频繁访问的数据页替换出去,从而也影响了MySQL的性能,因此,基于冷热数据分离的LRU算法登场;

LRU淘汰法

首先,为了能够完成LRU算法,底层采用链表的形式存储数据的地址,链表中每一个节点存储的是该节点所指向数据页的地址(此节点也称为称为控制块),当有一个数据页被访问时,此节点会移动到表头,基于此算法,表尾的节点自然就成为了最少使用的节点,当要进行淘汰数据页操作时时,将表尾节点所指向的内存替换即可,同时删掉此链表的结尾结点。通常我们此链表称为LRU链表

1. 缓存页已在缓冲池中
这种情况下会将对应的缓存页放到 LRU 链表的头部,无需从磁盘再进行读取,也无需淘汰其它缓存页。

如下图所示,如果要访问的数据在 6 号页中,则将 6 号页放到链表头部即可,这种情况下没有缓存页被淘汰。
在这里插入图片描述
2. 缓存页不在缓冲池中
缓存页不在缓冲中,这时候就需要从磁盘中读入对应的数据页,将其放置在链表头部,同时淘汰掉末尾的缓存页

如下图所示,如果要访问的数据在 60 号页中,60 号页不在缓冲池中,此时加载进来放到链表的头部,同时淘汰掉末尾的 17 号缓存页。
在这里插入图片描述

冷热数据分离的LRU算法

冷人数据分离的LRU算法就是将 LRU 链表分为两部分,一部分为热数据区域,一部分为冷数据区域。
在这里插入图片描述
当数据页第一次被加载到缓冲池中的时候,先将其放到冷数据区域的链表头部,1s(由 innodb_old_blocks_time 参数控制) 后该缓存页被访问了再将其移至热数据区域的链表头部。
在这里插入图片描述
基于此算法,当遇到全表扫描时,新数据只会在冷数据区进行频繁的淘汰替换,并不会全部占满缓冲池,因此有效的保证了其他真正频繁被使用的数据;那么为什么是大于1秒呢?要知道,缓冲区中冷数据替换是相对较快的,如果大于了1s后又被访问到,说明此数据有足够的的资格被列为频繁被访问的数据。就好像我们高中时后的尖子生班和中等班的流动名额,尖子升班最后几名的是替换的非常快的,如果最后几名中有一名同学在经过很多轮的考试后,依然挺拔且坚定的的矗立在尖子上里,即使是在最后的角落里,那么此同学是不是也是一名强者,有资格被认定为尖子生!!(为尖子生鼓掌)

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

MacBook Pro M1搭建Kafka2.7版本源码运行环境

原创/朱季谦 最近在阅读Kafka的源码,想可以在阅读过程当中,在代码写一些注释,便决定将源码部署到本地运行。 日常开发过程中,用得比较多一个版本是Kafka2.7版本,故而在MacBook Pro笔记本上用这个版本的源码进行搭建&…

计算机网络实验(二):Wireshark网络协议分析

一、实验名称:Wireshark网络协议分析 二、实验原理 HTTP协议分析 1.超文本传输协议(Hypertext Transfer Protocol, HTTP)是万维网(World Wide Web)的传输机制,允许浏览器通过连接Web服务器浏览网页。目…

高性能、可扩展、支持二次开发的企业电子招标采购系统源码

在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…

2023我的编程之旅、2024新的启程

目录 一、2023年结束、2024年开始 1、回顾2023年 1.1、发表文章概述 1.2、开发中遇到的问题与解决方案 2、展望2024年 2.1、新年Flag 2.2、收获与成长 一、2023年结束、2024年开始 光阴荏苒,从我开始在CSDN写作已经2年零5个月了,我也在不断的思考…

关于使用统一服务器,vscode和网页版jupyter notebook的交互问题

autodl 查看虚拟环境 在antodl上租借了一个服务器,通过在网页上运行jupyter notebook和在vscode中运行,发现环境都默认的是miniconda3。 conda info --envs 当然环境中所有的包都是一样的。 要查看当前虚拟环境中安装的所有包,可以使用以…

在CentOS 7.6上配置HTTP隧道代理

是一个相对复杂的过程,涉及到多个步骤。以下是一个详细的步骤指南,供您参考: 1. 安装必要的软件包 首先,您需要安装一些必要的软件包。打开终端,并执行以下命令: bash复制代码 sudo yum install -y epel…

Linux内核--网络协议栈(一)Socket通信原理和实例讲解

目录 一、引言 二、Socket ------>2.1、socket编程 ------>2.2、Socket的创建 三、收发数据 四、断开连接 五、删除套接字 六、网络 IO 一、引言 本章开始进入linux内核中网络部分的学习,先简单介绍一下socket套接字 二、Socket 一个数据包经由应用程序产生…

2024年如何借用电商新零售破局?新型商业模式——乐享甄选竞拍模式

2024年如何借用电商新零售破局?新型商业模式——乐享甄选竞拍模式 背景:经历疫情三年的黑天鹅,消费者对未来收入预期和不自信等悲观情绪,从而使得“勒紧腰带,少消费,不消费”,以简单实用成为了新…

DRF-源码解析-4-限流的流程:drf的限流源码,drf流量控制流程,drf如何流量控制

流量控制的逻辑: 1、设置一个唯一标识,作为cache的key 2、请求访问时,构造唯一标识,从ceche中获取[时间1,时间2,时间3,…] 3、根据设置流量控制规则,如:5/m (一分钟最多访问5次),判断该唯一标…

基于ssm的常见小儿疾病中医护理系统的设计+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本小儿疾病中医护理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

湖南大学-计算机网路-2023期末考试【部分原题回忆】

前言 计算机网络第一门考,而且没考好,回忆起来的原题不多。 这门学科学的最认真,复习的最久,考的最差。 教材使用这本书: 简答题(6*530分) MTU和MSS分别是什么,联系是什么&#x…

如何衡量一个排序算法的性能

这是八股文的知识,但是中国人又个好的习惯,当别人给你一块好吃的面包时,你总想知道这个面包是怎么做的,对于目前的IT行业来说,不管这个做法你是被动的学习还是主动的探索,你都要知道,也必须要知…

如何解决vscode中文路径的问题

首先我们进入设备 搜索“区域”,选择“区域设置” 点击管理语言设置 点击更改系统区域设置,勾选“Beta 版: 使用 Unicode UTF-8 提供全球语言支持(U)”,电脑会叫你重启,你重启就行了

Node.js(四)-express

1. 初识express 1.1 express简介 1.1.1 什么是express 官方:Express是基于Node.js平台,快速、开放、极简的web开发框架。 通俗:Express的作用和Node.js内置的http模块类似,是专门用来创建web服务器的。 express的本质&#xff1…

代码随想录刷题第四十二天| 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集

代码随想录刷题第四十二天 今天是0-1背包问题,掌握了套路就不难了~~~ 0-1背包问题理论基础(二维数组篇)卡码网第46题 题目思路: 代码实现: input_line input() # 读取一行输入 mn input_line.split() m, n int…

静态关键字:static

static的作用 static是静态的意思,可以修饰成员变量和成员方法。 static修饰成员变量表示该成员变量只在内存中只存储一份,可以被共享访问、修改。 成员变量 分为2类 静态成员变量(有static修饰,属于类,内存中加载…

通用web自动扩缩容_智能运维引擎CudgX

一、概述 CudgX是星汉未来自主研发的面向云原生时代的智能运维引擎,支持根据 MetricQPS 分段耗时指标进行自动扩缩容。 通过各类服务的多维度、大规模的日志数据采集以及机器学习训练分析,对服务进行数字化、指标化度量,并基于部署的…

【Java】设计模式之顺序控制

实际开发中,有时候一些场景需求让多个线程按照固定的顺序依次执行。这个时候就会使用这种模式。 这种模式说白了,就是给线程设定不同的条件,不符合条件的话,就算线程拿到锁也会释放锁进入等待;符合条件才让线程拿到锁…

重生奇迹mu中的智力妹妹都能召唤出哪些宠物呢?

身为重生奇迹mu中的智力妹妹,其实是女性玩家最爱的一种职业,因为她是一种辅助职业,不需要直接参与到战役之中,只需躲藏在队友身后,提供各种BUFF的支援,就能充分发挥其作用,而且身为团队中的唯一…

Redis Geo:掌握地理空间数据的艺术

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Redis Geo:掌握地理空间数据的艺术 前言Redis Geo基本概念Geo模块的目的工作原理地理坐标系统 GEO的分值1. 经纬度范围2. 二分编码3. Base32编码4. 精度为什么使用Geohash? GEO…