MySQL系列—7.内存结构

news2024/9/21 6:07:14

目录

1.Buffer Pool

2.Redo Log Buffer

3.change buffer


InnoDB内存结构主要分为4个部分:

Buffer Pool

Change Pool #写缓存

Log Buffer #日志缓存

Adaptive Hash Index #自适应hash索引

1.Buffer Pool

也是B+树结构

1.当读一条数据时,会先检查是否在data pages中

        如果不在,那么去IO读InnoDB 表空间,读取到data pages后,再返回给client

        如果在,读取最新版本

然后进行操作,变成脏数据,再刷新到磁盘。

2.InnoDB对任何数据的读写都是基于内存的

3. 查看buffer pool的组成
 select page_type,sum(data_size)/1024/1024 as size_MB
 from information_schema.innodb_buffer_page
 group by page_type
 order by 2 desc;

Database pages #LRU List 列表

Modified db pages #脏页的个数,由于在进行update操作时首先会修改缓冲池中 的数据,在定时异步的将缓冲池的数据刷新到磁盘中(checkpoint技术),所以 缓冲池的数据与磁盘的数据会产生不一致,称为脏页。

Free buffers Free List页的个数

2.Redo Log Buffer

1.修改数据前先记录undo,修改后的数据在脏页,修改动作记录到redo

2.redo log buffer不用太大,由参数innodb_log_buffer_size控制,默认为8M

3.redo log 在下列三种情况下会从buffer中刷新到redo log file:

master thread每一秒刷新

每个事务提交时刷新

redo log buffer 剩余空间小于1/2时

3.change buffer

Change Buffer是一种用于缓存辅助索引页变化的区域,是buffer pool中一块独立的区域。

当需要修改的辅助索引页不在缓冲池中而在磁盘中时,会将这些索引页的变化缓存在change buffer中。

对索引的更新先缓存在change buffer中,然后由master thread做merge——将修改数据合并到 buffer pool,然后刷新到磁盘。

工作机制:

先判断要修改的非聚集索引页(辅助索引页)是否在buffer pool中

存在,则直接修改然后将结果临时存放在change buffer中

不存在,直接将更改缓存到change buffer中(注意,并不通过IO读入,而是直接将修改 缓存在change buffer)

参数:

innodb_change_buffer_max_size ,默认最大允许25%

innodb_change_buffering

基本上change buffer不用管。只需要控制max_size 不要设置太高就ok,innodb会自行适应。

为什么二级索引需要Change Buffer?

减少随机读取IO

对于聚集索引页,DML操作带来的数据磁盘读取和缓存修改往往是顺序的、集中的,这就很好 地利用了聚集索引的优点,但随着聚集索引页的顺序IO,各个二级索引页的读取和修改通常是随 机IO的。而Change buffer将分散的、未缓存的二级索引页的变化进行缓存而非直接从磁盘中读 取索引页,待到其他操作需要访问二级索引时,只需将change buffer中的变化缓存合并然后加 入缓冲池(buffer pool)就行了,这样就大大地减少了磁盘随机读取的IO。

定期批量写入索引变化

如何配置change buffer?

可以用innodb_change_buffering系统变量控制change buffer相关的行为。可以控制change buffer只对部分类操作生效。该变量的值和含义如下:

all

默认值,表示缓存所有DML语句和物理purge操作的索引页变化。

none

不对任何操作缓存,相当于禁用

inserts

只缓存insert

deletes

只缓存标记性delete操作

changes

只缓存写入和标记性delete

purges

只缓存后台物理删除操作

注意:

innodb_change_buffering参数可动态修改,只对修改后发生的操作生效,修改前已缓存的索引 页不受影响

可以用innodb_change_buffer_max_size变量控制change buffer区域的最大大小,表示占缓冲 池总大小的百分点数。默认为25。最大可以设置为50。

当DML语句量较多时,可以适当扩大innodb_change_buffer_max_size.反则反之。

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

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

相关文章

去中心化身份验证:Web3时代数字身份的革新

