percona 出的一个mysql压力测试工具,至于tpcc的话,是一个衡量事务处理能力的一个值。具体可以看老外对他的定义。
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp
现在来说tpcc-mysql
安装:
centos/red hat平台是
yum install bzr
bzr branch lp:~percona-dev/perconatools/tpcc-mysql
cd src
make
当然你要安装mysql-devel包。
我测试5.1的版本。参数主要是
key_buffer_size = 50M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 1M myisam_sort_buffer_size = 2M thread_cache_size = 8 query_cache_size= 16M thread_concurrency = 8 innodb_buffer_pool_size = 300M innodb_additional_mem_pool_size = 20M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50
innodb_buffer_pool_size 是300M的
创建测试的 数据库
mysql -e 'create database tpcc1000'
mysql tpcc1000 <create_table.sql
mysql tpcc1000 <add_fkey_idx.sql
./tpcc_load localhost tpcc1000 root "" 5
这里5的意思是数据量的大小,打开innodb per file ,可以看5,生成的数据量大概在500M 。10的话大概是1G
./tpcc_start -hlocalhost -dtpcc1000 -uroot -w5 -c16 -r10 -l200
测试200s,预热10s,结果是300tpmC
硬件方面是,pc 机,amd 双核 Athlon(tm) X2 240 2800Mhz ,内存1.8G
<Constraint Check> (all must be [OK]) [transaction percentage] Payment: 43.45% (>=43.0%) [OK] Order-Status: 4.38% (>= 4.0%) [OK] Delivery: 4.31% (>= 4.0%) [OK] Stock-Level: 4.38% (>= 4.0%) [OK] [response time (at least 90% passed)] New-Order: 100.00% [OK] Payment: 100.00% [OK] Order-Status: 100.00% [OK] Delivery: 100.00% [OK] Stock-Level: 100.00% [OK] <TpmC> 372.600 TpmC
最终结果是一个tpmc的值。
提高innodb_buffer_pool_size 到600M 发现测试结果没有提高
这里将innodb_flush_log_at_trx_commit设成2 ,结果大大出乎意料
<Constraint Check> (all must be [OK]) [transaction percentage] Payment: 43.48% (>=43.0%) [OK] Order-Status: 4.35% (>= 4.0%) [OK] Delivery: 4.35% (>= 4.0%) [OK] Stock-Level: 4.35% (>= 4.0%) [OK] [response time (at least 90% passed)] New-Order: 100.00% [OK] Payment: 100.00% [OK] Order-Status: 100.00% [OK] Delivery: 100.00% [OK] Stock-Level: 100.00% [OK] <TpmC> 7590.600 TpmC
达到惊人的7500,是原来的20倍。
最后来张对比图,
图的生成方法用了下面链接里的方法
关于 innodb_flush_log_at_trx_commit 也可 参看这篇文章 http://swachian.iteye.com/blog/193788
最近比较火大,一起维护的服务器,其他同事单方面的更改了ssh 连接限制,我完全不知晓,还在奇怪为什么搞了半天都登不上服务器,原来他们在交换机上做了限制,公网ip无法登入了。我气死,我们一旦有什么没报,他们要问为什么不向他们汇报,但是自己动了关键性的东西,为什么不告诉我们一声? 登录都不能登录了还叫我维护个毛啊。己所不欲勿施于人。
被人不理解,被人误解。我要把这些压力转化为动力!
2013年7月13日 11:57:43
我回头又用win7 的virtualbox 安装centos6.3 测了一下自带的5.1的mysql 。
物理机是i3 双核,4G ,sata 分了2g给虚拟机
主要几个参数
innodb_log_file_size = 50M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_buffer_pool_size = 500M
<TpmC>
6541.800 TpmC
tpmc 也能达到6500样子,如果你测出来只是3,4百,那肯定是小了,木有发挥出innodb的优势出来。那还不如用myisam 呢。