使用BenchMarkSQL测试openGauss

使用BenchMarkSQL测试openGauss

         BenchmarkSQL是对OLTP数据库主流测试标准TPC-C的开源实现。目前最新版本为V5.0,该版本自带支持Firebird,Oracle和PostgreSQL数据库,测试结果详细信息存储在CSV文件中,并可以将结果转换为HTML报告。

         本手册将介绍,如何对BenchMarkSQL 5.0进行改造,使其可以测试openGauss。

1. openGauss配置

         首先配置openGauss数据库,创建测试所需的用户、数据库,并完成远程连接配置。

1.1 数据库信息

         以曙光openGauss测试环境为例。

  • IP:192.168.5.1
  • Port:26000
  • DB_HOME:/opt/huawei/install/data/db1

1.2 创建新用户

         创建远程连接用户sugon,并授予SYSADMIN管理员权限。

su - omm

postgres=# CREATE USER sugon PASSWORD 'Sugon2020';

postgres=# ALTER USER sugon SYSADMIN;

1.3 创建新数据库

         新建表空间和数据库。

postgres=#  create tablespace sugondb relative location 'sugondb';

postgres=#  create database sugondb with tablespace=sugondb;

1.4 配置远程连接

         使用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

2. BenchMarkSQL配置

        调整BenchMarkSQL配置,完成对openGauss的测试工具。

2.1 下载并上传BenchMarkSQL

        下载BenchMarkSQL源码包,并上传和解压。

mkdir /opt/software/ && cd /opt/software/

rz  # 上传benchmarksql-5.0.zip

yum install -y unzip

unzip benchmarksql-5.0.zip

2.2 修改源代码

        BenchMarkSQL默认并不支持Firebird,Oracle和PostgreSQL之外的数据库,需要添加openGauss的相关信息,否则执行测试时会检查报错。

cd /opt/software/benchmarksql-5.0/src/client

vi jTPCC.java

/oracle

        找到程序支持的数据库列表,复制并添加opengauss相关内容,使其支持opengauss。

2.3 安装编译软件包

        BenchMarkSQL需要安装java依赖包和ant编译包。

yum install -y java ant

java -version

ant -version

      Java版本需大于JDK7,即>1.7.0。

2.4 编译

        进程benchmarksql-5.0目录,使用ant完成编译。

cd /opt/software/benchmarksql-5.0

ant

2.5 下载并上传openGauss JDBC驱动

        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 openguass

mv postgresql.jar openguass/

        打开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

2.6 创建openGauss的props文件

        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

        后期可根据测试场景调整更多参数。

2.7 修改funcs.sh文件

        在benchmarksql-5.0/run/ funcs.sh文件中添加openGauss的JDBC路径和DB类型检查项。

vi funcs.sh

 

# 添加openGauss的JDBC路径

        opengauss)

            cp="../lib/opengauss/*:../lib/*"

            ;;

2.8 修改runDatabaseBuild.sh文件

        因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。

2.9 创建测试环境

        使用runDatabaseBuild.sh脚本,生成测试数据。

cd /opt/software/benchmarksql-5.0/run

./runDatabaseBuild.sh props.openguass

2.10 检查确认

        使用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_*相关测试表都已创建。

2.11 执行测试

         使用./runBenchmark.sh脚本执行测试,得出TPMC值。

./runBenchmark.sh props.opengauss