mysql优化---第7篇:参数 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个线程的测试结果)环境下,大家可以看到如下的图,线程并发情况下,时间. 阅读详情
AI摘要

本文通过测试MySQL 5.6.7的InnoDB Buffer Pool性能,发现innodb_buffer_pool_instances参数对I/O负载有显著影响。特别是在高I/O负载时,该参数能够提升并发性能。

摘要:1 innodb_buffer_pool_instances可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。

2 innodb_buffer_pool_instances 参数显著的影响测试结果,特别是非常高的 I/O 负载时。

3 实验环境下, innodb_buffer_pool_instances=8 在很小的 buffer_pool 大小时有很大的不同,而使用大的 buffer_pool 时,innodb_buffer_pool_instances=1 的表现最棒。


1 定义

The number of regions that the InnoDB buffer pool is divided into. For systems with buffer pools in the multi-gigabyte range, dividing the buffer pool into separate instances can improve concurrency, by reducing contention as different threads read and write to cached pages. Each page that is stored in or read from the buffer pool is assigned to one of the buffer pool instances randomly, using a hashing function. Each buffer pool manages its own free lists, flush lists, LRUs, and all other data structures connected to a buffer pool, and is protected by its own buffer pool mutex.

This option takes effect only when you set the innodb_buffer_pool_size to a size of 1 gigabyte or more. The total size you specify is divided among all the buffer pools. For best efficiency, specify a combination ofinnodb_buffer_pool_instances and innodb_buffer_pool_size so that each buffer pool instance is at least 1 gigabyte.

  • 测试日期: Oct-2012
  • 测试目的: 测试 MySQL 5.6.7 的表现
  • 硬件换
    • 服务器: Dell PowerEdge R710
    • CPU: 2x Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
    • 内存: 192GB(这个内存太猛了)
    • 存储: Very Fast PCIe Flash Card
    • 文件系统: ext4
  • 软件
    • 操作系统: CentOS 6.3
    • MySQL 版本: 5.6.7-RC
  • 测试规范
    • 测试工具: tpcc-mysql
    • 测试数据: 2500W (~250GB of data)
    • 测试时间: 总共测试 4000 秒,但只取最后的 2000 秒,避免因为冷启动的问题导致测试结果不准确
  • 不同的测试参数: 使用几组不同的 innodb_buffer_pool_size:13, 25, 50, 75, 100, 125GB ,innodb_buffer_pool_instances: 1 and 8, and innodb_log_file_size: 2x4GB and 2x8GB.

测试结果:

第一个结果使用的事 2x4GB 的 InnoDB 日志文件:

我们可看出当 innodb_buffer_pool_instances=8 在很小的 buffer_pool 大小时有很大的不同,而使用大的 buffer_pool 时,innodb_buffer_pool_instances=1 的表现最棒。

测试结果在大的 buffer_pool 时是很稳定的,原因是 InnoDB 使用异步 flush 模式,在新的 InnoDB flush 机制下以前的问题已经修复。不过 Dimitry 告诉我需要一个更大的 InnoDB 日志文件来获得更稳定的结果。

下面是 2x4GB vs 2x8GB innodb 日志文件大小的比较:

很显然,使用更大的日志文件,测试结果更稳定!

结论:

innodb_buffer_pool_instances 参数显著的影响测试结果,特别是非常高的 I/O 负载时。

在 MySQL 5.6 ,最终是可以获得非常稳定的吞吐,但自适应的 flush 机制仍需较大的日志文件。

MySQL 配置如下: 
01 [mysqld]
02 gdb
03  
04 innodb_file_per_table = true
05 innodb_data_file_path = ibdata1:100M:autoextend
06 innodb_flush_method = O_DIRECT
07 innodb_log_buffer_size = 256M
08  
09 innodb_flush_log_at_trx_commit = 1
10 innodb_buffer_pool_size = 125G
11 innodb_buffer_pool_instances=8
12  
13 innodb_log_file_size = 4G
14 innodb_log_files_in_group = 2
15 #####plugin options
16 innodb_read_io_threads = 16
17 innodb_write_io_threads = 16
18 innodb_io_capacity = 20000
19 innodb_io_capacity_max = 40000
20  
21  
22 #not innodb options (fixed)
23 port = 3306
24 back_log = 50
25 max_connections = 2000
26 max_prepared_stmt_count=500000
27 max_connect_errors = 10
28 table_open_cache = 2048
29 max_allowed_packet = 16M
30 binlog_cache_size = 16M
31 max_heap_table_size = 64M
32 sort_buffer_size = 4M
33 join_buffer_size = 4M
34 thread_cache_size = 1000
35 query_cache_size = 0
36 query_cache_type = 0
37 ft_min_word_len = 4
38 thread_stack = 192K
39 tmp_table_size = 64M
40  
41 server-id = 10
42 #*** MyISAM Specific options
43 key_buffer_size = 8M
44 read_buffer_size = 1M
45 read_rnd_buffer_size = 4M
46 bulk_insert_buffer_size = 8M
47 myisam_sort_buffer_size = 8M
48 myisam_max_sort_file_size = 10G
49 myisam_repair_threads = 1
50 myisam_recover
51 user=root
52 skip-grant-tables


