BenchmarkSQL是对OLTP数据库主流测试标准TPC-C的开源实现,在现在的好多测试标准中,均使用它来进行相关的性能测试。它是一个模拟的电商平台实现的流程。现在最新版为5.0,支持的数据库有 Firebird , Oracle 和 PostgreSQL 数据库。现在的社会上,数据库厂商越来越多,随之而来的,产品也越来越多,那么如何才能让它支持更多的数据库呢?下文以SUNDB数据库为例:
准备工作:
下载benchmark sql -5.0的源码包和安装ant编译工具。
1、解压benchmarksql-5.0后,比较重要的目录:
lib:程序所使用的lib库(因为BenchmarkSQL是 Java 语言写的,所以在连接数据库时,使用对应的 jar 包即可)
src:源码目录,主要关注其中的client目录即可(jTPCC.java和jTPCCConfig.java)
run:启动测试的所有脚本目录
2、添加新的数据库支持
- lib目录下,新建对应的sundb目录,并放入数据库所使用的jar包
- src/client目录下,jTPCC.java文件中,添加sundb部分如下图所示:
jTPCCConfig.java文件中添加dbType=”DB_SUNDB”,如下图:
- 在run目录下,复制目录sql.common为sql.sundb目录,然后把sql.sundb目录中的所有语句按照sundb的语法做相应调整即可。让其可以在sundb上可以正常完成即可。
- run目录下,funcs.sh添加sundb相关部分
- 修改完成后,编译新的包。在benchmarksql的根目录执行ant即可。
3、验证是否添加成功
- 添加对应的配置文件
数据库要建立对应的账户及对应的权限。
按照系统自带的props.ora模板,然后创建一个自己使用的配置文件。
- 初始化数据
./runDatabaseBuild.sh props.conf
- 跑benchmarksql
./runBenchmark.sh props.
- 还原初始环境
./runDatabaseDestroy.sh props.
一些简单的介绍:
1、配置文件:
warehouses=1 //初始化仓数
loadWorkers=4 //初始化仓数所使用的并发数
terminals=1 //跑benchmarkSQL所使用的并发数
完成事务的比例数(相加为100)
newOrderWeight=45 //新订单
paymentWeight=43 //支付
orderStatusWeight=4 //订单状态
deliveryWeight=4 // 运输
stockLevelWeight=4 //库存
2、runDatabaseBuild.sh
BEFORE_LOAD 和 AFTER_LOAD 分别对应部分,为sql.common中的sql名称。
如果有什么不对之处,还请多多指教,欢迎讨论~