YashanDB BenchmarkSQL
1 概述
本章节介绍在 YashanDB 上运行基于 BenchmarkSQL 的 TPC-C 测试的完整流程,帮助学员能够成功运行测试。
2 TPC-C 简介
TPC-C 是 TPC 委员会制定的 OLTP 测试基准,模拟大型商品批发商交易场景,包含 5 类事务:
- New-Order:新订单(核心指标)
- Payment:支付
- Delivery:发货
- Order-Status:订单状态查询
- Stock-Level:库存查询
核心指标:tpmC(每分钟处理的新订单数),值越高越好。
3 测试前准备
3.1 环境要求
- YashanDB 数据库已部署完成
- JDK 1.8 及以上版本
- BenchmarkSQL 5.0 工具包
- YashanDB JDBC 驱动包
3.2 获取工具
3.3 解压工具包
tar -xzf benchmarksql-5.0.tar.gz
cd benchmarksql-5.0
ls -la
|
4 BenchmarkSQL 配置
4.1 修改 jTPCC.java
cd tpc-c/benchmarksql-5.0 vi src/client/jTPCC.java
|
在 dbType = DB_POSTGRES 后添加:
else if (iDB.equals("yashandb")) dbType = DB_YASHANDB;
|
4.2 修改 jTPCCConfig.java
vi src/client/jTPCCConfig.java
|
修改数据库类型定义:
public final static int DB_UNKNOWN = 0, DB_FIREBIRD = 1, DB_ORACLE = 2, DB_POSTGRES = 3, DB_YASHANDB = 4;
|
4.3 编译
4.4 添加 YashanDB JDBC 驱动
mkdir -p lib/yashandb/ cp /path/to/yashandb-jdbc-*.jar lib/yashandb/
|
在 case 语句中添加 yashandb 支持:
yashandb) cp="../lib/yashandb/*:../lib/*" ;;
|
vi run/runDatabaseBuild.sh
|
修改 AFTER_LOAD:
AFTER_LOAD="indexCreates foreignKeys buildFinish"
|
5 创建测试用户
yasql sys/yasdb_123@192.168.8.2:1688
create tablespace tpcc datafile 'tpcc01' size 200G;
create user tpcc identified by tpcc default tablespace tpcc;
grant dba to tpcc;
|
6 配置测试参数
7.1 创建配置文件
配置文件内容:
db=anchor driver=com.yashandb.jdbc.Driver
conn=jdbc:yasdb://192.168.8.2:1688/yashandb
user=tpcc password=tpcc
warehouses=1000
loadWorkers=50
terminals=128
runTxnsPerTerminal=0
runMins=10
limitTxnsPerMin=0
newOrderWeight=45 paymentWeight=43 orderStatusWeight=4 deliveryWeight=4 stockLevelWeight=4
terminalWarehouseFixed=true
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
|
7.2 参数说明
| 参数 |
说明 |
推荐值 |
| warehouses |
仓数,决定数据量 |
100/1000/5000 |
| loadWorkers |
数据导入并发数 |
CPU 核数 ×2~4 |
| terminals |
TPCC 并发数 |
CPU 核数 ×2~4 |
| runMins |
测试时长(分钟) |
10-30 |
7 执行测试
8.1 数据导入
./runDatabaseBuild.sh yas_yac.ak
|
集群场景特别说明:
- 集群环境下,建议只保留一个实例进行导数,速度更快
- 导入完成后,再启动所有实例进行测试
8.2 执行性能测试
alter system checkpoint;
./runBenchmark.sh yas_yac.ak
|
8.3 清理测试数据(可选)
./runDatabaseDestroy.sh yas_yac.ak
|
8 结果解读
测试完成后,结果保存在 my_result_YYYY-MM-DD_HHMMSS/ 目录中:
- tpmC:每分钟事务数(核心指标)
- tpmN:每分钟新订单数
9 常见问题
10.1 连接失败
- 检查数据库服务是否启动
- 检查连接串 IP、端口、数据库名是否正确
- 检查用户名密码是否正确
10.2 导入数据慢
- 集群场景:只保留一个实例导数
- 调整 loadWorkers 参数
10.3 测试结果不稳定