本次测试使用华为云服务器,配置为
- 2vCPUs | 4GiB | kc1.large.2
- 系统:openEuler 20.03 64bit with ARM
- CPU:Huawei Kunpeng 920 2.6GHz
使用的 opengauss 版本是 5.0.1。
-
创建openGauss数据库的安装用户omm及其属组dbgrp,创建安装目录。
groupadd -g 1000 dbgrp useradd -g dbgrp -u 1000 -d /home/omm omm mkdir -p /opt/software/openGauss/
-
安装依赖包
yum install -y libaio-devel ncurses-devel pam-devel libffi-devel libtool libtool-devel libtool-ltdl openssl-devel bison golang flex dkms-2.6.1-5.oe1.noarch python3-devel patch --nogpgcheck
-
使用vi打开logind.conf文件。
vi /etc/systemd/logind.conf
按下i字母键进入命令插入模式,修改RemoveIPC的值为no 并去掉前面的 # 号,之后保存并退出。
-
重新加载配置参数。
systemctl daemon-reload systemctl restart systemd-logind
-
修改 /opt/software 路径的用户属组及权限。
chown omm:dbgrp -R /opt/software chmod 755 -R /opt/software
-
切换到omm用户并进入 opengauss 文件夹
su - omm cd /opt/software/openGauss/ -
下载并解压 opengauss 安装包。
wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.1/arm/openGauss-5.0.1-openEuler-64bit.tar.bz2 tar -jxf openGauss-5.0.1-openEuler-64bit.tar.bz2 -C /opt/software/openGauss
-
进入安装脚本目录并运行 install.sh
cd /opt/software/openGauss/simpleInstall sh install.sh -w GaussDB@123 -p 26000 -
修改omm用户的环境变量
vi ~/.bashrc按下i字母键进入命令插入模式,在ulimit -n 1000000这行前面插入# 号,把这行注释掉,之后保存并退出。
source ~/.bashrc
使用的 postgresql 版本是 12.4。
-
安装依赖包
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
-
类似安装 OpenGauss 的过程,在
/opt/software目录下新建目录pgsql,并从官网下载压缩包并解压wget https://ftp.postgresql.org/pub/source/v12.4/postgresql-12.4.tar.gz tar -xvf postgresql-12.4.tar.gz
-
进入解压后的文件夹,编译源码,安装
cd postgresql-12.4 ./configure --prefix=/opt/software/pgsql/postgresql make && make install
-
创建 postgres 用户操作 postgresql
groupadd postgres useradd -g postgres postgres mkdir /opt/software/pgsql/postgresql/data chown postgres:postgres /opt/software/pgsql/postgresql/data
-
将 postgresql 放入环境变量
vim .bash_profile
加入
export PGHOME=/opt/software/pgsql/postgresql export PGDATA=/opt/software/pgsql/postgresql/data PATH=$PATH:$HOME/bin:$PGHOME/bin
source .bash_profile
主要参考了 使用BenchmarkSQL压测openGauss 数据库测试 - 墨天轮 ,跳过了配置白名单和修改并配置建表脚本两步。
同时服务器无法使用 yum 安装 ant,参考Linux - 安装 Ant - 西瓜_皮 - 博客园 手动安装了 ant。
详细命令见 report.pdf
配置文件 props.pg 如下:
db=postgres
driver=org.postgresql.Driver
conn=jdbc:postgresql://localhost:5432/postgres
user=benchmarksql
password=PWbmsql
warehouses=10
loadWorkers=4
terminals=50
//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=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
//The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
// Directory name to create for collecting detailed result data.
// Comment this out to suppress.
resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS
osCollectorScript=./misc/os_collector_linux.py
osCollectorInterval=1
//osCollectorSSHAddr=user@dbhost
osCollectorDevices=net_eth0 blk_sda在测试完 opengauss 之后,需要将 benchmarksql-5.0/lib/postgres 目录下的 postgresql.jar 移开目录或者修改后缀名,并将 postgresql-9.3-1102.jdbc41.jar 放入目录中。
opengauss 详细测试结果:result of opengauss
postgresql 详细测试结果:result of postgresql
测试详情见 report.pdf
经过比较,可以得出结论:
- 少量数据下,postgresql 的各种命令运行速度显著快于 opengauss。
- 大量数据下,绝大部分命令 postgresql 运行速度远远快于 opengauss。但是在建立索引之后的查询下 opengauss 略快于 postgresql 。
- 在 TPC-C 测试中,postgresql 在高并发操作下处理事务效率远快于 opengauss,但是 opengauss 处理效率更加稳定。
- 运行查询命令时,postgresql 的 CPU 占用率较 opengauss 更低,更能节约硬件资源。
总的来说,postgresql 相较 opengauss 在性能上仍有较大优势,opengauss 在 TPC-C 测试中表现更加稳定,postgresql 的硬件占用率更低,读带宽更高,写带宽更低。