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
复制
得到如下信息则为成功