基于BenchmarkSQL的达梦数据库TPCC性能测试

Oracle版本参见:基于BenchmarkSQL的Oracle数据库tpcc性能测试

安装BenchmarkSQL及其依赖

软件包作用
benchmarksql-5.0.ziptpcc性能测试
R-3.6.3.tar.gz生成压测报告

🦁下载地址

  • BenchmarkSQL: https://github.com/petergeoghegan/benchmarksql
  • R: https://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.6.3.tar.gz

安装软件依赖

安装依赖软件包:

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 ant -y

编译安装R语言:

yum install pango-devel pango libpng-devel cairo cairo-devel -y

tar -zxf R-3.6.3.tar.gz
cd R-3.6.3
./configure && make && make install

检查安装情况:

[root@primarydb benchmarksql]# ant -version
Apache Ant(TM) version 1.9.4 compiled on November 5 2018

[root@primarydb benchmarksql]# java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (build 1.8.0_362-b08)
OpenJDK 64-Bit Server VM (build 25.362-b08, mixed mode)

[root@primarydb benchmarksql]# R --version
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

如果ant命令报如下错误:

[root@primarydb benchmarksql]# ant -version
Unable to locate tools.jar. 
Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.ky10.x86_64/lib/tools.jar

解决办法是安装openjdk-devel包:

yum install java-1.8.0-openjdk-devel -y

编译BenchmarkSQL

解压安装包:

[root@primarydb benchmarksql]# unzip benchmarksql-5.0.zip
[root@primarydb benchmarksql]# ls benchmarksql-5.0/lib/
apache-log4j-extras-1.1.jar  firebird  log4j-1.2.17.jar  oracle  postgres

拷贝达梦数据库驱动到BenchmarkSQL的lib/oracle目录下:

find /opt/dmdbms -name DmJdbcDriver*
cp /opt/dmdbms/driver/jdbc/DmJdbcDriver18.jar benchmarksql-5.0/lib/oracle/

使用ant编译BenchmarkSQL:

[root@primarydb benchmarksql]# cd benchmarksql-5.0
[root@primarydb benchmarksql-5.0]# ant

BenchmarkSQL props文件配置

benchmarksql-5.0/run/props.xxx是使用BenchmarkSQL进行性能测试的主要配置文件。

BenchmarkSQL默认不支持达梦数据库。这里我们让BenchmarkSQL把达梦数据库当作Oracle即可。Oracle数据库对应的测试配置文件为props.ora,将其拷贝为dm.properties编辑:

db=oracle                                               //benchmarksql默认不支持达梦数据库
driver=dm.jdbc.driver.DmDriver                          //数据库驱动
conn=jdbc:dm://127.0.0.1:5236                           //数据库连接串
user=BENCHMARKSQL                                       //数据库连接用户
password=benchmarksql                                   //数据库连接用户密码

warehouses=500        //仓库数,控制测试数据量,每个仓库初始大小约为100MB
loadWorkers=8         //初始化测试数据时,往数据库中加载数据的并发进程数

terminals=40            //客户端并发连接数
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=10   //每个客户端运行的事务数量。该参数不为0时,runMins必须为0
//To run for specified minutes- runTxnsPerTerminal must equal zero
runMins=0               //测试的时长,单位为分钟。该参数不为0时,runTxnsPerTerminal必须为0
//Number of total transactions per minute
limitTxnsPerMin=300     //用于限制每分钟提交事务数量,设置为0表示不限制。如果设置太小,压力会不够

//Set to true to run in 4.x compatible mode. Set to false to use the
//entire configured database evenly.
terminalWarehouseFixed=true

//The following five values must add up to 100
//TPC-C规范的默认百分比为45:43:4:4:4
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4

// Directory name to create for collecting detailed result data.
//测试结果数据存储位置和命名规则
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1

//收集OS负载信息:eth0和vdb必须匹配服务器网卡和磁盘名称
//osCollectorSSHAddr=user@dbhost
osCollectorDevices=net_eth0 blk_vdb

