技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)

【mySQL】提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances 转自:https://blog.youkuaiyun.com/qing_gee/article/details/42742241(作者太罗嗦了,复制好多遍) 提升mysql性能的关键参数之innodb_buffer_pool_size、innodb_buffer_pool_instances。 首先我们先看一下,我的电脑(i3-3220,4G内存,没有配置innodb_buffer_pool_size参数的情况下,抛开程序的性能,经过1个线程-8个线程的测试结果)环境下,大家可以看到如下的图,线程并发情况下,时间. 阅读详情

作者:Vadim Tkachenko
翻译:管长龙
本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/


我曾经在文章《MySQL 5.7 安装后的性能调优》(文末链接)和《MySQL 101:调整 MySQL 性能的参数》(文末链接)中谈到过 innodb_buffer_pool_instances 这个参数 ,建议使用值为“8”,但我不能说这个值是否足够好。因此,让我们看看在以下情况下,使用不同的 innodb_buffer_pool_instances 值将获得什么结果。

我将使用 sysbench oltp_read_write 基准测试显示为帕累托图。我将为大小为 100 GB 的数据库设置 innodb_buffer_pool_size = 25GB,因此在 buffer_pool 空间上会有竞争,这将是 IO 绑定的情况。

基准测试

硬件配置列表:

System | Supermicro; SYS-F619P2-RTN; v0123456789 (Other)
   Platform | Linux
    Release | Ubuntu 18.04.4 LTS (bionic)
     Kernel | 5.3.0-42-generic
Architecture | CPU = 64-bit, OS = 64-bit
  Threading | NPTL 2.27
    SELinux | No SELinux detected
Virtualized | No virtualization detected
# Processor ##################################################
 Processors | physical = 2, cores = 40, virtual = 80, hyperthreading = yes
     Models | 80xIntel(R) Xeon(R) Gold 6230 CPU @ 2.10GHz
     Caches | 80x28160 KB
# Memory #####################################################
      Total | 187.6G

通过 SATA SSD INTEL SSDSC2KB960G8(英特尔企业级 SSD D3-S4510)上的存储。

简短的设置概述:

  • 数据无法存储到内存中(数据大小为〜100GB,服务器上的内存为 188GB,我们使用 O_DIRECT 为 MySQL innodb_buffer_pool_size 分配了 25GB,因此即使服务器上有很多内存,也不会超过指定的 25GB 使用)。
  • 存储上工作主要为读写密集型(将从存储中进行读取),并且在 MySQL 中进行了完全的 ACID 兼容和数据安全设置。
  • 对于 SATA SSD 存储,innodb_io_capacity 将设置为 2000,而 innodb_io_capacity_max 为 4000。
  • 将 innodb_buffer_pool_instances 测试以下值:1、2、4、8、16、32、64。
  • innodb_buffer_pool_instances = 64,也是 MySQL 允许的最大值。

测试命令:

sysbench oltp_read_write --threads=150 --time=10000 \
--tables=40 --table_size=10000000 --mysql-host=127.0.0.1 \
--mysql-user=sbtest --mysql-password=sbtest \
--max-requests=0 --report-interval=1 --mysql-db=sbtest \
--mysql-ssl=off --create_table_options=DEFAULT CHARSET=utf8mb4 \
--report_csv=yes --rand-type=pareto run

基准测试将运行三个小时,每 1 秒报告一次吞吐量。

SATA SSD 上的结果

让我们看看每个 innodb_buffer_pool_instances 分别有什么结果:

innodb_buffer_pool_instances=1

innodb_buffer_pool_instances=2

innodb_buffer_pool_instances=4

innodb_buffer_pool_instances=8

innodb_buffer_pool_instances=16

innodb_buffer_pool_instances=32

innodb_buffer_pool_instances=64

似乎显而易见的是,随着我们增加 innodb_buffer_pool_instances 的值,它对吞吐量的变化产生了积极的影响。我们可以将结果压缩到一个图表中,以便仔细查看:

