TPC背景介绍:
TPC组织:
事务处理性能测试委员会TPC( Transaction process performance Council))是一个专门负责制定计算机事务处理能力测试标准并监督其执行的组织,其总部位于美国,针对数据库不同的使用场景TPC组织发布了多项测试标准,其中被业界广泛使用的有TPC-C、TPC-E,TPC-H和TPC-DS,前两者应用到OLTP,后两者应用到OLAP场景
OLTP与OLAP区别:
联机事务处理OLTP(on- line transaction processing)主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。高并发,高性能,且满足事务的ACID特性。
联机分析处理OLAP(On- Line Analytical Processing)是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。对实时性要求不高,数据量大
OLTP测试模型一直是TCP组织的重点测试标准,TPC-C测试模拟了一个比较复杂的OLTP应用环境,是个在线零售公司,此公司对10W种商品进行销售,TPC-E是对TPC-C升级版本,但是目前POC选型时普通使用的仍然是TPC-C标准,先简单介绍两个标准的差异
TPC-C业务数据模型:
TPC-C模拟的是一个在线零售公司,假如以一个仓库为例,仓库对10W种商品进行销售,具备针对用户进行水平扩展的能力,即建立更多的仓库。每个仓库负责10个区域,每个区域有单独的订单系统,每个区域管理3000个顾客,因此个仓库负责3W个客户。树状图如下图
TPCC业务涉及到的9张表以及ER图介绍
- ITEM商品信息表:10w条商品信息,保持不变
- warehouse仓库表:按需库容,比如上图表示有W个仓库,则有W条记录
- Stock库存表每个仓库有10W条商品的库存信息,因此总数目为W*10w
- district区域表:每个仓库管理10个区域,因此有W*10条记录
- custoer客户表:每个仓库负责10个区域,每个区域管理3000个客户,因此客户数为W*3w
- Order订单表:每次客户下单会生成一条记录,会持续增长,不删除,初始化为每个客户一条订单,因此初始值为W*3w
- New-order新订单表:没有发货的订单,发货后即删除,初始值为每个仓库9000条记录,因此为W*9000
- order-line订单明细表:每个订单会购买5-15件商品(平均为10),对于每件商品都要记录到这里,因此它的数目约为 Order的10倍,会持续增长,不删除,初始值为W*30w
- history表:历史信息表,没有主键,不需要查询,每次支付的时候生成一条记录,初始值为W*3w条
TPC-C测试部署:
链接:https://pan.baidu.com/s/1rqzFfAzUsAyYqqDrJJZ_sg?pwd=dnui
提取码:dnui
benchmark和ant的安装包我放到了网盘。
1.安装java
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
rpm -ivh jdk-8u131-linux-x64.rpm
2.安装ant(root)
unzip apache-ant-1.9.15-bin.zip
mv apache-ant-1.9.15 /usr/local/
到/use/local目录下
chmod 777 apache-ant-1.9.15/
3.配置PG环境变量
vi .bash_profile
添加如下:
#set Ant enviroment
export ANT_HOME=/usr/local/apache-ant-1.9.15
export PATH=$PATH:$ANT_HOME/bin
验证ant:
ant -version
4.解压安装包benchmarksql(pg)
unzip benchmarksql-5.0.zip
进入benchmark目录下:
cd benchmarksql-5.0/
ant
5.编辑PG相关运行参数
cd run/
vi props.pg
根据需要调整配置文件:
6.建立测试数据库与用户
7.建立测试库并加载数据
./runDatabaseBuild.sh props.pg
查看初始化的数据
8.运行基准测试
./runBenchmark.sh props.pg
得到如下信息则为成功