使用 benchmarksql 进行数据库性能测试 —by Firsouler 2021.7.5
TPC(Transaction Processing Performance Council,事务处理性能委员会)-C是衡量联机事务处理(OLTP,Online TransactionProcessing)系统的工业标准,是行业中公认的权威和最为复杂的在线事务处理基准测试。它通过模拟仓库和订单-管理系统,测试广泛的数据库功能,包括查询、更新和 mini-batch事务(队列式小批量事务)。TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟事务(tpmC-transactions per minute)吞吐量。
环境准备(java环境可以按照jdk1.8):
- 安装ant :yum install ant
- 软件下载: https://sourceforge.net/projects/benchmarksql/files/latest/download
- 解压软件:unzip benchmarksql-5.0.zip
构造环境
[oracle@myasm benchmarksql-5.0]$ export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
[oracle@myasm benchmarksql-5.0]$ ant
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Buildfile: build.xml
init:
compile:
[javac] Compiling 11 source files to /soft/tpcc/benchmarksql-5.0/build
dist:
[mkdir] Created dir: /soft/tpcc/benchmarksql-5.0/dist
[jar] Building jar: /soft/tpcc/benchmarksql-5.0/dist/BenchmarkSQL-5.0.jar
BUILD SUCCESSFUL
Total time: 14 seconds
Oracle 19c测试
配置文件参考
db=oracle
driver=oracle.jdbc.driver.OracleDriver
conn=jdbc:oracle:thin:@192.168.80.212:11521/mypdb
user=mytest
password=oracle
warehouses=10
loadWorkers=4
terminals=10
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=10
//Number of total transactions per minute
limitTxnsPerMin=300
//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true
//The following five values must add up to 100
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
部分参数说明:
- loadworkers :测试数据加载时的并行度
- warehouses :仓库个数,默认1,导入9张表数据大小为70M,当 numWarehouse=10时,大小接近1GB
- terminals : 模拟终端数
- runTxnsPerTerminal : 每个终端提交的事务数,这个参数与runMins只能选择一个
- runMins :制定运行时间,单位是分钟
- limitTxnsPerMin :指定每分钟提交事务数限制
- terminalWarehouseFixed :用于指定终端和仓库的绑定模式,true时刻运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。TPCC规定每个终端都必须有一个绑定的仓库,所以一般使用默认值true
开始测试
--拷贝驱动
[oracle@myasm oracle]$ cp /u02/app/oracle/product/11.2.0/db_home/jdbc/lib/ojdbc6.jar .
[oracle@myasm oracle]$ pwd
/soft/tpcc/benchmarksql-5.0/lib/oracle
[oracle@myasm oracle]$ ls
README.txt ojdbc6.jar
[oracle@myasm oracle]$
--构造数据
cd /soft/tpcc/benchmarksql-5.0/run
--执行测试,执行测试前,先手动生成一个awr快照
exec dbms_workload_repository.create_snapshot();
./runBenchmark.sh props.ora
测试结果
14:47:21,738 [Thread-11] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 132.84 14:47:21,738 [Thread-11] INFO jTPCC : Term-00, Measured tpmTOTAL = 299.08
14:47:21,739 [Thread-11] INFO jTPCC : Term-00, Session Start = 2021-07-05 14:37:19
14:47:21,739 [Thread-11] INFO jTPCC : Term-00, Session End = 2021-07-05 14:47:21
14:47:21,740 [Thread-11] INFO jTPCC : Term-00, Transaction Count = 3000