tpcc-mysql对mysql做压力测试的安装使用

TPC-C 是用于模拟测试复杂的在线事务处理系统。其测试结果包括每分钟事务数(tpmC),以及每事务的成本(Price/tpmC )。在进行大压力下 MySQL 的一些行为时经常使用。

1、工具安装

下载完tpcc-mysql-src.tgz后,使用tar -zxvf tpcc-mysql-src.tgz进行源码包解压;

解压完后,可以看到以下目录文件

-rw-r--r--. 1 root root   1621 Sep 14  2014 add_fkey_idx.sql
-rw-r--r--. 1 root root    317 Sep 14  2014 count.sql
-rw-r--r--. 1 root root   3105 Sep 14  2014 create_table.sql
-rw-r--r--. 1 root root    763 Sep 14  2014 drop_cons.sql
-rw-r--r--. 1 root root    477 Sep 14  2014 load.sh
-rw-r--r--. 1 root root    851 Sep 14  2014 README
drwxr-xr-x. 2 root root   4096 Sep 14  2014 schema2
drwxr-xr-x. 5 root root   4096 Sep 14  2014 scripts
drwxr-xr-x. 2 root root   4096 Nov 24 09:54 src

进去src目录,这里要修改以下Makefile文件,目的是为了找到mysql安装路径正常编译,如下,以下红色的就是我新增的。

#
# "make all" to build necessary executables.
#
LIBS=`mysql_config --libs_r` -lrt
INC=-I. `mysql_config --include`-I/usr/local/mysql/include/
#DEFS=-DDEBUG
CFLAGS=-w -O2 -g
TRANSACTIONS=neword.o payment.o ordstat.o delivery.o slev.o
OBJS=main.o spt_proc.o driver.o support.o sequence.o rthist.o $(TRANSACTIONS)
.SUFFIXES:
.SUFFIXES: .o .c

.c.o:
$(CC) $(CFLAGS) $(INC) $(DEFS) -c $*.c
all: ../tpcc_load ../tpcc_start
../tpcc_load : load.o support.o
$(CC) load.o support.o $(LIBS)-L/usr/local/mysql/lib/-o ../tpcc_load
../tpcc_start : $(OBJS)
$(CC) $(OBJS) $(LIBS)-L/usr/local/mysql/lib/ -o ../tpcc_start
clean :

rm -f *.o

修改完配置文件后,可能会报/bash/bin command mysqld_config not found

修改下环境变量文件,加上export PATH=/usr/local/mysql/bin:$PATH即可。

修改完环境变量后,开始编译

执行make,输出以下信息则说明安装成功。

[root@mysqldb01 src]# make
cc load.o support.o `mysql_config --libs_r` -lrt -L/usr/local/mysql/lib/ -o ../tpcc_load
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c main.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c spt_proc.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c driver.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c sequence.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c rthist.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c neword.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c payment.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c ordstat.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c delivery.c
cc -w -O2 -g -I. `mysql_config --include` -I/usr/local/mysql/include/  -c slev.c

如果出现

error while loading shared libraries:libmysqlclient.so.18,

查看你的MySQL安装目录下/安装目录/lib/libmysqlclient.so.18是否存在,如果存在,那就做一个软链接到/usr/lib64/目录下

ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64

安装完成后,tpcc-mysql目录下会多出两个执行文件

tpcc_load  tpcc_start

2 初始化数据库

cd /root/tpcc-mysql

创建初始化数据库

mysqladmin -S /tmp/mysql01.sock create tpcc1000

创建表

mysql -S /tmp/mysql01.sock tpcc1000 < create_table.sql

以下为创建的表相关解释

New-Order:新订单,一次完整的订单事务,几乎涉及到全部表
Payment:支付,主要对应 orders、history 表
Order-Status:订单状态,主要对应 orders、order_line 表
Delivery:发货,主要对应 order_line 表
Stock-Level:库存,主要对应 stock 表
相关表:
客户:主要对应 customer 表
地区:主要对应 district 表
商品:主要对应 item 表
仓库:主要对应 warehouse 表

创建索引

mysql -S /tmp/mysql01.sock tpcc100 < add_fkey_idx.sql

初始化完毕后,就可以开始加载测试数据了

tpcc_load用法
tpcc_load [server] [DB] [user] [pass] [warehouse]
或者
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
选项 warehouse 意为指定测试库下的仓库数量。
在这里,需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个socket位置,因此如果你的socket不在相应路径的话,就需要做个软连接,或者通过TCP/IP的方式连接测试服务器。
ln -s /tmp/mysql01.sock  /tmp/mysql.sock
./tpcc_load localhost tpcc100 root "password" 10 这一步时间比较久

