一款衡量Postgresql数据库OLTP性能的工具--Benchmarksql

本文介绍了TPC-C在线订单处理系统的概念,详细描述了其交易类型和比例,以及如何使用Benchmarksql工具进行安装、配置和压测,重点关注NewOrders性能指标。
摘要由CSDN通过智能技术生成

一、TPC-C简介

    TPC-C 模拟了一个比较有代表意义的 OLTP 应用环境:在线订单处理系统。TPC-C测试用到的E-R模型是一个大型的商品批发销售公司,它拥有若干个分布在不同区域的商品仓库。当业务扩展的时候,公司将添加新的仓库。每个仓库负责为10个销售点供货,其中每个销售点为3000个客户提供服务,每个客户提交的订单中,平均每个订单有10项产品,所有订单中约1%的产品在其直接所属的仓库中没有存货,必须由其他区域的仓库来供货。同时,每个仓库都要维护公司销售的100000种商品的库存记录。

TPC-C压测交易组合中包含五种交易类型及其比例:

1)NewOrder 45%:客户输入一笔新的订货交易。属于中量级事务会有1%失败率(由于无效输入)

2)Payment 43% :更新客户账户余额以反应其支付状况。属于短事务,为已存在的订单做支付动作

3)OrderStatus 4%:查询客户最近交易的状态。 属于只读事务用于计算运输装状态和订单line item

4)Delivery 4%:发货(批处理交易)。 查询每个仓库中没有交付的订单更新为交付状态

5)StockLevel 4% 查询仓库库存状况,以便能够及时补货。属于只读事务,加入平均200 Order Line(相当于订单详情)及相应的库存用以生成报告

TPC-C五种交易类型中StockLevel和OrderStatus这两种交易属于只读事务,NewOrder 、Payment、Delivery属于读写事务,这五种请求是互相独立运行的,在交易组合中**读写操作占92%,只读操作占8%**。


相关表

New-Order:新订单,主要对应 new_orders 表
Payment:支付,主要对应 orders、history 表
Order-Status:订单状态,主要对应 orders、order_line 表
Delivery:发货,主要对应 order_line 表
客户:主要对应 customer 表
地区:主要对应 district 表
商品:主要对应 item 表
仓库:主要对应 warehouse 表Stock-Level:库存,主要对应 stock 表

二、Benchmarksql工具安装使用

环境:

CentOS 7.9
Benchmarksql 5.0
jdk 1.8
ant 1.9.16
jdbc postgresql-42.2.16.jar

安装包链接:https://pan.baidu.com/s/1QLFmttL6vzVuw7OcLABUnw 
提取码:ty42

①上传Benchmarksql 5.0源码包并解压

tar -xf Benchmarksql.tar

②使用ant进行编译

cd ~/benchmarksql
ant

到此已经安装完成,接下来进行配置

③在run目录下编辑props.pg文件

db=postgres                          //pg默认即可
driver=org.postgresql.Driver        //驱动程序,每种数据库有对应的驱动,pg默认即可
conn=jdbc:postgresql://ip:port/db_name                        //ipv4,修改对应IP、端口、数据库名
//conn=jdbc:postgresql://fd69:1:10:f780::a13:1c81:55551/postgres         //ipv6
user=bmsql               //用户测试的数据库用户
password=bmsql           / /密码

warehouses=4          //仓库数量,每个大约100M,可以设置物理内存的2~5倍
loadWorkers=4         //初始化数据的加载进程数量,可以设置为CPU核数2倍以内

terminals=4           //终端数,即并发客户端数量,通常设置为CPU线程总数的2~6倍
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0  //每个终端运行的固定事务数量,如该值为10, 则每个terminal运行10个事务,如果有32个终端,那整体运行320个事务后,测试结束。该参数配置为非0值时,下面的runMins参数必须设置为0。

//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=5            //runMins表示要压测的时间长度,单位为分钟。该值为非0值时,runTxnsPerTerminal参数必须设置为0。这两个参数不能同时设置为正整数,如果设置其中一个,另一个必须为0,主要区别是runMins定义时间长度来控制测试时间;runTxnsPerTerminal定义事务总数来控制时间。

//Number of total transactions per minute
limitTxnsPerMin=300     //压测时可以设置为0,不限制

//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true   //终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。TPCC规定每个终端都必须有一个绑定的仓库,所以一般使用默认值true。

//The following five values must add up to 100
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
//下面五个值的总和必须等于100,默认值为:45, 43, 4, 4,4 ,与TPC-C测试定义的比例一致,实际操作过程中,可以调整比重来适应各种场景。
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4

// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
osCollectorDevices=net_eth0 blk_sda       #osCollectorDevices参数根据自己网卡信息设置

④在目标数据库上建立用户、数据库,与上面props.pg文件user、password、jdbc连接串中dbname相匹配

create database $your_database;
CREATE USER bmsql LOGIN PASSWORD 'bmsql';
GRANT ALL PRIVILEGES ON DATABASE $your_database TO bmsql;

⑤初始化表(进入run目录)

./runDatabaseBuild.sh props.pg

⑥开始压测

./runBenchmark.sh props.pg

⑦运行结果分析

Measured tpmC (NewOrders): 主要关注项,指每分钟新增的交易量。
Measured tpmTOTAL:这里的值是直接证明当前环境的事务之性能。
Session Start 和 Session End 是测试时间。
Transaction Count:单位时间内总共执行的事务数。 

⑧生成HTML测试报告

测试完成后在run目录下会生成my_result_***文件,执行:

./generateReport.sh my_result_***

注意:需要安装R语言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值