【MySQL进阶之路】BufferPool 生产环境优化经验

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书
在我后台回复「面试」可领取硬核面试笔记

文章导读地址:点击查看文章导读!

感谢你的关注!

在这里插入图片描述

BufferPool 生产优化经验

高并发场景下如何访问 BufferPool

请添加图片描述

如果在高并发场景下,大量线程需要操作 MySQL,也就是大量线程对 BufferPool 进行并发操作,在 BufferPool 中对这些共享变量(flush、free、lru 链表)操作,是需要通过 加锁来保证线程同步的,虽然是在内存中对 BufferPool 进行操作,但是将多个线程并发操作给转为了串行操作,还是有些降低性能的!

通过多个 BufferPool 优化高并发性能

上边在高并发场景中,只有一个 BufferPool 的话,可能多个线程在这一个 BufferPool 中排队对共享变量进行操作比较慢,在生产环境中,可以给 MySQL 设置多个 BufferPool 来提升性能!

如果部署 MySQL 的机器配置比较好,内存比较大,可以多给 BufferPool 分配一些内存,并且设置多个 BufferPool,通过一下两个参数设置:

innodb_buffer_pool_size # BufferPool 大小
innodb_buffer_pool_instances # BufferPool 个数

比如,可以给 BufferPool 分配 8G 内存,设置 4 个 BufferPool,那么每个的内存大小为 2G

这样原来只有 1 个 BufferPool 的情况下,多个线程并发操作在这一个 BufferPool 中进行排队

现在有 4 个 BufferPool 了,多个线程可以同时在这 4 个 BufferPool 中排队进行操作,性能成倍提升

请添加图片描述

因此在生产环境中,在机器配置足够的情况下,可以通过增加 BufferPool 的数量来提升 MySQL 的性能!

BufferPool 的大小可以动态变化吗?

其实是可以的,MySQL 通过 chunk 机制 来实现 BufferPool 大小动态调整的功能

chunk 其实就是 BufferPool 中的子单元,一个 BufferPool 由许多的 chunk 组成,每个 chunk 中包含了一系列的描述数据块和缓存页

chunk 的大小由:innodb_buffer_pool_chunk_size 来控制,默认大小为 128MB

那么假设现在有一个 BufferPool 大小为 2GB,那么这个 BufferPool 就是由 16 个 chunk 组成,一个 chunk 128MB

BufferPool 与 chunk 关系如下图:

请添加图片描述

当在 MySQL 运行期间,如果需要增大 BufferPool 的内存大小,那么只需要申请对应的 chunk 块,再将申请到的 chunk 分配给 BufferPool 就可以了

通过 chunk 机制可以极大提升 BufferPool 的灵活性

BufferPool 生产环境参数配置

我们知道在 MySQL 中,是将磁盘文件中的数据读取到内存的 BufferPool 中,在 BufferPool 中对数据进行操作的,那么从理论上来讲,如果部署 MySQL 的机器内存有 32 G,那么给 BufferPool 分配 30G 的大小会不会更好呢?

其实这样是行不通的,因为机器在启动的时候,操作系统就要占用几个 G 的内存,并且机器上运行的其他应用也是需要占用内存的

因此,一般建议将 BufferPool 的大小设置为机器内存的 60%!

BufferPool 数量的确定:

在确定 BufferPool 的大小之后,接下来可以确定 BufferPool 的数量了

通过计算公式确定:

BufferPool 总大小 = (chunk 大小 * Bufferpool 数量) * 2

那么假设部署 MySQL 的机器内存为 32 GB,那么 BufferPool 的大小应该设置为 32GB * 60% ≈ 20GB,chunk 大小为 128MB,代入上边公式,得到 BufferPool 数量为 (BufferPool 总大小 / 2) / chunk 大小,也就是 20GB/2/128MB = 16 个

因此 BufferPool 的数量就设置为 16 个

