http://blog.chinaunix.net/uid-26896862-id-3345441.html

目的

根据现有硬件环境下,测试MySQL单实例下,在数据量小于innodb_buffer_pool_size大小的情况下,innodb_buffer_pool_instances的值对MySQL数据库的性能影响。

实验测试环境

1、实验测试硬件环境

Summary:        Dell R620, 1 x Xeon E5-2630 0 2.30GHz, 63GB / 64GB 1600MHz DDR3

System:         Dell PowerEdge R620 (Dell 036FVD)

Processors:     1 (of 2) x Xeon E5-2630 0 2.30GHz 7200MHz FSB (HT enabled, 6 cores, 24 threads)

Memory:         63GB / 64GB 1600MHz DDR3 == 8 x 8GB, 16 x empty

2、实验测试软件环境

实验测试的软件环境主要包括,操作系统、MySQL数据库以及测试工具,具体内容如下:

操作系统:

CentOS 6.2 (Final), Linux 2.6.32-220.23.1.el6.x86_64 x86_64, 64-bit

MySQL版本:Percona Server 5.5.20

TPC-C测试工具:tpcc-mysql

其中TPC-C测试工具的安装和使用说明文档参照相关内容。

测试方案

实验方案为单机单实例,探索MySQL在数据量小于参数innodb_buffer_pool_size的值时,innodb_buffer_pool_instances参数对MySQL性能的影响。主要测试方案如下:

单机单实例主要测试随着innodb_buffer_pool_instances的变化,其他参数不变的情况下,MySQL性能的影响。innodb_buffer_pool_size的大小为55G,约占内存的86%。数据量为200warehouse,数据大小大约为20G。具体如下:

测试

innodb_buffer_pool_instances的值

1

1

2

2

3

4

4

8

测试的参数具体如下所示:

Parameters

Value

[warehouse]

200

[connection]

16

[rampup]

3600 (sec.)

[measure]

1800 (sec.)

测试

测试结果如下所示:

Innodb_buffer_pool_size大小(G)

200W吞吐量(tpmc)

1

18337.033

2

18589.400

4

18042.867

8

17935.199

通过以上测试结果可知,在测试数据为200Warehouse时,数据大小大约占innodb_buffer_pool_size的1/3。此时,innodb_buffer_pool_instances为2时,MySQL的性能相对较高,而随着innodb_buffer_pool_instances的增大,MySQL的性能反而有所降低。但总体来看,对数据库的性能影响不大。

结论

innodb_buffer_pool_instances的值主要用于将innodb buffer pool进行划分,通过划分innodb buffer pool为多个实例,可以提高并发能力,并且减少了不同线程读写造成的缓冲页。每一页从其中一个buffer pool中使用hash函数随机的读取和写入。每个buffer pool管理和维护各自的信息,包括free lists、flush lists、LRUs等。

从以上测试可知,随着innodb_buffer_pool_instances的增加,MySQL的性能在划分的每个innodb buffer 的大小与测试的数据大小基本一致时,MySQL的性能最优。然而从测试结果来看,innodb_buffer_pool_instances对MySQL的性能并没有较大的提高。因此,对该参数的设置,仍然需要进一步的测试,需要谨慎设置。

参考:

1、MySQL 5.5 Reference Manual:

http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_buffer_pool_instances

MySQL基准测试--innodb_buffer_pool_instances的更多相关文章

  1. 详解MySQL基准测试和sysbench工具

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  2. Mysql基准测试详细解说(根据慕课网:《打造扛得住Mysql数据库架构》视频课程实时笔录)

    什么是基准测试 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以及评估变化对性能的影响. 我们可以这样认为:基准测试是针对系统设置的一 ...

  3. 【mysql】mysql基准测试

    基准测试定义 基准测试其实是一种测量和评估软件性能指标的方法,用于建立某个时间点的性能基准,以便当系统的软硬件发生变化的时候重新进行基准测试以评估变化对性能的影响.所以对系统性能的测量,才能知道我们的 ...

  4. 详解MySQL基准测试和sysbench工具(转)

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

  5. MySQL基准测试(三)--开源工具与实例演示

    MySQL基准测试(三)--开源工具与实例演示 针对web应用 ab ab是一个Apache HTTP服务的基准测试工具. http_load http_load是一个针对Web服务器测试工具. JM ...

  6. MySQL基准测试(二)--方法

    MySQL基准测试(二)--方法 目的: 方法不是越高级越好.而应该善于做减法.至简是一种智慧,首先要做的是收集MySQL的各状态数据.收集到了,不管各个时间段出现的问题,至少你手上有第一时间的状态数 ...

  7. MySQL基准测试(一)--原因,策略,思路

    MySQL基准测试(一)--原因,策略,思路 运用benchmark的原因 验证一些你认为的问题,通过基准测试和模拟数据来验证. 解决生产系统的一些异常 测试系统的当前的运行情况,通过历史的基准测试结 ...

  8. mysql基准测试工具tpcc-mysql安装、使用、结果解读

    TPCC是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业务处理系统,tpcc-mysql是percona基于TPC-C(下面简写成TPCC)衍生出来的产品,专用于My ...

  9. 解MySQL基准测试和sysbench工具

    前言 作为一名后台开发,对数据库进行基准测试,以掌握数据库的性能情况是非常必要的.本文介绍了MySQL基准测试的基本概念,以及使用sysbench对MySQL进行基准测试的详细方法. 文章有疏漏之处, ...

随机推荐

  1. Dede文章标题长度修改

    方法一.首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了). 方法二.进入phpmyadmin,点击dede_ar ...

  2. winbox添加dhcp和nat

    例子如上,wan连接外网,lan作为内网. 设置网卡ip 保证mac地址正确! 去到ip address里,设置两网卡的ip! 保证能ping通外网! 设置dhcp ip pool添加池,192.16 ...

  3. RTP格式解析

    一般为12字节,16字节头(转自https://www.cnblogs.com/qingquan/archive/2011/07/28/2120440.html) 概述: 实时传送协议(Real-ti ...

  4. 删除sslvpn用户

    config user localedit xinghen unset two-factornextend config user groupedit vpngroup unselect member ...

  5. Django中的forms一些小点

    1.默认情况下,chrom浏览器会提前对我们的form表单中的数据做校验,如果不想让chrom浏览器给我们做校验,则只需要按照下面的方式处理就可以了 <form method="pos ...

  6. Jedis cluster集群初始化源码剖析

    Jedis cluster集群初始化源码剖析 环境 jar版本: spring-data-redis-1.8.4-RELEASE.jar.jedis-2.9.0.jar 测试环境: Redis 3.2 ...

  7. tableViewCell上的定时器拖动阻塞

    if (_timer == nil) { _timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@sele ...

  8. [z]一个SQL语句分清楚RANK(),DENSE_RANK(),ROW_NUMBER()三个排序的不同

    转自:http://blog.csdn.net/s630730701/article/details/51902762 在SCOTT用户下,执行下面SQL; SELECT s.deptno,s.ena ...

  9. Vue 动态绑定类名

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. python 数据类型 之 利用 dict 模仿 switch语句功能

    Python本身并不提供Switch的语法功能,为了能够解决类似switch分支需求的问题,我们可以使用字典代替实现. 解决思路: 利用字典取值的get方法的容错性,处理switch语句中的defau ...