如果要比较吞吐量和偏差,请比较最近 2500 秒的结果:

因此,实际上 innodb_buffer_pool_instances = 64 显示出最佳的吞吐量和较小的可变性。从可变性的角度来看,建议的 innodb_buffer_pool_instances = 8 似乎比 1-4 的值更好,但不会产生最佳的吞吐量。

最后的想法

对于这种特殊情况,innodb_buffer_pool_instances = 64 是最佳选择,但我仍然不建议一种可靠的方法来找到最佳值。较小的 1-4 似乎会产生很大的可变性甚至停滞,因此从 8 开始是一个不错的选择。


相关链接:

  1. 《MySQL 5.7 安装后的性能调优》
    https://www.percona.com/blog/2016/10/12/mysql-5-7-performance-tuning-immediately-after-installation/
  2. 《MySQL 101:调整 MySQL 性能的参数》
    https://www.percona.com/blog/2020/06/30/mysql-101-parameters-to-tune-for-mysql-performance/
Mysql 8.0 之调整 innodb buffer innodb_buffer_pool_size是一个内存区域,用来缓存InnoDB存储引擎的表中的数据和索引数据,以便提高对InnoDB存储引擎表中数据的查询访问速度。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 279

InnoDB缓存之Buffer Pool

1. 前言 我们已经知道,对于InnoDB存储引擎而言,页是磁盘和内存交互的基本单位。哪怕你要读取一条记录,InnoDB也会将整个索引页加载到内存。哪怕你只改了1个字节的数据,该索引页就是脏页了,整个索引页都要刷新到磁盘。InnoDB是基于磁盘的存储引擎,如果每次操作都去读写磁盘,那么性能将会受到很大的影响。而且绝大多数时候,程序读写的数据在磁盘上并不是连续的,这意味着需要执行大量的随机IO读写,磁盘随机IO读写效率是非常低的,尤其是传统的机械硬盘。 在解决这个问题之前,大家可以先想一想,为什么我们只想读取

程序员小潘 3286

SDR实战(四)-AD9361使用手册(三)

本节定义了并行数据端口和串行外设接口(SPI),它们使得AD9361与基带处理器(BBP)之间能够传输数据和控制/状态信息。图63展示了这些接口,并提供了AD9361和BBP在宽带无线系统中使用方式的高级概述。数据接口以两种模式之一运行:兼容标准CMOS模式或兼容低压差分信号(LVDS)模式。每个接口都具有以下部分描述的独特特性。使用CMOS模式时:保持了单端-CMOS逻辑兼容性。可以使用一个或两个数据端口。使用两个端口可以提高数据吞吐量。

hutx0924的博客 6243

MySQL缓冲池innodb_buffer_pool_instances参数配置示例

较大的缓冲池实例数可以减少锁的竞争,但过多的实例也可能引入额外的管理开销。因此,建议从接近CPU核心数一半(如16)开始尝试,并根据实际应用的并发查询量、响应时间和资源使用情况来微调。在这个案例中,已建议将其设置为大约100GB左右,确保每个缓冲池实例有足够的容量来持有数据和索引页。时,你可以倾向于设置一个较高的值以充分利用多核处理器的优势,从而提高并发处理能力和降低锁竞争。对于一个仅部署了数据库服务的服务器,且具有32个核心,在配置。考虑到核心数与缓冲池实例之间的关系,一个合理的起始点可能是将。

学亮编程手记 1247

【老生谈算法】可视化通道流中瞬时涡量场的算法实现与MATLAB源码分析——瞬时涡量场

本文旨在探讨可视化通道流中瞬时涡量场的方法,并通过MATLAB编程实现这一过程。涡量场作为描述流体旋涡强度和方向的重要物理量,对于理解复杂流体运动具有重要意义。本文首先介绍了涡量场的基本概念,随后详细阐述了从测量数据收集到涡量场可视化的完整流程,并给出了相应的MATLAB源码。通过实际运行该源码,我们展示了涡量场的可视化结果,并讨论了其在流动结构识别和动力学行为理解中的应用。关键词: 涡量场;流体运动;MATLAB;可视化;PIV一、引言。

