暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库使用benchmarkSQL测试性能

杨金福 2025-03-04
280

概述

本文在个人笔记本电脑的vmware虚拟机上安装PanWeiDB2.0,使用benchmarkSQL工具测试TPCC性能。

本文中测试相关软硬件环境和测试结果,仅作参考。

环境描述

服务器配置

节点配置

型号

配置参数

数量

HP EliteBook 645 14 inch G10 Notebook PC

处理器

AMD Ryzen 5 7530U with Radeon Graphics  六核

1台

内存

16 GB

系统硬盘

200GB SSD

以太网卡

RTL8168/8111/8112 Gigabit Ethernet Controller

测试软件环境

软件项目

配置

操作系统

BClinux For Euler 21.10U3 LTS

数据库软件

PanWeiDB_V2.0-S3.0.1_B01-bclinux-64bit

测试工具

工具名称

用途

Benchmarksql 5.0

BenchmarkSQL是对OLTP数据库主流测试标准TPC-C的开源JAVA实现,用于对数据库事务处理能力的评估测试。

环境预调优

操作系统调优

--关闭irqbalance服务

systemctl stop irqbalance

systemctl disable irqbalance

--检查

cat /proc/sys/kernel/numa_balancing

cat /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/transparent_hugepage/defrag

--设置(PanWeiDB部署过程中已关闭大页和numa_balance,通常无需补设置)

echo 0 > /proc/sys/kernel/numa_balancing

echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled

echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag

benchmarksql部署

软件下载

benchmarksql下载:https://udomain.dl.sourceforge.net/project/benchmarksql/benchmarksql-5.0.zip

htop下载: https://github.com/htop-dev/htop/releases

R语言下载: https://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.6.3.tar.gz

ant下载:http://ant.apache.org/dist/ant/binaries/

JDBC驱动:https://opengauss.org/zh/download.html

安装所需要的包

yum install -y gcc glibc-headers gcc-c++ gcc-gfortran readline-devel libXt-devel pcre-devel libcurl libcurl-devel ncurses ncurses-devel autoconf automake zlib zlib-devel bzip2 bzip2-devel xz-devel java-1.8.0-openjdk ant

安装ant(如需)

mkdir -p /usr/local/apache-ant/

tar -xzvf apache-ant-1.10.15-bin.tar.gz -C /usr/local/apache-ant

cd /usr/local/apache-ant/apache-ant-1.10.15

mv * ../

vi /etc/profile

添加以下至文件末尾

export ANT_HOME=/usr/local/apache-ant

export PATH=$ANT_HOME/bin:$PATH

source /etc/profile ##或重登录登录

ant -versioin

安装R语言

tar -zxf R-3.6.3.tar.gz

cd R-3.6.3

./configure

make

make install

###(generateReport.sh脚本需要)

编译安装htop

unzip htop-3.3.0.zip

cd htop-3.3.0

./autogen.sh

./configure

make

make install

###(服务器端和客户端都安装)

检查安装

##java/ant/htop/R

ant -version

java -version

htop --version

R --version

ant命令编译

vi /etc/profile

添加以下至文件末尾

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-10.oe1.x86_64

export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile ###或重登录登录

cd /bhm/benchmarksql/benchmarksql-5.0-x86

ant

###编译成功后会生成build和dist两个目录

替换jdbc驱动

cd /bhm/benchmarksql/benchmarksql-5.0-x86/lib/postgres

mv postgresql-9.3-1102.jdbc41.jar postgresql-9.3-1102.jdbc41.jar.bak

上传对应平台和版本的jdbc驱动至上述路径下

测试明细

测试步骤

数据库端操作

创建测试用户

gsql -r

create user tpcc password 'Panwei@1234';

alter user tpcc sysadmin;

创建测试数据库

create database tpcc dbcompatibility='A' owner tpcc;

\l

设置白名单并生效