随着Web3时代的到来,去中心化技术正在重新定义数字身份验证的方式。传统的身份验证方法常常依赖于中心化的数据库和中介机构,这些系统不仅易受攻击,还可能侵犯用户的隐私。而去中心化身份验证(DID, Decentralized Identifier&…

SDN与SD-WAN:共同点和区别分析

软件定义网络(SDN)是一种革新性的网络架构,而软件定义广域网(SD-WAN)则是基于SDN技术发展而来的网络解决方案。两者有许多共同点,但它们之间也存在显著差异。本文将详细分析SDN与SD-WAN的共同和区别。 SDN的…

cv2.error: OpenCV(4.10.0) :-1: error: (-5:Bad argument) in function ‘resize‘

cv2.error: OpenCV(4.10.0):-1: error: (-5:Bad argument)in function resize 安装好Echomimic之后,上传图片和音频进行生成视频的时候报错了,在服务器端查看报错信息如下: 解决方法&#xff1a…

uniapp / uniapp x UI 组件库推荐大全

在 uniapp 开发中,我们大多数都会使用到第三方UI 组件库,提起 uniapp 的UI组件库,我们最常使用的应该就是uview了吧,但是随着日益增长的需求,uview 在某些情况下已经不在满足于我们的一些开发需求,尽管它目…

在线压缩pdf,无需安装就可轻易压缩pdf文件

PDF文件因其跨平台兼容性和良好的阅读体验,成为工作学习中不可或缺的一部分。然而,随着文件体积的增大,如何有效压缩PDF文件成为了许多人的迫切需求。很多小伙伴想要通过在线的方式来压缩PDF文件,下面给大家分享一种在线压缩方法&…

前端布局利器:Flex布局

曾经的我们使用传统布局方式,我们深刻的体会着1px除不尽,三等分,居中,塌陷等等让我们升血压的问题。传统的布局方式:布局繁琐,需要使用大量的HTML和CSS代码来实现简单的布局。灵活性差,难以实现…

腾讯视频:让自媒体创作者“怀才有遇”

在这个信息快速流通的自媒体时代,时间变得越来越碎片化,短剧、短番与短节目则凭借着短小精悍、内容紧凑的特点,完美契合了碎片化的时间消费习惯。这些短的内容被观众喜爱的同时,也让许多自媒体创作者找到了致富之路。 相对于大IP…

Redis Desktop Manager 0.8.8.384 安装与使用详解

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

【软件安装】PyCharm安装教程(MAC)

一、准备阶段 准备软件安装包和jetbrains crack 包 二、软件安装 (1)运行pycharm安装包 等待程序运行 (2)运行jetbrains crack 安装包 运行补丁安装 (3)打开pycharm软件 等待系统验证后,打开…

【路径规划】移动机器人路径规划算法的实现

摘要 本文实现了移动机器人路径规划算法,包括Dijkstra、A*和基于无向图的动态规划算法。通过在复杂障碍环境中测试这些算法,评估了它们在路径最优性、计算效率和适应性方面的性能。本文提出的算法结合了不同的启发式和优化策略,为机器人路径…

kubectl的deployment和service

目录 概念 kubectl的基础命令 *每天常用的查看集群的基本信息 deployment的部署方式 deployment 的特点 基于deployment创建pod 手动缩容 service的类型以及工作原理 创建service service的类型 修改service的类型为nodeport **nodeport实验:对外暴露端…

产品网络低价乱价,有哪些控价方法?

电商平台的兴起让产品销售渠道更加多元化,但同时也带来了价格混乱的问题。产品网络低价现象频发,不仅扰乱了市场秩序,损害了品牌形象, 还严重影响了正规渠道经销商的利益。针对这一问题,产品控价成为了企业和品牌方亟待…

【动态规划】子数组系列二(数组中连续的一段)

子数组系列一(数组中连续的一段) 1.等差数列划分2.最长湍流子数组3.单词拆分4.环绕字符串中唯一的子字符串 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起…

【多场景应用】基于杰发科技AC7840x的Mini LED背光驱动设计

应用场景: 在汽车应用中,Mini LED背光驱动设计主要用于仪表盘、中控屏和车载娱乐系统等显示屏。这项技术可以显著提升显示效果,提供更高的亮度、更深的黑色和更广的色域,使得图像更加生动逼真,尤其在强光和宽温度范围…

【类模板】类模板的基本范式

一、类模板的概念 类模板与一般的模板一样,都是通过给定的模板参数,生成具体的类,也就是实例化一个特定的类。这个概念和函数模板差不多。 例如,在 C C C中的 s t d : : v e c t o r std::vector std::vector容器就是一个经典的…

AWS账号关闭后的影响:您需要知道的一切

亚马逊网络服务(AWS)作为全球领先的云计算平台,为众多企业和个人提供了便捷、高效的云服务。然而,当用户决定关闭其AWS账号时,可能会对其现有的服务和资源产生重大影响。我们九河云将通过本文将深入探讨AWS账号关闭后的…

树莓派3B驱动ST7735(Python)

一 环境准备 之前做了PICO驱动ST7735,这次再进一步,用树莓派3B来驱动。还是先上图。 最开始还是根据GPT的指引来做的。SPI的细节就不多说了,之前在PICO的时候说过了。 总线学习3--SPI-CSDN博客 二 实现细节 连接方式如下: VCC …

猛兽财经:AMD股票值得长期投资吗?

来源:猛兽财经 作者:猛兽财经 过去三年对AMD来说可谓压力山大,由于个人电脑(PC)市场的疲软,AMD的股价一直承受着巨大的压力(AMD的股价在过去三年中仅上涨了44%,远远低于费城半导体指数56%的涨幅&#xff…

快速申请公网、内网IP地址SSL证书

在当今社会,网络安全越来越重要。SSL证书不仅能够提供加密的数据传输,还能增强用户信任度,提升搜索引擎排名等。但是只有IP地址可以用来申请SSL证书吗?答案当然是可以的,而且申请也非常容易。下面是快速申请流程&#…

SpringBoot3核心特性-数据访问

目录 传送门前言整合SSM场景一、创建SSM整合项目二、配置数据源三、配置MyBatis四、CRUD编写五、自动配置原理六、快速定位生效的配置七、扩展:整合其他数据源1、Druid 数据源2、附录:示例数据库 传送门 SpringMVC的源码解析(精品&#xff0…