转自:http://www.phpchina.com/archives/view-41968-1.html

Mysql 8.0 之调整 innodb buffer innodb_buffer_pool_size是一个内存区域,用来缓存InnoDB存储引擎的表中的数据和索引数据,以便提高对InnoDB存储引擎表中数据的查询访问速度。 阅读详情

相关推荐

MySQL性能调优实战:如何精准配置innodb_buffer_pool_size与innodb_buffer_pool_instances

本文深入探讨MySQL性能调优中innodb_buffer_pool_size与innodb_buffer_pool_instances的精准配置策略。通过实际案例分析,详细讲解如何根据服务器配置和业务负载计算最优参数值,提升数据库性能。文章涵盖缓冲池工作原理、动态调整技巧、监控方法及不同业务场景的最佳实践,帮助DBA有效解决高并发下的性能瓶颈问题。

h6i7j8的博客 783

innodb_buffer_pool_instances

The number of regions that the InnoDB buffer pool is divided into. For systems with buffer pools in the multi-gigabyte range, dividing the buffer pool into separate instances can improve concurrency,by reducing contention as different threads read and w...

u013469501的博客 5620

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5594

InnoDB缓存之Buffer Pool

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

程序员小潘 3286

Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG报告目录检查运行报告 2015-04-20 09:38:36 ERROR OGG-01172 Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000). 总结处理方法,从根本上解决问题。

xdyzgjy的专栏 7955

mcgs数据导出到U盘

mcgs触摸屏在工业中应用还是很多的,尤其他的脚本功能策略功能等将开放性放到了最大,让用户可以根据实际需求进行自由创作,正因为这样,对一些初学者就不是很友好,初学者想要简单操作就能实现功能,但是mcgs不可能两者兼备,在做工业设备,一些数据的采集保存就比较常见,但是mcgs没有相关按钮能够直接实现将数据导出到U盘的功能。这里我给大家讲解关于mcgs将报警历史记录、日志记录、历史数据记录导出到U盘的方法。

qq_24866535的博客 6230

mysql innodb_sort_buffer_size_mysql优化---第7篇:参数 innodb_buffer_pool_instances设置

摘要:1innodb_buffer_pool_instances可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。2 innodb_buffer_pool_instances参数显著的影响测试结果,特别是非常高的I/O负载时。3 实验环境下,innodb_buffer_pool_instances=8在很小的 buffer_pool 大小时有很大的不同...

weixin_28848833的博客 1311

UOS忘记密码别慌!用LiveCD工具5分钟搞定,附命令行救援模式详细步骤

本文详细介绍了UOS系统密码遗忘时的两种解决方案:图形化LiveCD工具和命令行救援模式。针对普通用户,LiveCD工具提供5分钟快速重置密码的便捷操作;而技术人员可通过命令行深度解析系统分区挂载与密码修改流程。文章还包含安全加固建议,帮助用户预防类似问题发生。

weixin_27032989的博客 588

mysql5.7 性能优化配置 innodb_buffer_pool_size

mysql5.7 性能优化配置 innodb_buffer_pool_size

1万+

ML307A模组通过MQTT协议接入OneNET平台的AT指令全解析

本文详细解析了ML307A模组通过MQTT协议接入OneNET平台的完整AT指令流程。从平台侧的产品创建、设备添加,到核心难点连接密钥的计算方法,再到模组侧的基础网络附着、MQTT连接配置、数据收发及调试排错,提供了手把手的实战指南,帮助开发者快速实现物联网设备上云。

weixin_29240711的博客 490

NetSuite软件二次开发:NetSuite二次开发最佳实践与案例分析

SuiteScript是NetSuite提供的一种用于二次开发的脚本语言,它基于JavaScript,但添加了特定的API和框架,以支持NetSuite平台的业务逻辑开发。SuiteScript有两种版本:SuiteScript 1.0和SuiteScript 2.0,后者提供了更现代的面向对象编程模型,增强了代码的可读性和可维护性。NetSuite允许用户自定义字段以满足特定的业务需求。这些字段可以添加到现有的记录类型中,也可以用于自定义记录。自定义字段可以是文本、数字、日期、下拉列表等多种类型。

kkchenjj的博客 1465

【mysql参数调优】:innodb_buffer_pool_size和innodb_buffer_pool_instances (三)

InnoDB缓冲池参数对数据库性能至关重要。innodb_buffer_pool_size决定缓存总量,建议设为物理内存的50%-70%(专用服务器),直接影响读写性能;innodb_buffer_pool_instances控制缓冲池分区数量,建议每个实例≥1GB且数量4-8个(与CPU核心数匹配),缓解高并发锁竞争。两者需协同配置:总大小提升缓存命中率,实例数优化并发效率。监控缓存命中率(应>99%)和锁等待情况,针对读多或写多场景动态调整,实现性能最优。

ray的博客 1332

Windows 10 本地硬盘变成了可弹出磁盘

