Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1745583
  • 博文数量: 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-12 11:04:54

目的

         根据现有硬件环境下,测试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_size1/3。此时,innodb_buffer_pool_instances2时,MySQL的性能相对较高,而随着innodb_buffer_pool_instances的增大,MySQL的性能反而有所降低。但总体来看,对数据库的性能影响不大。

结论

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

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

参考:

1MySQL 5.5 Reference Manual

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

 

 

 

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

hyhy9232012-12-07 15:09:36

king_wangheng: 是由于在执行过程中,多线程操作时,出现并发死锁问题。如果方便的话,根据测试环境,调低测试的连接数,再进行测试。.....
嗯 谢谢了

king_wangheng2012-12-06 17:32:36

hyhy923: 1205, HY000, Lock wait timeout exceeded; try restarting transaction
1205, HY000, Lock wait timeout exceeded; try restarting transaction
1205, HY000,.....
是由于在执行过程中,多线程操作时,出现并发死锁问题。如果方便的话,根据测试环境,调低测试的连接数,再进行测试。

hyhy9232012-12-06 16:11:46

1205, HY000, Lock wait timeout exceeded; try restarting transaction
1205, HY000, Lock wait timeout exceeded; try restarting transaction
1205, HY000, Lock wait timeout exceeded; try restarting transaction
1205, HY000, Lock wait timeout exceeded; try restarting transaction
560, 0(0):0.000|0.000, 0(0):0.000|0.000, 0(0):0.000|0.000, 0(0):0.000|0.000, 0(0):0.000|0.000
570, 0(0):0.000|0.000, 0(0):0.000|0.000, 0(0):0.000|0.000, 1(0):0.000|2.711, 0(0):0.000|0.000

king_wangheng2012-09-16 19:48:06

这是由于依赖的库的问题,可以通过源码安装一个mysql,将LD_LIBRARY_PATH设置为安装的路径的lib库即可。

ninitaai2012-09-14 10:40:54

根据网上搜Segmentation fault,ncurse -deve 这个包我也安装了啊。mysql 也重新编译了,还是报Segmentation fault,求指导?