作者: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 | LinuxRelease | Ubuntu 18.04.4 LTS (bionic)Kernel | 5.3.0-42-generic
Architecture | CPU = 64-bit, OS = 64-bitThreading | NPTL 2.27SELinux | No SELinux detected
Virtualized | No virtualization detected
# Processor ##################################################Processors | physical = 2, cores = 40, virtual = 80, hyperthreading = yesModels | 80xIntel(R) Xeon(R) Gold 6230 CPU @ 2.10GHzCaches | 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 需要多大的 innodb_buffer_pool_instances 值(上)相关推荐

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

    我曾经在文章<MySQL 5.7 安装后的性能调优>(文末链接)和<MySQL 101:调整 MySQL 性能的参数>(文末链接)中谈到过 innodb_buffer_pool ...

  2. mysql8不区分大小写_技术译文 | MySQL 8.0.19 GA!

    作者:Geir Hoydalsvik 原文:https://mysqlserverteam.com/the-mysql-8-0-19-maintenance-release-is-generally- ...

  3. 2场直播丨MySQL 数据库最常见的 6 类故障的排除方法、2020数据技术嘉年华·金融峰会暨数据库大咖讲坛(第4期)...

    一.MySQL 数据库最常见的 6 类故障的排除方法 - 2020年11月12日 20:00 - 2020年11月12日 21:00 MySQL 无法启动?MySQL 连接不上?MySQL 挂起(hu ...

  4. mysql索引空间太大_MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  5. MySQL数据库如何解决大数据量存储问题

    FROM http://blog.csdn.net/likika2012/article/details/38816037 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存 ...

  6. 大数据技术基础_【基础】大数据技术栈介绍

    大数据技术的体系庞大且复杂,基础的技术包含数据的采集.数据预处理.分布式存储.NoSQL数据库.数据仓库.机器学习.并行计算.可视化等各种技术范畴和不同的技术层面. 首先给出一个通用化的大数据处理框架 ...

  7. mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?

    原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...

  8. uuid表示时间的部分_技术译文 | UUID 很火但性能不佳?今天我们细聊一聊

    作者:Yves Trudeau Yves 是 Percona 的首席架构师,专门研究分布式技术,例如 MySQL Cluster,Pacemaker 和 XtraDB cluster.他以前是 MyS ...

  9. 甲骨文收购mysql,甲骨文提出十大保证 承诺收购Sun后会善待MySQL

    CNET科技资讯网12月16日国际报道先前欧盟由于不相信甲骨文收购Sun之后会善待MySQL,因此11月时对此一并购案正式投下反对票.不过近来双方关系显然稍有解冻,甲骨文对客户.开发者与MySQL用户 ...

  10. 2023云数据库技术沙龙MySQL x ClickHouse专场成功举办

    4月22日,2023首届云数据库技术沙龙 MySQL x ClickHouse 专场,在杭州市海智中心成功举办.本次沙龙由玖章算术.菜根发展.良仓太炎共创联合主办.围绕"技术进化,让数据更智 ...

最新文章

  1. Java开发规范,不要新建一个类就实现Serializable接口
  2. java ssh工具类_JAVA SSH2工具类
  3. php listview,ListView Item多布局的实现
  4. Docker学习文档之三 其他相关-参考
  5. Android中Menu的基本用法
  6. python_环境测试
  7. poj1811(pollard_rho模板)
  8. 差分约束系统 POJ 3169 Layout
  9. Eviews9.0---软件安装
  10. 葡萄城报表模板库更新!新增物流行业特色模板
  11. 他是年薪几十万的微软工程师,现在却在成都街头收破烂......
  12. 基于igv.js的一个小工具
  13. python 今日头条 控制手机_Python脚本下载今日头条视频(附加Android版本辅助下载器)...
  14. c++ template aliases
  15. PPT制作毛玻璃效果
  16. Xilinx SDx 2018.3安装
  17. 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
  18. JWT无状态登录+跨域问题
  19. 【笔记】CUDA(二) - (异步)SIMT 架构
  20. 3个视频提取字幕的方法,简单又高效,建议收藏

热门文章

  1. 彻底改变计算机用户名,提升电脑系统安全:如何修改电脑登录用户名以及密码呢?...
  2. 推荐几个图标搜索网站
  3. 计算机在哪里设置定时休眠,win7系统设置定时开关机休眠唤醒的详细办法
  4. Android仿人人客户端(v5.7.1)——有关滑动式左侧菜单实现过程中网友的疑问解答
  5. Warbler, A Little Birdie To Introduce Your Rails App To Java
  6. UFS 3.1协议分析(第一至四章) -- UFS概述
  7. 深度学习安装笔记(二)显卡、显卡驱动、CUDA 的关系以及显卡驱动升级
  8. 【379】pandas 说明
  9. 微博有哪些营销价值?
  10. 计算机共享网络的账号密码怎么设置密码,怎样才能给win10共享设置密码的操作方法...