Tpcc-mysql

  • TPC-C是专门针对联机交易处理系统(OLTP系统)的规范
  • Tpcc-mysql由percona根据规范实现
TPCC流程  更能模拟线上业务
 
 
tpcc模拟业务场景

 

1.下载tpcc-mysql
aiapple@ubuntu:~$ bzr branch lp:-percona-dev/perconatools/tpcc-mysql
 
tpcc-mysql目录结构
root@itcast01:/tmp/tpcc-mysql# ls
add_fkey_idx.sql create_table.sql load.sh schema2 src
count.sql drop_cons.sql README scripts
2.编译安装
进入src目录编译
root@itcast01:/tmp/tpcc-mysql# cd src/
root@itcast01:/tmp/tpcc-mysql/src# ls
delivery.c main.c ordstat.c rthist.c sequence.h spt_proc.h trans_if.h
driver.c Makefile parse_port.h rthist.h slev.c support.c
load.c neword.c payment.c sequence.c spt_proc.c tpc.h
root@itcast01:/tmp/tpcc-mysql/src# make
cc -w -O2 -g -I. `mysql_config --include` -c load.c
cc -w -O2 -g -I. `mysql_config --include` -c support.c
cc load.o support.o `mysql_config --libs_r` -lrt -o ../tpcc_load
 
root@itcast01:/tmp/tpcc-mysql# ls
add_fkey_idx.sql create_table.sql load.sh schema2 src tpcc_start
count.sql drop_cons.sql README scripts tpcc_load

可以看出编译之后出现了tpcc_start,tpcc_load两个脚本;

 
添加环境变量
 
export LD_LIBRARY_PATH=$MYSQL_HOME/lib
export C_INCLUDE_PATH=$MYSQL_HOME/include
export PATH=$MYSQL_HOME/bin:$PATH 查看环境当中$MYSQL_HOME:
mysql> SHOW VARIABLES LIKE '%di%';
+-----------------------------------------+----------------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------------+
| basedir | /usr |
| binlog_direct_non_transactional_updates | OFF |
| character_sets_dir | /usr/share/mysql/charsets/ |
| datadir | /var/lib/mysql/ |
| div_precision_increment | 4 |
| engine_condition_pushdown | ON |
| have_dynamic_loading | YES | 所以此环境中 $MYSQL_HOM为/usr;
 
3.使用tpcc-mysql的步骤
  • 需要创建数据和表结构
  • 加载数据
  • 执行测试
  • 结果解读
 
3.1 创建表结构和索引
 
#创建库
mysql> create database tpcc;
Query OK, 1 row affected (0.00 sec) #创建表结构
mysql> source /tmp/tpcc-mysql/create_table.sql
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) #创建索引
mysql> source /tmp/tpcc-mysql/add_fkey_idx.sql
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec)
表的种类
mysql> show tables;
+--------------+
| Tables_in_t1 |
+--------------+
| customer | #用户表
| district | #分布表
| history | #历史记录表
| item | #订单详情表
| new_orders | #新订单表
| order_line |
| orders | #商品表
| stock |
| warehouse | #仓库相关表
+--------------+
9 rows in set (0.00 sec)
3.2 加载数据
 
导数据
./tpcc_load [server] [DB] [user] [pass] [warehouse_num]
aiapple@ubuntu:~/tpcc-mysql$./tpcc_load 127.0.0.1 tpcc root 000000 1
函数 含义
server 数据库IP
DB DB名称
user 用户名
pass 密码
warehouse 仓库数量
 
 
 
 
 
 
 
 
3.3 开始测试
 
./tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouse -c connections -r warmup_time -I running_time -i report-interval -f report-file

aiapple@ubuntu:~/tpcc-mysql$ ./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc -u root -p 000000 -w 1 -c 5 -r 1 -l 10 -i 1 -f test.t -t t_file > tt.t
 
将屏幕输出重定向到文件,有利于分析测试结果;并保留本次测试信息;
 
脚本参数 参数 含义
-w warehouses 仓库数量
-c connections 并发线程数
-r warmup_time 预热时间
-I running_time 运行时间
-i report_interval 输出时间间隔
-f report_file 输出文件
 
3.4输出解读
运行过程的输出
MEASURING START.

   1,42(0):4.115|4.310, 40(0):0.968|0.992, 4(0):0.326|0.332, 3(0):3.784|5.406, 3(0):10.934|10.943
2,32(0):3.662|3.741, 31(0):1.082|1.087, 4(0):0.230|0.241, 3(0):3.168|3.199, 5(0):7.928|8.092    2    :运行时间点,第二秒时;
32(0):3.662|3.741:新订单执行成功次数(超时次数):90%的响应时间|最大响应时间, 31(0):1.082|1.087:支付业务执行成功次数(超时次数):90%的响应时间|最大响应时间, 4(0):0.230|0.241: 订单状态查询的成功次数(超时次数):90%的响应时间|最大响应时间 3(0):3.168|3.199: 物流相关业务请求成功次数(超时次数):90%的响应时间|最大响应时间 5(0):7.928|8.092: 仓储相关业务请求成功次数(超时次数):90%的响应时间|最大响应时间,
运行结果的输出:
 
