鲲鹏和海光 CPU 架构环境 BenchmarkSQL 压测达梦数据库
【作者】icycastle,某证券公司 DBA
近期由于工作需要,研究对比了下达梦数据库运行在 ARM 和海光两款 CPU 上的性能,本文把测试过程做了简要的记录。
首先,我们选择了 BenchmarkSQL 这款开源软件作为 TPCC 压测的工具。这款工具采用标准的 TPC-C 模型,支持 JDBC 连接,原生支持 Oracle 和 PostgreSQL 。
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 myresult*
11、鲲鹏和海光 CPU 的数据库性能测试比较
压测数据库 1 :使用鲲鹏 920CPU 虚拟机, 8 核, 16G 内存,操作系统是麒麟 v10sp1 ,不同并发度的压测数据如下:
压测数据库 2 :使用海光 7285CPU 虚拟机, 8 核, 16G 内存,操作系统是麒麟 v10sp1 ,不同并发度的压测数据如下:
对比两款 CPU 在不同并发下的性能表现:
小结:使用同等配置的两台信创服务器(虚拟机),安装达梦数据库,使用 benchmarkSQL 5.0 进行 TPCC 压力测试,测试结果如上表格。在 1-16 并发的情况下,两款信创环境的性能表现基本一致,在 24-40 并发的情况下,鲲鹏的表现优于海光。
注:数据库性能受众多因素影响,以上数据仅代表笔者测试环境的性能表现。
原题:鲲鹏和海光CPU架构环境BenchmarkSQL 压测达梦数据库
点击文末阅读原文,可以到原文下留言交流
觉得本文有用,请转发、点赞或点击“在看”,让更多同行看到
资料/文章推荐:
■ 欢迎读者以各种形式转发,网站等平台如无作者授权请勿擅自转载
下载 twt 社区客户端 APP
或到应用商店搜索“twt”