其中几个重要参数建议按如下规则配置:

  • warehouses:每个仓库初始大小约100M。建议测试数据量为数据库服务器物理内存的2到5倍大小;
  • loadWorkers:建议配置为CPU核数;
  • terminals:建议配置为CPU核数的2到6倍大小;
  • limitTxnsPerMin:在固定时长测试时,如果最终测试结果中每分钟事务提交数量很接近该参数的配置,可以调大该参数后重新测试(或将其设置为0)。

数据库用户配置

按照dm.properties中的用户和密码在达梦数据库中创建测试用户,并保证其表空间足够容纳生成的测试数据。可以按照每个warehouse为100M大小进行估算。如果开启了归档,还要考虑归档日志占用的空间。

BenchmarkSQL压测

装载测试数据

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

[root@primarydb benchmarksql-5.0]# cd run
[root@primarydb run]# ./runDatabaseBuild.sh dm.properties

TPC-C压测(固定事务数量)

修改dm.properties中的测试模式为固定事务数量:

runTxnsPerTerminal=10
runMins=0

使用runBenchmark.sh脚本进行测试:

[root@primarydb run]# ./runBenchmark.sh dm.properties

执行事务的总数等于terminalsrunTxnsPerTerminal的乘积。

测试结束后,会在当前路径下生成一个以dm.properties中参数resultDirectory规则命名的结果目录。

TPC-C压测(固定时长)

修改dm.properties中的测试模式为固定时长:

runTxnsPerTerminal=0
runMins=180

销毁测试数据后重新加载测试:

[root@primarydb run]# ./runDatabaseDestroy.sh dm.properties
[root@primarydb run]# ./runDatabaseBuild.sh dm.properties
[root@primarydb run]# ./runBenchmark.sh dm.properties

生成测试报告

使用generateReport.sh脚本来生成测试报告(需要安装R语言):

[root@primarydb run]# ls my_result_2023-04-15_182919/
data  run.properties

[root@primarydb run]# ./generateReport.sh my_result_2023-04-15_182919/

[root@primarydb run]# ls my_result_2023-04-15_182919/
blk_vdb_iops.png  cpu_utilization.png  dirty_buffers.png  net_eth0_iops.png  report.html     tpm_nopm.png
blk_vdb_kbps.png  data                 latency.png        net_eth0_kbps.png  run.properties

[root@primarydb run]# zip -r tpcc-dm-report.zip my_result_2023-04-15_182919/

其中,report.html是生成的测试报告,png文件是报告中包含的图片。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
达梦数据库在TPC-C基准测试中的性能结果受多个因素影响。以下是一些可能影响TPC-C结果的关键因素: 1. 硬件配置:数据库服务器的硬件配置,包括处理器、内存、磁盘和网络等方面,对性能结果有直接影响。更高性能的硬件配置通常能够提供更好的性能表现。 2. 数据库参数设置:达梦数据库的配置参数对性能也有重要影响。例如,缓冲池大小、并发连接数、日志刷新策略等参数的设置都可能对TPC-C测试结果产生影响。 3. 索引和查询优化:良好的索引设计和有效的查询优化可以显著提高查询性能。在TPC-C测试中,根据模拟的负载特点,适当的索引设计和查询优化可以帮助达梦数据库更好地处理事务和查询请求。 4. 数据加载和维护:TPC-C测试通常涉及大量的数据加载和维护操作。达梦数据库在数据加载和维护方面的性能表现也会影响整体性能结果。例如,数据导入速度、索引重建效率等。 5. 并发控制和事务管理:TPC-C测试是一个多用户并发负载测试,对并发控制和事务管理的要求较高。达梦数据库在并发控制机制、事务隔离级别、锁管理等方面的实现都会对TPC-C结果产生影响。 需要注意的是,以上只是一些可能的因素,实际影响结果的因素可能更多,具体取决于测试环境的配置、负载特点以及数据库本身的特性和性能。在进行TPC-C测试前,建议仔细评估和优化这些方面,以获得更准确和可靠的性能结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值