icycastle
作者icycastle课题专家组·2022-04-06 15:38
数据库管理员·某证券公司

鲲鹏和海光CPU架构环境BenchmarkSQL 压测达梦数据库

字数 3830阅读 4754评论 1赞 8

近期由于 工作需要,研究对比了下达梦数据库运行在 ARM 和海光两款 CPU 上的性能,本文把测试过程做了简要的记录。

首先,我们选择了 BenchmarkSQL 这款开源软件作为 TPCC 压测的工具。这款工具采用标准的 TPC-C 模型,支持 JDBC 连接,原生支持 Oracle 和 PostgreSQL 。

BenchmarkSQL :下载地址: https://sourceforge.net/projects/benchmarksql/

BenchmarkSQL 通过 JDBC 接口连接数据库,所以通过简单的修改和配置就可以支持其它数据库了,这边就介绍下如何支持达梦数据库。

1 、为 BenchmarkSQL 配置达梦数据库 java 驱动

登录压测目标数据库,达梦数据库安装软件目录可以找到 java 驱动,我的环境下是 /home/dmdba/dmdbms/drivers/jdbc/DmJdbcDriver18.jar ;

将这个 jar 包复制到压力测试服务器(安装 BenchmarkSQL 的服务器),可以放在 /benchmarksql-5.0/lib/dm 下,( dm 目录自己创建)。

2 、修改 benchmarksql-5.0/src/client 下的 jTPCC.java ,增加 dm 相关部分

if (iDB.equals("firebird"))

dbType = DB_FIREBIRD;

else if (iDB.equals("oracle"))

dbType = DB_ORACLE;

else if (iDB.equals("postgres"))

dbType = DB_POSTGRES;

else if (iDB.equals("dm"))

dbType = DB_UNKNOWN;

else

{

log.error("unknown database type '" + iDB + "'");

return;

}

3 、使用 ant 编译源码

安装 ant

yum install ant.noarch -y

[root@perform-db-1 benchmarksql-5.0]# pwd

/benchmarksql-5.0

[root@perform-db-1 benchmarksql-5.0]# ant

Buildfile: /benchmarksql-5.0/build.xml

4 、修改 benchmarksql-5.0/run 下的 funcs.sh ,添加 dm 数据库类型

在 benchmarksql-5.0/lib 目录下创建一个 dm 目录,将对应的 jdbc 驱动拷贝至该目录下,然后修改 funcs.sh 文件

function setCP()

{

case "$(getProp db)" in

firebird)

cp="../lib/firebird/:../lib/"

;;

oracle)

cp="../lib/oracle/*"

if [ ! -z "${ORACLE_HOME}" -a -d ${ORACLE_HOME}/lib ] ; then

cp="${cp}:${ORACLE_HOME}/lib/*"

fi

cp="${cp}:../lib/*"

;;

postgres)

cp="../lib/postgres/:../lib/"

;;

dm)

cp="../lib/dm/:../lib/"

;;

esac

myCP=".:${cp}:../dist/*"

export myCP

case "$(getProp db)" in

firebird|oracle|postgres|dm)

;;

"") echo "ERROR: missing db= config option in ${PROPS}" >&2

exit 1

;;

*) echo "ERROR: unsupported database type 'db=$(getProp db)' in ${PROPS}" >&2

exit 1

;;

Esac

5 、修改 benchmarksql-5.0/run/runDatabaseBuild.sh
去掉 AFTER_LOAD 中的 extraHistID

到这里, BenchmarkSQL 压测软件就支持达梦数据库了。

6 、目标数据库创建用户和表空间

su - dmdba/dbdma

dmdba@dm-test-1:~$ disql SYSDBA/SYSDBA@dm-test-1:32141

create tablespace tpcctbs datafile '/dmdb/data/DAMENG/tpcctbs01.dbf' size 128 autoextend on maxsize unlimited;

alter tablespace tpcctbs add datafile '/dmdb/data/DAMENG/tpcctbs02.dbf' size 128 autoextend on maxsize unlimited;

alter tablespace tpcctbs add datafile '/dmdb/data/DAMENG/tpcctbs03.dbf' size 128 autoextend on maxsize unlimited;

alter tablespace tpcctbs add datafile '/dmdb/data/DAMENG/tpcctbs04.dbf' size 128 autoextend on maxsize unlimited;

create user tpcc identified by "**" default tablespace tpcctbs;

grant resource to tpcc;

grant dba to tpcc;

7 、修改 BenchmarkSQL 达梦数据库连接的配置文件

进入 benchmarksql-5.0/run 目录,使用 props.ora 复制一个 props.dm 文件出来

修改 props.dm 文件,修改连接数据库的 IP 和账号信息,设置 TPC-C 的仓库数和压测并发数,内容参考如下。

$ cat props.dm

db=dm

driver=dm.jdbc.driver.DmDriver

conn=jdbc:dm://x.x.x.x:5236

user=tpcc

password=**

warehouses=4

loadWorkers=4

terminals=32

//To run specified transactions per terminal- runMins must equal zero

runTxnsPerTerminal=0

//To run for specified minutes- runTxnsPerTerminal must equal zero

runMins=15

//Number of total transactions per minute

limitTxnsPerMin=0

….

8 、初始化 TPC-C 模型数据

./runDatabaseBuild.sh props.dm

9 、执行 benchmark 压测

./runBenchmark.sh props.dm

可以反复修改仓库和并发数,重新初始化数据,进行多次压测

warehouses=30

loadWorkers=5

terminals=8

//To run specified transactions per terminal- runMins must equal zero

runTxnsPerTerminal=0

//To run for specified minutes- runTxnsPerTerminal must equal zero

runMins=5

//Number of total transactions per minute

limitTxnsPerMin=100000

修改完成之后需要重新 reduild benchmark 然后再进行测试。

./runDatabaseDestroy.sh props.dm

./runDatabaseBuild.sh props.dm

10、查看测试报告

默认生成的数据在 run 目录下,以日期命名:

$ pwd

/benchmarksql-5.0/run

ls my_result_*

11、鲲鹏和海光 CPU 的数据库性能测试比较

压测数据库 1 :使用鲲鹏 920CPU 虚拟机, 8 核, 16G 内存,操作系统是麒麟 v10sp1 ,不同并发度的压测数据如下:

压测数据库 2 :使用海光 7285CPU 虚拟机, 8 核, 16G 内存,操作系统是麒麟 v10sp1 ,不同并发度的压测数据如下:

对比两款 CPU 在不同并发下的性能表现:

小结:使用同等配置的两台信创服务器(虚拟机),安装达梦数据库,使用 benchmarkSQL 5.0 进行 TPCC 压力测试,测试结果如上表格。在 1-16 并发的情况下,两款信创环境的性能表现基本一致,在 24-40 并发的情况下,鲲鹏的表现优于海光。

注:数据库性能受众多因素影响,以上数据仅代表笔者测试环境的性能表现。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

8

添加新评论1 条评论

diyworlddiyworld系统运维工程师保密
2022-04-27 07:50
影响性能的因素较多,建议两边的硬件配置还是应该更详细些,海光的8核是物理核还是超线程后的8核(超线程8核实际对应物理4核),使用本机硬盘还是存储?

icycastle@diyworld 影响性能的因素很多,在测试的时候尽量保证硬件和系统参数一致,cpu都是物理核,硬盘都是本地SSD

2022-04-27 09:15
Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

相关文章

相关问题

相关资料

X社区推广