m0_53407570的博客 1124

告别WSL:Ollama Windows原生部署与GPU加速实战

本文详细介绍了Ollama在Windows系统上的原生部署与GPU加速实战指南。告别WSL,通过官方原生应用直接调用NVIDIA和AMD显卡,实现更高效的本地大模型运行。文章涵盖系统准备、三步安装、模型拉取运行、GPU性能优化及高级配置,为Windows AI开发者提供一站式解决方案。

prometheus9mon的博客 532

mysql8.0 性能优化配置 innodb_buffer_pool_size

缓冲池是主内存中的一个区域,InnoDB在访问表和索引数据时会在该区域进行缓存。缓冲池允许直接从内存访问频繁使用的数据,这加快了处理速度。在专用服务器上,通常会将高达80%的物理内存分配给缓冲池。为了提高高容量读取操作的效率,缓冲池被划分为可能容纳多行的页面。为了提高缓存管理的效率,缓冲池被实现为页面的链接列表;很少使用的数据使用最近最少使用(LRU)算法的变体从高速缓存中老化。了解如何利用缓冲池将频繁访问的数据保存在内存中是MySQL调优的一个重要方面。

1万+

做小程序支付时,我是怎么被“虚拟支付”绊了一跤的

微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。

zhurizhe71的学习之路 2580

技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(下)

作者:Vadim Tkachenko 翻译:管长龙 本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/ 在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》 中我们在 innodb_buffer_pool_size=25G 的条件下进行了对 innodb_buffer_pool_i.

ActionTech的博客 1070

海思Hi3516CV610开发实战:在Ubuntu 22.04上从零构建嵌入式Linux开发环境

本文详细介绍了在Ubuntu 22.04上为海思Hi3516CV610开发板搭建嵌入式Linux开发环境的完整流程。从虚拟机配置、系统安装到基础环境设置,提供了实用技巧和常见问题解决方案,帮助开发者高效构建适用于智能视觉处理的开发环境。

weixin_29197699的博客 508

Python pydub实现语音停顿切分

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(fi...

wangqianqianya的博客 1万+

mysql多大_技术译文 | MySQL8需要多大的innodb_buffer_pool_instances值(下)

作者:Vadim Tkachenko翻译:管长龙本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》中我们在 innodb_b...

weixin_39866087的博客 84

【Unity实战】实现最完美最简单的UI适配方案,背景压缩或者拉伸变形解决方案,手机刘海屏适配,适配不同分辨率,不同尺寸,不同设备。

这期来讲一个简单的UI设计方案,很多同学可能搞不懂锚点、轴心这些概念,导致做好的UI在别人的设备上,乱跑或者是重叠,或者是参加游戏老发时间比较紧来不及做适配,都可以来试试这个方法,通过填充边框来保持游戏画面的原始比例,所以它的缺点也很明显,在一些移动设备上会浪费比较大的显示面积。 unity不同设备UI变形? UI在不同设备上如何适配?

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3648

mysql多大_技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(下)

作者:Vadim Tkachenko翻译:管长龙本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》中我们在 inn...

weixin_39614750的博客 70

别再只会复制Haar级联代码了!OpenCV人脸检测全方案深度解析,从原理到工业级落地

通用预训练模型在你的业务场景效果不好时,用自己的业务数据集训练专属的级联器,是提升精度的终极方案,OpenCV自带和工具,支持自定义Haar/LBP级联器训练。场景首选方案次选方案新手入门学习Haar级联分类器LBP级联分类器嵌入式轻量固定场景LBP级联分类器YuNet轻量版工业级落地项目(99%场景)DNN+YuNetMTCNN多人脸+小目标复杂场景DNN+YuNet自定义微调模型同时做人脸+其他目标检测。

2601_94871597的博客 379

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql8需要多大内存_技术译文 | MySQL8需要多大的innodb_buffer_pool_instances值-上

作者:Vadim Tkachenko翻译:管长龙本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/我曾经在文章《MySQL 5.7 安装后的性能调优》(文末链接)和《MySQL 101:调整 MySQL 性能的参数》(文末链接)中谈到过 ...

weixin_36075657的博客 566

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mysql8需要多大内存_技术译文 | MySQL8需要多大的innodb_buffer_pool_instances值(下)...

作者:Vadim Tkachenko翻译:管长龙本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》中我们在 innodb_b...

weixin_36115763的博客 2047

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql ssd inodb,技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)