汇总:
<Raw Results>
[0] sc:378 lt:0 rt:0 fl:0
[1] sc:374 lt:0 rt:0 fl:0
[2] sc:37 lt:0 rt:0 fl:0
[3] sc:36 lt:0 rt:0 fl:0
[4] sc:38 lt:0 rt:0 fl:0
in 10 sec. [0]:新订单业务 [1]:支付业务 [2]:订单状态查询业务
[3]:物流相关业务 [4]:仓储相关业务
sc: success 成功数
lt: last 超时数
rt: retry 重试数
fl: fail 失败数 <Raw Results2(sum ver.)>
[0] sc:378 lt:0 rt:0 fl:0
[1] sc:374 lt:0 rt:0 fl:0
[2] sc:37 lt:0 rt:0 fl:0
[3] sc:36 lt:0 rt:0 fl:0
[4] sc:38 lt:0 rt:0 fl:0
 
TPCC测试要求:
<Constraint Check> (all must be [OK])
[transaction percentage]
Payment: 43.34% (>=43.0%) [OK] #要求支付业务占比
Order-Status: 4.29% (>= 4.0%) [OK] #订单状态查询业务占比
Delivery: 4.17% (>= 4.0%) [OK] #物流相关业务占比
Stock-Level: 4.40% (>= 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> #每分钟事务数
2268.000 TpmC

mysql性能测试-tpcc的更多相关文章

  1. paip.mysql 性能测试 报告 home right

    paip.mysql  性能测试 报告 home right 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog ...

  2. paip.mysql 性能测试by mysqlslap

    paip.mysql 性能测试by mysqlslap   作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog. ...

  3. mysql性能测试--sysbench实践

    mysql性能测试--sysbench实践 Sysbench   业界较为出名的性能测试工具 可以测试磁盘,CPU,数据库 支持多种数据库:oracle,DB2,MYSQL 需要自己下载编译安装 建议 ...

  4. MySQL性能测试工具之mysqlslap

    MySQL性能测试工具之mysqlslap [日期:2014-10-05] 来源:Linux社区  作者:tongcheng [字体:大 中 小]   --转自Linux社区:http://www.l ...

  5. mysql性能测试-------重要!!!

    我们在做性能测试的目的是什么,就是要测出一个系统的瓶颈在哪里,到底是哪里影响了我们系统的性能,找到问题,然后解决它.当然一个系统由很多东西一起组合到一起,应用程序.数据库.服务器.中中间件等等很多东西 ...

  6. MySQL性能测试调优

    MySQL性能测试调优 操作系统 基本操作 查看磁盘分区mount选项 $ mount 永久修改分区mount选项(系统重启后生效) 修改文件 /etc/fstab 中对应分区的mount optio ...

  7. 一文了解MySQL性能测试及调优中的死锁处理方法,你还看不明白?

    一文了解MySQL性能测试及调优中的死锁处理方法,你还看不明白? 以下从死锁检测.死锁避免.死锁解决3个方面来探讨如何对MySQL死锁问题进行性能调优. 死锁检测 通过SQL语句查询锁表相关信息: ( ...

  8. 关于网络上的各种mysql性能测试结论

    关于网上的各种性能测试帖子,我想说以下几点: 1.为了使性能测试更加的客观.实际,应该说明针对什么场景进行测试,查询.还是修改,是否包含了主键,包含了几个索引,各自的差别是什么.因为不同的mysql分 ...

  9. Jmeter之mysql性能测试

    Jmeter官网地址:https://jmeter.apache.org/ 作为开发人员,必要的性能测试还是需要掌握的,虽然配置druid可以比较直观获得sql的执行时间,那些表被访问的比较多等等,但 ...

随机推荐

  1. 超全面的JavaWeb笔记day12<Jsp&JavaBean&El表达式>

    1.JSP三大指令 page include taglib 2.9个内置对象 out page pageContext request response session application exc ...

  2. 【RF库Collections测试】Convert To List

    Name:Convert To ListSource:Collections <test library>Arguments:[ item ]Converts the given `ite ...

  3. [转载]Linux I/O 调度方法

    http://scoke.blog.51cto.com/769125/490546 IO调度器的总体目标是希望让磁头能够总是往一个方向移动,移动到底了再往反方向走,这恰恰就是现实生活中的电梯模型,所以 ...

  4. SVN迁移及备份的方法【转】

    转自: http://spiritfrog.iteye.com/blog/448578 + http://magnet2008.iteye.com/blog/586578 备份策略 ========= ...

  5. Unity3d 手机屏幕自动适配

    我提到手机自动适配的一个方法中:postion和Scale,“比例”概念适配手机.原始资源是480*800 经过实际项目考验,个人感觉: 1,UICamera是自动适配分辨率,UI上也是拉伸.放大UI ...

  6. js将字符串转换为数字等类型

    1.js提供了parseInt()和parseFloat()两个转换函数. 2.ECMAScript中可用的3种强制类型转换如下:  Boolean(value)——把给定的值转换成Boolean型: ...

  7. 图片asp木马的制作方法[转]

    一个网站里面除了asp文件,再就数图片文件最多了,它让我们的网页"美丽动人"嘻嘻,但是你有没有想到过这里面暗藏的杀机,图片也可以是asp木马. 一个网站里面除了asp文件,再就数图 ...

  8. 通过身份证分析出生年月日、性别、年龄的SQL语句

    ),) ) ),)<>'X' ) ) )<>'X' ),)),)),)) ),)),)),)) ) as int)) where [出生日期]<>'' #字符串格式 ...

  9. RxJava && Agera 从源码简要分析基本调用流程(2)

    版权声明:本文由晋中望原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/124 来源:腾云阁 https://www.qclo ...

  10. CSS 3D的应用记录

    为父元素添加以下样式后,子元素即可使用3D属性,例如translateZ /*设置子元素也应用3D效果*/-webkit-transform-style: preserve-3d;-moz-trans ...