设为首页 收藏本站
查看: 424|回复: 0

[经验分享] TPCC-MySQL使用手册

[复制链接]

尚未签到

发表于 2018-10-1 13:50:47 | 显示全部楼层 |阅读模式
  一、 下载工具包
  Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试,其源码放在bazaar(Bazaar是一个分布式的版本控制系统,采用 GPL 许可协议,
  可运行于 Windows、GNU/Linux、UNIX 以及 Mac OS 系统之上。Bazaar 由 Canonical 公司(Ubuntu母公司)赞助)上,因此还需要先安装bazaar客户端。
  使用root安装rpm包
  rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
  然后就可以开始安装bzr客户端了:
  yum install bzr
  之后,就可以开始用bzr客户端下载tpcc-mysql源码了。
  cd /tmp
  bzr branch lp:~percona-dev/perconatools/tpcc-mysql
  二、编译安装
  编译非常简单
  cd tpcc-mysql/src
  make all
  编译常见问题:
  export MYSQL_HOME=/home/okooo/apps/schedule-slave/  指定一次mysql的位置,不然下面的操作找不到
  1、          找不到mysql的头文件。
  解决:export C_INCLUDE_PATH=$MYSQL_HOME/include
  2、          找不到mysql_config程序   /bin/sh: mysql_config: command not found
  解决:export PATH=$MYSQL_HOME/bin:$PATH
  3、          运行时找不到mysql库
  解决:export LD_LIBRARY_PATH=$MYSQL_HOME/lib
  cd /tmp/tpcc-mysql/src
  make
  然后就会在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start
  tpcc-mysql有几个脚本很重要
  create_table.sql:创建所需的数据库表,共9个表
  add_fkey_idx.sql:创建索引和外键
  drop_cons.sql:删除约束
  三、开始加载测试数据
  初始化测试库环境
  cd /tmp/tpcc-mysql
  mysqladmin create tpcc1000
  mysql tpcc1000
  mysqladmin -S /home/okooo/apps/schedule-slave/tmp/mysql.sock   create  tpcc100               //创建所需的数据库
  mysql -S /home/okooo/apps/schedule-slave/tmp/mysql.sock  < create_table.sql      //导入表结构
  mysql -S /home/okooo/apps/schedule-slave/tmp/mysql.sock  < create_table.sql  add_fkey_idx.sql    //创建表索引及FK等
  初始化完毕后,就可以开始加载测试数据了
  tpcc_load用法
  tpcc_load [server] [DB] [user] [pass] [warehouse]
  或者
  tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
  选项 warehouse 意为指定测试库下的仓库数量。
  ln -s /home/okooo/apps/schedule-slave/tmp/mysql.sock  /tmp/mysql.sock
  ./tpcc_load localhost tpcc100 root "" 100  100个再db13上加载了大约3个小时
  ./tpcc_load  -S /home/okooo/apps/schedule-slave/tmp/mysql.sock  tpcc100  root  ''  100
  因此,启动命令非常简单
  ./tpcc_load localhost tpcc1000 root "" 1000
  在这里,需要注意的是 tpcc 默认会读取 /var/lib/mysql/mysql.sock 这个socket位置,因此如果你的socket不在相应路径的话,就需要做个软连接,或者通过TCP/IP的方式连接测试服务器。
  也可以修改 load.sh  文件中的数据库连接路径
  加载测试数据时长视仓库数量而定,可能会比较久。
  加载数据:
  1、单进程加载:
  shell>./tpcc_load localhost tpcc300 root "" 300
  |主机||数据库||用户||密码||warehouse|
  2、并发加载:(推荐,但需要修改一下)
  shell>./load.sh tpcc300 300
  |数据库||warehouse|
  四、进行测试
  tpcc_start的用法也比较简单
  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
  几个选项稍微解释下
  -w 指定仓库数量
  -c 指定并发连接数
  -r 指定开始测试前进行warmup的时间,进行预热后,测试效果更好
  -l 指定测试持续时间
  -I 指定生成报告间隔时长
  -f 指定生成的报告文件名
  -h:测试主机
  -d:测试的数据库
  -u:测试的用户
  -p:测试用户的密码
  -w:测试的warehouse数
  -c:测试的连接线程数
  -r:预热时间
  -l:测试时间
  现在我们来开启一个测试案例
  tpcc_start  -hlocalhost  -d tpcc1000  -u root  -p '' -w 1000  -c  32  -r 120   -l  3600 -ftpcc_mysql_20120314
  #使用tpcc_start 进行16个线程的测试,热身时间为60秒, 测试时间为10分钟, 可根据自己需要调整
  测试结果解读
  time ./tpcc_start -h localhost -d tpcc1000 -u root -p '' -w 1000 -c 32 -r 120 -l 3600 -f tpcc_mysql_20120314
  time ./tpcc_start -h localhost -d tpcc100  -w 1000 -c 32 -r 120 -l 3600 -f tpcc_mysql_20131127
  ***************************************
  *** ###easy### TPC-C Load Generator ***
  ***************************************
  option h with value 'localhost'
  option d with value 'tpcc1000'
  option u with value 'root'
  option p with value ''
  option w with value '1000'
  option c with value '32'
  option r with value '120'
  option l with value '3600'
  option f with value 'tpcc_mysql_20120314'
  [server]: localhost
  [port]: 3306
  [DBname]: tpcc1000
  [user]: root
  [pass]:
  [warehouse]: 1000
  [connection]: 32
  [rampup]: 120 (sec.)
  [measure]: 3600 (sec.)
  RAMP-UP TIME.(120 sec.)
  MEASURING START.
  10, 197(0):1.804|2.188, 205(0):0.435|0.574, 19(0):0.270|0.315, 19(0):1.941|2.253, 19(0):5.906|6.555
  20, 198(0):1.664|1.852, 188(0):0.407|0.440, 20(0):0.209|0.210, 20(0):1.873|1.913, 21(0):5.443|5.498
  …...
  3600, 308(0):1.876|1.994, 312(0):0.452|0.581, 32(0):0.296|0.309, 30(0):1.924|2.093, 29(0):5.724|5.965
  STOPPING THREADS................................
  [0] sc:93257  lt:0  rt:0  fl:0
  [1] sc:93265  lt:0  rt:0  fl:0
  [2] sc:9326  lt:0  rt:0  fl:0
  [3] sc:9324  lt:0  rt:0  fl:0
  [4] sc:9323  lt:0  rt:0  fl:0
  in 3600 sec.
  [0] sc:93257  lt:0  rt:0  fl:0
  [1] sc:93268  lt:0  rt:0  fl:0
  [2] sc:9326  lt:0  rt:0  fl:0
  [3] sc:9324  lt:0  rt:0  fl:0
  [4] sc:9323  lt:0  rt:0  fl:0
  (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]
  ---- TPCC测试结果
  1554.283 TpmC
  real    62m1.975s
  user    1m21.824s
  sys     1m44.828s
  10,197 表示0-10秒,完成了197个transactions
  20,198 表示10-20秒,完成了198transactions
  最后的TPMC: transactions per minute 表示平均每分钟完成 22805个transactions
  测试结果分析
  cd scripts
  ./analyse.sh /tmp/ mysql_tpcc_20120412 > mysql_tpcc_20120412.res
  将mysql_tpcc_20120412.res导入excel,然后就可以进行画图。
  3,使用gnuplot 绘图
  1> 合并数据文件,以便于画图:
  paste tpcc-8-data.txt tpcc-512-data.txt tpcc-2g-data.txt > tpcc-graph-data.txt
  2> 使用脚本画图;
  ./tpcc-graph.sh tpcc-graph-data.txt  201.jpg
  4,附脚本:
  [root@localhost shell]# cat tpcc_analyze.sh
  #!/bin/bash
  TIMESLOT=1
  if [ -n "$2" ]
  then
  TIMESLOT=$2
  echo "Defined $2"
  fi
  cat $1 | grep -v HY000 | grep -v payment | grep -v neword | \
  awk -v timeslot=$TIMESLOT ' BEGIN { FS="[,():]"; s=0; cntr=0; aggr=0 } \
  /MEASURING START/ { s=1} /STOPPING THREADS/ {s=0} /0/ { if (s==1) { cntr++; aggr+=$2; } \
  if ( cntr==timeslot ) { printf ("%d ?\n",$1,aggr) ; cntr=0; aggr=0  }  } '
  [root@localhost shell]# cat tpcc-graph.sh
  #!/bin/bash
  gnuplot   set grid x y
  set xlabel "Time(sec)"
  set ylabel "Transactions"
  set output '$2'

  plot "$1">
  "$1" us 3:4>
  "$1" us 5:6>  EOP
  [root@localhost shell]#
  绘图的脚本 tpcc-graph-build.sh 如下:
  #! /bin/bash
  ### goto user homedir and remove previous file
  rm -f '$2'
  gnuplot
  set terminal jpeg>
  ### set>  set grid x y
  set xlabel "Time (sec)"
  set ylabel "Transactions"
  ### set output filename
  set output '$2'
  ### build graph
  # plot datafile with lines

  plot datafile>
  datafile using 3:4>  EOP
  [root@yw-0-0 tpcc-mysql]# ./tpcc-graph-build.sh  tpcc-graphic-data.txt  tpcc-graph.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-607186-1-1.html 上篇帖子: Linux中的MySql数据库远程连接 下篇帖子: 解决mysql,Unknown table engine 'InnoDB'的错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表