Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1743827
  • 博文数量: 107
  • 博客积分: 1715
  • 博客等级: 上尉
  • 技术积分: 3168
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-18 18:42
个人简介

阿里巴巴DBA,原去哪儿网DBA。专注于MySQL源码研究、DBA运维、CGroup虚拟化及Linux Kernel源码研究等。 github:https://github.com/HengWang/ Email:king_wangheng@163.com 微博 :@王恒-Henry QQ :506437736

文章分类

全部博文(107)

文章存档

2014年(2)

2013年(38)

2012年(67)

分类: Mysql/postgreSQL

2012-09-06 16:11:21

目的

    根据现有硬件环境下,测试MySQL单实例测试随着innodb_buffer_pool_size的变化,不同数据量的MySQL数据库性能。便于DBA和开发人员根据应用需求,安装和部署。

实验测试环境

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的较优值,从而得到较优的MySQL性能,以及不同warehouse数据量下MySQL的性能。主要测试方案如下:

   该测试在环境一机器上,单机单实例主要测试随着innodb_buffer_pool_size的变化,其他参数不变的情况下,MySQL性能的影响。测试的数据量分别为100warehouse1000warehouse时,数据大小大约分别为10G100G。具体如下: 

测试

innodb_buffer_pool_size的值

占系统内存的比例

1

24G

37.5%

2

32G

50%

3

38G

59.375%

4

45G

70.3125%

5

51G

79.6875%

6

55G

85.9375%

7

58G

90.625%

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

Parameters

Value

Value

[warehouse]

100

1000

[connection]

16

16

[rampup]

1800 (sec.)

7200 (sec.)

[measure]

1800 (sec.)

7200 (sec.)

测试 

测试结果如下所示:

Innodb_buffer_pool_size大小(G

100W吞吐量(tpmc

1000W吞吐量(tpmc

24

22934.367

4091.533

32

25893.566

5550.767

38

24105.268

6038.867

45

21302.900

6442.2

51

20585.732

6869.417

55

19872.533

6940.85

58

20054.301

6827.983


    从测试结果来看,100WMySQL吞吐量(TPmC)曲线图如下所示:

     从测试结果来看,1000WMySQL吞吐量(TPmC)曲线图如下所示:

    通过以上测试结果可知,在测试数据为100Warehouse时,数据可以全部cacheinnodb buffer pool中。从曲线图来看,随着innodb_buffer_pool_size的增大,MySQL的性能反而有所降低。

 在测试数据为1000Warehouse时,当innodb_buffer_pool_size的大小在55G(大约占内存的85.9375%)时,性能达到最大。但是从图中可以看出,当innodb_buffer_pool_size的大小为51G(大约占内存的79.6875%)时,性能基本达到较优。而当innodb_buffer_pool_size的大小为58G(大约占内存的90.625%)时,性能降低,这是由于innodb_buffer_pool_size过大,导致swap的原因。

结论

    从以上测试可知,对于单机单实例的测试中可知,当测试的数据量远远大于内存大小时,随着innodb_buffer_pool_size的不断增大,MySQL的性能也不断地提高。当innodb_buffer_pool_size占内存大小的80%~85%时,MySQL的性能达到最大。而继续增大innodb_buffer_pool_size时,MySQL的性能降低,这是由于导致内存swap的原因。并且,此时的瓶颈为服务器的IOCPU利用率较低。

 当测试的数据量小于innodb_buffer_pool_size的大小时,随着innodb_buffer_pool_size的不断增大,MySQL的性能反而有所降低。此时,所有操作都在内存中完成,MySQL的性能较高。

 

阅读(6023) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~