gs_guc reload -N all -I all -h "host all tpcc 192.168.115.1/32 md5"

benchmarksql端操作

解压测试工具

# mkdir /bhm

# unzip benchmarksql.zip -d /bhm/

修改配置文件

备份文件props.pg,按照如下内容修改文件;ip地址为数据库业务地址。

# 数据库类型,postgres代表对PG数据库进行测试,支持数据库包括PostgreSQL/EnterpriseDB、DB2、Oracle、SQL Server和MySQL

db=postgres

# 驱动

driver=org.postgresql.Driver

# 修改连接字符串, 包含IP、端口号、数据库名

conn=jdbc:postgresql://192.168.115.100:17700/tpcc?prepareThreshold=1&batchMode=on&fetchsize=10&loggerLevel=off

# 设置数据库登录用户和密码

user=tpcc

password=Panwei@1234

# 仓库数,每个Warehouse的数据量大小约为76823.04KB

warehouses=20

# 用于在数据库中初始化数据的加载进程数量,默认为4 (建议填写CPU核数)

loadWorkers=4

# 终端数,即:并发客户端数量, 跟服务端最大work数对应,通常设置为CPU线程总数的2~6倍

terminals=8

# 每个终端(terminal)运行的固定事务数量,当该参数为非0时,runMins参数必须等于零

runTxnsPerTerminal=0

# 要运行指定的分钟,当该参数为非0时,runTxnsPerTerminal必须等于零

runMins=5

# 每分钟总事务数

limitTxnsPerMin=0

# 在4.x兼容模式下运行时,设置为True。设置为false以均匀使用整个配置的数据库。

terminalWarehouseFixed=false

# 以下五个值相加之和为100 (45、43、4、4和4的默认百分比与TPC-C规范匹配)

# newOrderWeight=45 新订单事务占总事务的45%

# paymentWeight=43 支付订单事务占总事务的43%

# orderStatusWeight=4 订单状态事务占总事务的4%

# deliveryWeight=4 到货日期事务占总事务的4%

# stockLevelWeight=4 查看现存货品的事务占总事务的4%

newOrderWeight=45

paymentWeight=43

orderStatusWeight=4

deliveryWeight=4

stockLevelWeight=4

# 测试数据生成目录,默认无需修改,默认生成在run目录下面,名字形如my_result_xxxx的文件夹

resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS

# 操作系统性能收集脚本,默认无需修改,需要操作系统具备有python2环境

osCollectorScript=./misc/os_collector_linux.py

# 操作系统收集操作间隔,默认为1秒

osCollectorInterval=1

# 操作系统收集所对应的主机,如果对本机数据库进行测试,该参数保持注销即可,如果要对远程服务器进行测试,请填写用户名和主机名

//osCollectorSSHAddr=omm@192.168.0.11

# 操作系统中被收集服务器的网卡名称和磁盘名称

osCollectorDevices=net_ens33 blk_sda

运行runDataBuild.sh生成数据

cd /bhm/benchmarksql/benchmarksql-5.0-x86/run //进入目录

chmod a+x *.sh //授可执行权限

./runDatabaseBuild.sh props.pw //进行测试库创建,数据导入

./runBenchmark.sh props.pw //执行配置好的测试

./runDatabaseDestroy.sh props.pw //清理数据

运行runBenchmark.sh测试数据库

修改runBenchmark.sh脚本中funcs.sh命令的路径为实际当前安装的路径。

运行如下命令进行测试;修改props.pw文件参数terminals=n;

n设置为正整数,即当前并发度。

./runBenchmark.sh props.pw

测试结果截图示例:

vacuum更新统计信息

如果多次运行测试后如出现性能下降,则到数据库上去执行vacuum后再继续测试

$ gsql -d tpcc

vacuum analyze;

清理数据

如果多次运行测试后,也可清理数据,重新初始化数据

./runDatabaseDestroy.sh props.pw

 
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论