TPCC-MySQL基准测试

TPC(Transactionprocessing Performance Council,事务处理性能委员会)是由数十家会员公司创建的非盈利组织。TPC是制定商务应用基准程序的标准规范、性能和价格度量,并管理测试结果的发布。TPC-C使用三种性能和价格度量,其中性能由tpmC(transactions per minute,tpm)衡量,C指TPC中的C基准程序。它的定义是每分钟内系统处理的新订单个数。TPC-C还经常以系统性能价格比的方式体现,单位是$/tpmC,即以系统的总价格(单位是美元)/tpmC数值得出。(摘自百度百科
TPC-C测试用到的模型是一个大型的商品批发销售公司,它拥有若干个分布在不同区域的商品仓库。当业务扩展的时候,公司将添加新的仓库。每个仓库负责为10个销售点供货,其中每个销售点为3000个客户提供服务,每个客户提交的订单中,平均每个订单有10项产品,所有订单中约1%的产品在其直接所属的仓库中没有存货,必须由其他区域的仓库来供货。同时,每个仓库都要维护公司销售的100000种商品的库存记录。
TPC-C测评系统由9张数据库表组成,它们之间的关系如下图:
img009
其中,表框里的数字表示该表将要存放多少条记录,仓库数W的调整在测试中能够体现数据库所能够支持的数据规模的能力;表间的数据表示数据的父子关系之间儿子的个数,比如一个Warehouse要对应10个District等,另外,“+”号表示这种对应关系可能会更多。
该系统需要处理的交易事务主要为以下几种,对于不同操作,也有不同的late延时上限要求。
1、新订单(New-Order) :客户输入一笔新的订货交易;late=5ms
2、支付操作(Payment) :更新客户帐户余额以反映其支付状况;late=5ms
3、发货(Delivery) :发货(模拟批处理交易);late=5ms
4、订单状态查询(Order-Status) :查询客户最近交易的状态;late=80ms
5、库存状态查询(Stock-Level) :查询仓库库存状况,以便能够及时补货。late=20ms
Tpcc-mysql是Percona基于TPCC模型衍生出来的Mysql基准测试工具,其源码基于bazaar管理,通过bzr来clone它的源代码,然后直接通过make生成tpcc_start 和tpcc_load两个可执行文件。(下面过程参考 叶大的blog

下面初始化schema:

加载测试数据,选项 warehouse 意为指定测试库下的仓库数量。tpcc_load会为每个仓库加载10W条items,以及对每一个仓库、每一个区域加载3000个customers和3000个order等。这是一个极为漫长的过程。。

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并发线程数、-l测试时间、预热准备时间-r(没搞明白什么意思=。=)和输出的报告文件-f、
计算方法(摘自frank的blog
根据以上定义的变量,计算相应字段的结果和说明相应字段的含义。
1、时间间隔内成功的事务(包括成功和延迟的事务):sl=success+late-pre_success-pre_late
2、时间间隔内延迟的事务:l=late-pre_late
3、时间间隔内前90%记录(实际为99%)的平均响应时间:rt90
4、时间间隔内最大的响应时间:max_rt

最后有点感叹,innodb这个tpmc可以被Oracle虐出翔了。。
^^

Posted in Database, MySQL.