我曾经在文章《MySQL 5.7 安装后的性能调优》(文末链接)和《MySQL 101:调整 MySQL 性能的参数》(文末链接)中谈到过 innodb_buffer_pool_instances 这个参数 ,建议使用值为“8”,但我不能说这个值是否足够好。因此,让我们看看在以下情况下,使用不同的 innodb_buffer_pool_instances 值将获得什么结果。我将使用 sysben...

weixin_30849865的博客 169

mysql type buffer_技术译文 | MySQL8需要多大的innodb_buffer_pool_instances值(下)

在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》中我们在 innodb_buffer_pool_size=25G 的条件下进行了对 innodb_buffer_pool_instances 不同值的测试。本文将重复该测试,大小为 100GB 的数据库 innodb_buffer_pool_size=140G,这将是 CPU 密集型的...

weixin_34901388的博客 106

mysql8对系统的要求_技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)...

作者:Vadim Tkachenko翻译:管长龙本文来源:https://www.percona.com/blog/2020/08/13/how-many-innodb_buffer_pool_instances-do-you-need-in-mysql-8/我曾经在文章《MySQL 5.7 安装后的性能调优》(文末链接)和《MySQL 101:调整 MySQL 性能的参数》(文末链接)中谈到过 ...

weixin_32367173的博客 605

mysql内存占用25g_技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(下)...

在《技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(上)》中我们在 innodb_buffer_pool_size=25G 的条件下进行了对 innodb_buffer_pool_instances 不同值的测试。本文将重复该测试,大小为 100GB 的数据库 innodb_buffer_pool_size=140G,这将是 CPU 密集型的...

weixin_33323907的博客 191

InnoDB 缓冲池大小调整

导读翻译者:魏新平译文校稿:叶师傅原文出处:《Chunk Change: InnoDB Buffer Pool Resizing》https://www.percona....

老叶茶馆 6644

MySQL运行内存设置

MySQL社区版运行时内存设置

shliu220506的博客 5983

InnoDB - Buffer Pool

【1】前言 InnoDB Buffer Pool 是 InnoDB 缓冲池。里面保存热数据,旨在减少直接查询磁盘的操作。 【2】读前须知 缓冲池大小必须始终等于或为 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 的倍数。 【2-1】Buffer Pool Instance 其实可以理解类似为 Redis 有 16个库一样。 InnoDB 将缓冲池划分为单独的实例可以通过减少不同线程读取和写入缓存页面时的争用来提高并发性。 使用散列

一七令 1251

MySQL优化之——Innodb buffer pool参数

MySQL优化之 Innodb buffer pool参数

贺浦力特的博客 1297

MySQL优化:innodb_buffer_pool_instances与innodb_buffer_pool_size参数分析

首先了解三个参数三个参数: innodb_buffer_pool_size(缓冲池大小) innodb_buffer_pool_chunk_size(定义InnoDB缓冲池大小调整操作的块大小) innodb_buffer_pool_instances(InnoDB缓冲池划分为的区域数) 关于两个参数的关系,在MySQL8.0的官方文档中: Buffer pool size must ...

SunZLong的博客 1万+
上一篇: 技术译文 | How Can ScaleFlux Handle MySQL Workload?
下一篇: 技术译文 | MySQL 8 需要多大的 innodb_buffer_pool_instances 值(下)
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值