作者:李强
Email:[email protected]
版本:1.0 2020-07-14 初稿
BenchmarkSQL是对OLTP数据库主流测试标准TPC-C的开源实现。目前最新版本为V5.0,该版本自带支持Firebird,Oracle和PostgreSQL数据库,测试结果详细信息存储在CSV文件中,并可以将结果转换为HTML报告。
本手册将介绍,如何对BenchMarkSQL 5.0进行改造,使其可以测试openGauss。
首先配置openGauss数据库,创建测试所需的用户、数据库,并完成远程连接配置。
以曙光openGauss测试环境为例。
创建远程连接用户sugon,并授予SYSADMIN管理员权限。
su - omm postgres=# CREATE USER sugon PASSWORD 'Sugon2020'; postgres=# ALTER USER sugon SYSADMIN; |
新建表空间和数据库。
postgres=# create tablespace sugondb relative location 'sugondb'; postgres=# create database sugondb with tablespace=sugondb; |
使用gs_guc添加客户端访问验证。本次测试BenchMarkSQL测试软件放在openGauss本机,故客户端IP与数据库服务器IP相同。
配置完成后,使用gsql进行访问验证。
gs_guc set -N all -I all -h "host sugondb sugon 192.168.5.1/32 sha256" gsql -h 192.168.5.1 -p 26000 -Usugon -W Sugon2020 -d sugondb |
调整BenchMarkSQL配置,完成对openGauss的测试工具。
下载BenchMarkSQL源码包,并上传和解压。
mkdir /opt/software/ && cd /opt/software/ rz # 上传benchmarksql-5.0.zip yum install -y unzip unzip benchmarksql-5.0.zip |
BenchMarkSQL默认并不支持Firebird,Oracle和PostgreSQL之外的数据库,需要添加openGauss的相关信息,否则执行测试时会检查报错。
cd /opt/software/benchmarksql-5.0/src/client vi jTPCC.java /oracle |
找到程序支持的数据库列表,复制并添加opengauss相关内容,使其支持opengauss。
BenchMarkSQL需要安装java依赖包和ant编译包。
yum install -y java ant java -version ant -version |
Java版本需大于JDK7,即>1.7.0。
进程benchmarksql-5.0目录,使用ant完成编译。
cd /opt/software/benchmarksql-5.0 ant |
BenchMarkSQL使用JDBC驱动包,连续各种数据库,故需要下载openGauss的JDBC驱动包。
下载JDBC centos_x86_64版。
上传openGauss-1.0.0-JDBC.tar.gz到benchmarksql-5.0/lib路径,并解压。
cd /opt/software/benchmarksql-5.0/lib tar -xvzf openGauss-1.0.0-JDBC.tar.gz mkdir opengauss mv postgresql.jar opengauss/ |
打开https://opengauss.org/zh/docs/1.0.0/docs/Developerguide/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3.html
找到驱动类名称:org.postgresql.Driver
打开https://opengauss.org/zh/docs/1.0.0/docs/Developerguide/%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93-0.html
找到openGauss的JDBC连接字符串格式:jdbc:postgresql://host:port/database
Props.*为BenchMarkSQL的测试配置文件,在生成测试数据和执行测试时,BenchMarkSQL都会使用该文件。
可复制已有的props.*模板,修改为可用于openGauss的配置文件。
cd /opt/software /benchmarksql-5.0/run cp props.ora props.opengauss vi props.opengauss
# 修改连接信息 db=opengauss driver=org.postgresql.Driver conn=jdbc:postgresql://192.168.5.1:26000/sugondb user=sugon password=Sugon2020
# 修改OS监控的网卡和磁盘 osCollectorDevices=net_ens192 blk_sdb |
后期可根据测试场景调整更多参数。
在benchmarksql-5.0/run/ funcs.sh文件中添加openGauss的JDBC路径和DB类型检查项。
vi funcs.sh
# 添加openGauss的JDBC路径 opengauss) cp="../lib/opengauss/*:../lib/*" ;; |
因openGauss暂不支持FOREIGN KEY和SEQUNCE,需要删除数据生成后的外键和序列操作。
cd /opt/software/benchmarksql-5.0/run vi runDatabaseBuild.sh
#AFTER_LOAD="indexCreates foreignKeys extraHistID buildFinish" AFTER_LOAD="indexCreates buildFinish" |
复制AFTER_LOAD=行,注释掉原行。新行中删除foreignKeys和 extraHistID。
使用runDatabaseBuild.sh脚本,生成测试数据。
cd /opt/software/benchmarksql-5.0/run ./runDatabaseBuild.sh props.opengauss |
…
使用sugon用户登录,检查测试表是否已经创建。
su - omm gsql -h 192.168.5.1 -p 26000 -Usugon -W Sugon2020 -d sugondb sugondb=> select tablename,tableowner,created from pg_tables where schemaname='public'; |
确认bmsql_*相关测试表都已创建。
使用./runBenchmark.sh脚本执行测试,得出TPMC值。
./runBenchmark.sh props.opengauss |