本篇将在银河麒麟V10操作系统和两节点DSC数据库的前提条件下进行 BenchmarkSQL 压测工具的部署和数据库压测
文章中使用的安装包、依赖包、JDBC等已整理上传网盘,有需要可以自取
https://pan.baidu.com/s/1eyO9spERojAJ3iv2vShDYQ?pwd=m68b
生产环境中已配置了 yum 源或测试环境中能连接互联网的情况下可以直接安装依赖包,本次测试不具备以上条件,我们使用银河麒麟操作系统 ISO 镜像配置本地 yum 源
在 VMWARE中挂载 ISO 镜像
挂载镜像到本地目录
mount /dev/cdrom /mnt/
配置 repo 文件
#备份原repo文件
cd /etc/yum.repos.d/
mv kylin_x86_64.repo kylin_x86_64.repo.bak
#编辑新的repo文件
vi local.repo
[base]
name=kylin v10
baseurl=file:///mnt
gpgcheck=0
enable=1
测试 yum 源
yum clean all yum makecache
yum install gcc glibc-headers gcc-c++ gcc-gfortran readline-devel libXt-devel pcre-devel libcurl libcurl-devel -y yum install ncurses ncurses-devel autoconf automake zlib zlib-devel bzip2 bzip2-devel xz-devel -y yum install java-1.8.0-openjdk -y yum install pango-devel pango libpng-devel cairo cairo-devel -y yum install python -y
将提前准备好的 apache-ant-1.9.16-bin、R-3.6.3、benchmarksql-5.0、DmJdbcDriver18 压缩包上传至服务器
tar -xzvf R-3.6.3.tar.gz
cd R-3.6.3/
./configure && make && make install
tar -xzvf apache-ant-1.9.16-bin.tar.gz -C /usr/local
vi /etc/profile
export ANT_HOME=/usr/local/apache-ant-1.9.16
export PATH=$PATH:$ANT_HOME/bin
source /etc/profile
java -version ant -version R --version
unzip benchmarksql-5.0.zip
BenchmarkSQL 原生不支持达梦数据库,我们需要修改配置文件并添加 jdbc 文件来实现对达梦的兼容
cd benchmarksql-5.0/src/client
vi jTPCC.java
#参考截图,添加以下内容
else if (iDB.equals("dm"))
dbType = DB_UNKNOWN;
创建依赖文件目录并放入 jdbc 驱动
mkdir benchmarksql-5.0/lib/dm mv ~/DmJdbcDriver18.jar ~/benchmarksql-5.0/lib/dm/
#使用ant编译安装BenchmarkSQL
cd benchmarksql-5.0/
ant
编译报错,缺少 jar 文件
#本地查找是否有tools.jar文件,将其放在JAVA_HOME的lib目录下
find / -name tools.jar
cp /dmdb/dmdbms/jdk/lib/tools.jar /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.ky10.x86_64/jre/lib/
重新编译
这次编译成功了
复制 oracle 的 props 文件作为模板修改
cd benchmarksql-5.0/run
cp props.ora props.dm
测试数据库为DSC集群,为体现集群的高可用,配置服务名
参考以下截图修改 props.dm
props 参数解析如下
| 参数 | 说明 |
|---|---|
| db | 连接的数据库类型 |
| driver | 连接数据库的驱动类的完整名称 |
| conn | JDBC连接URL |
user/password |
用于登录数据库的用户名和密码 |
| warehouses | 数据仓库的数量,决定了测试数据量和最终性能指标。一个仓库大约占用100MB空间,并会模拟一个并发用户 |
| terminals | 并发终端数,即模拟的并发用户数。通常设置为CPU总线程数的2-6倍进行初步测试 |
| loadWorkers | 装载数据阶段时并行加载数据的线程数 |
| application | 客户端类型。Generic 是标准模式,适用于所有数据库;PostgreSQLStoredProc 和 OracleStoredProc 使用存储过程,可大幅减少网络往返 |
| sutThreads | 应用线程数 |
| monkeys | “猴子”线程数,用于处理终端的输入输出 |
| terminalWarehouseFixed | 是否固定终端与仓库的绑定。TPC-C标准要求每个终端固定绑定一个仓库,所以应设为 true |
| runMins | 测试运行的总时长(分钟)。如果设置了这个,runTxnsPerTerminal 参数必须为0 |
| runTxnsPerTerminal | 每个终端执行的固定事务数。如果设置了这个,runMins 参数必须为0 |
| newOrderWeight | 新订单事务占比,TPC-C标准模型推荐值为45 |
| paymentWeight | 支付事务占比,标准值为43 |
| orderStatusWeight | 订单状态查询占比,标准值为4 |
| deliveryWeight | 发货事务占比,标准值为4 |
| stockLevelWeight | 库存水平查询占比,标准值为4 |
| limitTxnsPerMin | 限制整个系统每分钟处理的总事务数。设为0表示不限制 |
| rampupMins | 正式测试前的预热时间(分钟),这期间的数据不计入最终结果 |
create tablespace benchmarksql datafile '+DMDATA/data/DMDB/benchmarksql01.dbf' size 4096 autoextend off;
create user benchmarksql identified by "Benchmarksql#1234" default tablespace benchmarksql;
grant "PUBLIC","RESOURCE","SOI","VTI" to benchmarksql;
grant unlimited tablespace to benchmarksql;
alter user benchmarksql quota unlimited on benchmarksql;
#修改funcs.sh以兼容达梦
cd /root/benchmarksql-5.0/run
vi funcs.sh
#参考截图修改脚本
创建压测表并装载数据
./runDatabaseBuild.sh props.dm
数据装载完成,开始压测
./runBenchmark.sh props.dm
性能测试结果TPM为5290
生成压测报告,压测报告是一个文件夹,拿到本地用浏览器打开其中的HTML文件
./generateReport.sh my_result_2026-05-13_212538/
文章
阅读量
获赞