根据上边的经验值对 BufferPool 的总大小以及数量进行配置,可以尽可能的保证数据库的高性能

当配置过后,可以通过命令:show engine innodb status; 来查看配置是否生效!

请添加图片描述

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

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

相关文章

【开源】基于JAVA+Vue+SpringBoot的假日旅社管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统介绍2.2 QA 问答 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿评论4.3 查询民宿新闻4.4 新建民宿预订单4.5 查询我的民宿预订单 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的假日旅社…

你的立身之本是什么?

去年发生的一切,大到疫情、政治经济形势、行业的萎靡和震荡,小到身边的跳槽、裁员、公司倒闭……似乎都在告诉我们: 当冲击到来的时候,它是不会提前跟你打招呼的。 接下来的10年,我们所面临的不确定性,比起…

Python春节倒计时:用代码迎接新年的到来!

使用Python实现春节倒计时程序 一、引言 随着科技的不断发展,编程已经渗透到我们生活的方方面面。今天,我们将使用Python编写一个春节倒计时程序,来感受编程与传统文化的巧妙结合。该程序将能够显示距离农历2024年春节(大年初一…

2009-2019年地级市分类转移支付数据

2009-2019年地级市分类转移支付数据 1、时间:2009-2019年 2、来源:整理自wind 3、指标:公共财政收入:返还性收入、公共财政收入:一般性转移支付收入、公共财政收入:专项转移支付收入 4、范围:280个地级市 5、指标解释&#x…

Git版本与分支

目录 一、Git 二、配置SSH 1.什么是SSH Key 2.配置SSH Key 三、分支 1.为什么要使用分支 2.四个环境及特点 3.实践操作 1.创建分支 2.查看分支 3.切换分支 4.合并分支 5.删除分支 6.重命名分支 7.推送远程分支 8.拉取远程分支 9.克隆指定分支 四、版本 1.什…

免费搭建幻兽帕鲁服务器,白嫖阿里云游戏服务器

阿里云幻兽帕鲁服务器免费搭建方案,先在阿里云高校计划「云工开物」活动领取学生专享300元无门槛代金券,幻兽帕鲁专用服务器4核16G配置26元1个月、149元半年,直接使用这个无门槛300元代金券抵扣即可免费搭建幻兽帕鲁服务器。阿里云服务器网al…

Vulnhub靶机:hacksudo-Thor

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:hacksudo-Thor(10.0.2.49) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.com/…

FTP 文件传送协议

目录 1 文件传送协议 FTP 1.1 FTP 的基本工作原理 FTP 特点 主进程的工作步骤 两个连接 两个不同的端口号 NFS 采用另一种思路 1.2 简单文件传送协议 TFTP TFTP 的主要特点 TFTP 的工作(很像停止等待协议) 1 文件传送协议 FTP 文件传送协议 …

three.js 匀速动画(向量表示速度)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div>1. 匀速动画(向量表示速度)</div…

【复现】Rebuild管理系统SSRF漏洞_44

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 REBUILD&#xff08;简称 RB&#xff09;是一款高度可配置化的 企业管理系统&#xff0c;旨在帮助企业快速完成信息化建设&#x…

图像处理SoC的方案调研(视频编码器和DLA)

最近在公众号和粉丝交流&#xff0c;提到了图像处理SoC&#xff0c;包括的部分有CPU ISP 视频编码器 DLA axi/ahb/apb总线及外设&#xff0c;我觉得很有意思&#xff0c;值得学习和了解&#xff0c;尤其是视频编码器和DLA这两个概念。 1 视频编码器 视频编码器是一种可以…

网桥与网关

文章目录 概要网桥网关联系与区别参考文章 概要 网桥和网关的理解 网桥 几个名词的概念 网关 联系与区别 参考文章 如何通俗地解释什么是网桥&#xff1f; 网关到底是什么求通俗易懂讲解? 网桥&#xff1a;网桥也叫桥接器&#xff0c;是连接两个局域网的一种存储/转发…