*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************

     [server]: 192.168.11.123
     [port]: 3306
     [DBname]: tpcc110
       [user]: root
       [pass]: wanwen1027
  [warehouse]: 10
TPCC Data Load Started...
Loading Item 
.................................................. 5000
.................................................. 10000
.................................................. 15000
.................................................. 20000
.................................................. 25000
.................................................. 30000
.................................................. 35000
.................................................. 40000
.................................................. 45000
.................................................. 50000
.................................................. 55000
.................................................. 60000
.................................................. 65000
.................................................. 70000
.................................................. 75000
.................................................. 80000
.................................................. 85000
.................................................. 90000
.................................................. 95000
.................................................. 100000
Item Done. 


3 开始使用

可以查看下使用帮助

[root@mysqldb01 tpcc-mysql]# ./tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
./tpcc_start: invalid option -- '-'
Usage: tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file -t trx_file

-w 指定仓库数量
-c 指定并发连接数
-r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好
-l 指定测试持续时间
-i  指定生成报告间隔时长
-f 指定生成的报告文件名

./tpcc_start -h 192.168.11.123 -d tpcc110  -u root -p wanwen1027 -w 10 -c 100 -r 120 -l 360 -f 20161124.log >>2016testcase.log 2>&1

***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '192.168.11.123'
option d with value 'tpcc110'
option u with value 'root'
option p with value 'xxx'
option w with value '10'
option c with value '100'
option r with value '120'
option l with value '360'
option f with value '20161124.log'

     [server]: 192.168.11.123
     [port]: 3306
     [DBname]: tpcc110
       [user]: root
       [pass]: wanwen1027
  [warehouse]: 10
 [connection]: 100
     [rampup]: 120 (sec.)
    [measure]: 360 (sec.)


RAMP-UP TIME.(120 sec.)


MEASURING START.

  10, 122(0):2.892|15.039, 109(0):0.837|1.388, 11(0):0.503|0.629, 12(0):3.812|3.922, 12(0):9.665|9.947

  20, 121(0):2.074|2.277, 118(0):0.735|0.799, 15(0):0.268|0.707, 13(0):2.670|2.686, 9(0):5.574|7.674

  30, 115(0):2.334|2.552, 131(0):0.815|0.857, 11(0):0.324|0.385, 9(0):4.048|4.093, 16(0):7.889|9.332
  40, 151(0):2.902|3.246, 135(0):0.733|0.811, 15(0):0.337|0.368, 15(0):2.333|2.395, 15(0):5.339|6.545
  50, 147(0):2.491|2.567, 146(0):0.769|0.822, 14(0):0.324|0.325, 16(0):3.162|3.315, 14(0):4.764|5.029

360, 135(0):2.004|2.126, 129(0):0.730|0.870, 13(0):0.271|0.276, 17(0):2.586|2.647, 14(0):4.525|4.821


STOPPING THREADS....................................................................................................



  [0] sc:4999  lt:0  rt:0  fl:0 
  [1] sc:4983  lt:0  rt:0  fl:0 
  [2] sc:501  lt:0  rt:0  fl:0 
  [3] sc:501  lt:0  rt:0  fl:0 
  [4] sc:501  lt:0  rt:0  fl:0 
 in 360 sec.



  [0] sc:4999  lt:0  rt:0  fl:0 
  [1] sc:4983  lt:0  rt:0  fl:0 
  [2] sc:501  lt:0  rt:0  fl:0 
  [3] sc:501  lt:0  rt:0  fl:0 
  [4] sc:501  lt:0  rt:0  fl:0 


(all must be [OK])
 [transaction percentage]
        Payment: 43.39% (>=43.0%) [OK]

 
     Order-Status: 4.36% (>= 4.0%) [OK]
       Delivery: 4.36% (>= 4.0%) [OK]
    Stock-Level: 4.36% (>= 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]



                 833.167 TpmC

-- 以逗号分隔,共6列
-- 第一列,第N次10秒
-- 第二列,新订单成功执行压测的次数(推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间,新订单事务数也被认为是总有效事务数的指标
-- 第三列,支付业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
-- 第四列,订单状态业务的结果,后面几个的意义同上
-- 第五列,物流发货业务的结果,后面几个的意义同上
-- 第六列,库存仓储业务的结果,后面几个的意义同上


你可能感兴趣的:(Mysql)