达梦tpcc兼容配置及测试

性能压测是系统上线前几乎必备的一种数据库能力验证手段,所以本次就以最常见的一些压测工具对达梦数据库进行测试。

BenchmarkSQL简介

TPC-C是针对OLTP(联机交易)型数据库的规范和标准,各类数据库的性能指标由TPC-C的重要指标-tpmc衡量,压测工具业界最常用的是BenchmarkSQL这个工具,BenchmarkSQL是对OLTP数据库主流测试标准TPC-C的开源实现,是使用Java代码进行开发。BenchmarkSQL目前最新版本为V5.0,该版本支持Firebird,Oracle和PostgreSQL数据库,测试结果详细信息存储在CSV文件中,并可以将结果转换为HTML报告,以方便更直观的对测试结果进行查看。

 

详细安装配置过程

安装必须条件:

1.ant --java编译工具,BenchmarkSQL是用Java进行开发,编译时需要使用到ant,所以初始下载未经过编译的程序文件,需要先通ant进行编译再使用

2.java --java语言编写,所以运行时,需要使用java的运行环境(jdk或者jre都行)

3.可用的dm数据库环境

4.达梦的数据库连接驱动

5.R语言 --可选,如果需要对结果进行直观展示,需要通过generateReport.sh脚本调用R语言生成可视化报告

ant、java、dm数据库的安装过程这里不进行描述,只描述和BenchmarkSQL相关的配置过程。

 

驱动安装

因为BenchmarkSQL默认只支持Firebird,Oracle和PostgreSQL三种数据库,对于dm数据库,需要安装驱动,并修改配置文件

安装驱动较为简单,只需要将$DM_HOME/drivers/jdbc目录下的DmJdbcDriver18.jar(根据jdk版本,如果是1.8则选择DmJdbcDriver18.jar,如果是1.7则选择DmJdbcDriver17.jar,如果是1.6则选择DmJdbcDriver16.jar)拷贝到BenchmarkSQL下的lib目录中(在此目录中新建dm目录,存在驱动到./lib/dm/目录下)。

 

修改配置

对所有的配置文件进行修改或生成,满足BenchmarkSQL能连接到dm数据库

修改./benchmarksql-5.0/src/client/jTPCC.java文件,添加达梦配置:

红色字体为添加的DM相关配置。

 

修改./benchmarksql-5.0/run/funcs.sh文件,添加达梦配置:

红色字体为添加的DM相关配置。

 

修改./benchmarksql-5.0/run/runDatabaseBuild.sh文件,删除extraHistID,删除后配置如下:

 

生成./benchmarksql-5.0/run/props.dm,可复制其他文件,再做修改,修改后的文件参考如下:

这里对其中的一些重要参数做一下说明

db:填写数据库类型,需要与funcs.sh文件中的配置值保持一致;

driver:固定填写dm.jdbc.driver.DmDriver

conn:只需根据实际的数据库IP和端口进行修改

user:后续会创建用户,填写真实的用户名即可

password:后续创建用户的密码,根据创建用户的密码进行填写

warehouses:是仓库数量,需要根据实际的性能测试需求进行填写

loadworkers:是初始仓库中数据的并行数

terminals:压力测试时的终端数量,根据并发要求进行设置

runTxnsPerTerminal:每终端的运行事务数量,如果这里设置了数字值,则runMins必须设置为0

runMins:运行时长,如果规定了运行时长,则runTxnsPerTerminal必须为0

limitTxnsPerMin:每分钟运行事务数的限制,0表示无限制,建议设置为0

 

数据初始化

初始化的步骤包含两步,因为每个数据库的存储管理方式都不一样,所以对于数据库、表空间、用户等信息,都需要在数据初始前完成,达梦的初始化的内容包含如下内容:

DROP USER "BENCHMARKSQL" CASCADE;

DROP TABLESPACE BENCHMARKSQL1;

CREATE TABLESPACE BENCHMARKSQL1 DATAFILE '/dbdata/dmdata/mesdb/BENCHMARKSQL1.dbf' SIZE 2048;

CREATE USER "BENCHMARKSQL" IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE "BENCHMARKSQL1";

GRANT DBA TO BENCHMARKSQL;

实际测试过程中,需要根据测试的性能要求,进行表空间大小的修改,重做日志大小修改等。考虑到方便性问题,可以将此语句放在sql.common/tableCreates.sql的最前面,保证在创建表之前,先完成基础信息的创建。

完成以上表空间、用户创建后,再进行表、索引、外键等创建,主要的创建方法是调用sh脚本进行:

./runDatabaseBuild.sh props.dm

此脚本会在sql.common目录中逐步执行所有的脚本,如下图的tableCreates.sql、indexCreates.sql等

最后,在完成数据初始化后,还需要对统计信息进行收集,可以手动收集,也可以放在buildFinish.sql文件中

内容如下:

DBMS_STATS.GATHER_SCHEMA_STATS(

'BENCHMARKSQL',

100,

TRUE,

'FOR ALL COLUMNS SIZE AUTO');

--其中的BENCHMARKSQL为模式名

对于sql.common中所有的.sql脚本,可以根据性能要求来创建,比如创建多个表空间,然后再对其中的表进行分区,将不同的分区存放于不同的表空间,以分散数据库的IO压力,提高数据库的性能。

截止这里,已经完成所有数据的初始化工作,接下来就是执行压力测试了。

 

压力测试

在保证props.dm配置正确的情况下,可以直接开始压力测试,测试语句为:

./runBenchmark.sh props.dm

根据配置的运行时长参数,在完成测试后,会生成如下样式的输出:

这里对指标进行部分解读

Measured tpmC (NewOrders):是每分钟处理订单的数量,也是本次测试最终想得到的指标,决定了数据库的性能处理能力

Measured tpmTOTAL:是每分钟内处理的所有订单总数

Transaction Count:是运行时长内处理的总体事务数量

至此,完成压力测试的结果,当然在实际压力测试过程中,需要根据实际情况进行压力测试工具的所有参数进行调整,同时对数据库的性能进行调整,以最大程度的提升数据库的tpmC值。

 

删除测试数据

测试完成后,可以执行数据删除的操作,将数据库还原至测试前的状态,执行./benchmarksql-5.0/run/runDatabaseDestroy.sh props.dm即可,当然,因为默认情况下,只删除表,未进行其他操作,可以对runDatabaseDestroy.sh调用的脚本tableDrops.sql中进行配置添加,如下所示:

 

测试结果可视化展示

BenchmarkSQL支持以图形化展示测试结果,方法就是调用./benchmarksql-5.0/run/generateReport.sh脚本,此脚本需要R语言的支持,这里不对R语言的安装进行描述。

./benchmarksql-5.0/run/generateReport.sh 结果文件(这里填写runBenchmark.sh脚本之后的生成结果,默认在./benchmarksql-5.0/run目录中,以myresult开头的目录空间)。

至此,完成BenchmarkSQL的达梦兼容压力测试。

达梦社区:https://eco.dameng.com

posted @ 2022-07-13 20:37  ly_nye  阅读(1588)  评论(0)    收藏  举报