今天新装了系统, 电脑是一个SSD+HHD, 没想到装好之后右下角显示可安全删除设备, 两个硬盘在那里. 这还得了. 查了一下午, 大致知道了是什么问题. Standard SATA AHCI controller使用高性能的硬盘模式就会把硬盘看作是一个可热插拔的存储器, 所以自然就会显示可弹出. 如果你的BIOS支持关闭HotSwap或者HotPlug, 那么直接关闭就可以了. 或者你直接在BIOS里把磁盘模式改为IDE, 不过这样就发挥不好你SSD的高性能了. 还有一种解决方法, 就是手动让系统把这两个

落日之城 4万+

mysql原理--InnoDB的Buffer Pool

Buffer Pool,用户态高速缓存

x13262608581的博客 2285

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

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

MySQL优化(一)innodb_buffer_pool 引擎缓存的配置

MySQL优化(一)innodb_buffer_pool 引擎缓存 我们都知道,内存读写和磁盘读写的速度不在一个数量级,在数据库中,数据都是最终落到磁盘上的,想要达成快速的读写,必然要依靠缓存技术。 Innodb的这个缓存区就是Innodb_buffer_pool,当读取数据时,就会先从缓存中查看是否数据的页(page)存在,不存在的话才去磁盘上检索,查到后缓存到这个pool里。同理,插入、修改、删除也是先操作缓存里数据,之后再以一定频率更新到磁盘上。控制刷盘的机制,叫做Checkpoint。 mysql安

无间行者 3808

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MySQL优化之——Innodb buffer pool参数

MySQL优化之 Innodb buffer pool参数

贺浦力特的博客 1297

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【MySQL】MySQL优化-innodb_buffer_pool_size

首先需要有MySQL的root权限账号,也就是information_schema数据库访问权限;可以通过语句查看Innodb的系统变量参数;可以通过语句查看innodb的运行状态变量;指代的一个内存区域,用来缓存InnoDB存储引擎的表中的数据和索引数据,用来提高对InnoDB存储引擎表中的数据查询和访问速度;该参数以字节(byte)为单位,我自己笔记本的MySQL中的默认是8388608byte,也就是8MB。

Ankie_的博客 2214

InnoDB Buffer Pool巧配置全解

作者:M哥 知数堂MySQL第8期学员、知数堂藏经阁项目-星耀队队长 一、简介 InnoDB维护了一个缓存数据和索引信息到内存的存储区叫做Buffer Pool,它会将最近访问的数据缓存到缓冲区。我们通过配置各个Buffer Pool的参数,可以显著提高MySQL的性能。  InnoDB的Buffer Pool是基于LRU算法来实现的,下面我们可以简单了解一下LRU算法: lea

老叶茶馆 1866

高并发MySQL优化:为什么innodb_buffer_pool_instances比size更重要?

本文深入探讨了在高并发MySQL优化中,`innodb_buffer_pool_instances`比`innodb_buffer_pool_size`更关键的原因。通过分析缓冲池的并发瓶颈本质、实例数与性能的量化关系,以及生产环境调优实战,揭示了如何通过合理配置实例数显著提升数据库性能。文章还提供了配置黄金法则和特殊场景的精细化配置建议,帮助开发者在电商大促、秒杀系统等高并发场景中优化MySQL性能。

lg888的博客 669

MySQL - InnoDB 的 Buffer Pool

本文深入解析InnoDB的Buffer Pool机制,从缓存需求、组织结构到淘汰策略和优化方案。主要内容包括:Buffer Pool作为内存缓存区解决磁盘IO瓶颈;由控制块、缓存页和碎片组成;通过free链表、哈希表和flush链表管理缓存页;改进的LRU算法将链表分为young和old区域,避免预读和全表扫描干扰;脏页通过三种方式刷盘;针对大内存高并发场景,采用多实例和chunk机制提升性能。最后介绍了通过SHOW ENGINE INNODB STATUS监控缓存状态的关键指标。全文系统性地揭示了Buff

记录后端技术的深水区:MySQL、并发、JVM、分布式。原理为主,实战为辅,能少踩一个坑是一个。 455

mysql数据库innodb性能优化之缓冲池配置

mysql数据库innodb性能优化。

liaomingwu的专栏 5330

mysql5.7参数调优

本文介绍MySQL 5.7六项调优参数:innodb_buffer_pool_instances划分缓冲池实例减少竞争;innodb_buffer_pool_size可在线调整但须为chunk与instances乘积的倍数;innodb_buffer_pool_chunk_size仅启动时可设;max_execution_time限制SELECT超时;innodb_print_all_deadlocks记录死锁日志;sort_buffer_size控制会话排序内存,建议1至4MB。

lihao2372的专栏 1008

第07问:innodb_buffer_pool_instances 是如何影响性能的?

问题: 我们都知道 innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的锁保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。 那么我们如何观察它是如何影响性能呢? 实验: 准备一个空数据库, 在这里我们将 performance_schema_events_waits_his...

ActionTech的博客 959
上一篇: boost库之shared_ptr
下一篇: mysql优化---优化工具MySQL performance tuning primer script
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值