1、工具介绍:
BenchmarkSQL工具是对OLTP数据库主流测试标准TPC-C的开源实现,该工具的测试结果详细信息存储在CSV文件中,并可以将结果转换为HTML报告。本次介绍BenchmarkSQL V5.0测试达梦数据库,主要包括BenchmarkSQL V5.0测试达梦数据库使用实例、应用技巧、基本知识点总结和需要注意事项,但是该工具默认不支持DM数据库,需要修改部分源码,让BenchmarkSQL来支持DM数据库。
2、环境准备:
操作系统是CentOS 7.3,JDK版本是1.8.0_131,apache-ant版本是1.9.15,BenchmarkSQL的版本是V5.0,apache-ant和BenchmarkSQL安装在了/opt目录下。
2.1、安装JDK 7及以上版本,配置环境变量
export JAVA_HOME=/usr/local/jdk1.8.0 export CLASSPATH=.:$JAVA_HOME/lib.tools.jar export PATH=$JAVA_HOME/bin:$PATH |
2.2、下载并安装apache-ant,配置环境变量
在官网上下载apache-ant-xxx.bin.zip安装包,解压后添加进环境变量PATH中,保存退出,重新加载环境变量。官网下载地址:https://ant.apache.org。
vim ~/.bashrc export PATH=/opt/apache-ant-1.9.15/bin:$PATH source ~/.bashrc |
2.3、下载BenchmarkSQL,并修改部分源码
在官网下载并安装BenchmarkSQL,修改benchmarksql-5.0/src/client下的jTPCC.java文件,增加DM相关配置(红线标注的内容)来支持达梦数据库。
2.4、修改完BenchmarkSQL源码后重新编译
在修改完BenchmarkSQL源码后,还需要进入benchmarksql目录下,直接执行ant命令重新进行编译。
2.5、创建BENCHMARK用户,授予DBA权限
#创建benchmark用户,密码ROOT123 CREATE USER benchmark IDENTIFIED BY ROOT123; #授权benchmark用户DBA管理员权限 GRANT DBA TO benchmark; |
2.6、根据run目录下数据库的props文件创建达梦的props.dm文件
db=dameng warehouses=32 //该参数用于指定仓库个数,每个warehouse大小大概是100MB,用于控制测试数据量。如果该参数设置为10,整个数据库(9张表)的大小大概在1GB,每个仓库负责十个区域的供货,每个区域3000个客户服务,每个仓库维护100000种商品的库存纪录,每个仓库至多有10个终端 loadWorkers=8 //该参数用于指定测试数据加载时的并行度,即数据库中初始化数据的加载进程数量 terminals=1 //To run specified transactions per terminal- runMins must equal zero //参数用于指定模拟终端数,即并发客户端数量 runTxnsPerTerminal=0 //To run for specified minutes- runTxnsPerTerminal must equal zero //该参数用于指定每个终端提交事务数,每个终端运行的固定事务数量。如果该值设置为10,意味着每个终端运行10个事务,如果有32个终端,那整体运行320个事务后。该参数和unMins只能选择设置一个,如果该配置为非0值时,下面的runMins参数必须设置为0 runMins=3 //Number of total transactions per minute //该参数用于指定运行时间,单位是分钟。该值设置为非0值时,runTxnsPerTerminal参数必须设置为0。如果这两个参数设置其中一个,另一个必须为0,主要区别是runMins定义时间长度来控制测试时间;runTxnsPerTerminal定义事务总数来控制时间。 limitTxnsPerMin=0 //Set to true to run in 4.x compatible mode. Set to false to use the //entire configured database evenly. //参数用于指定每分钟提交事务数限制 terminalWarehouseFixed=true //该参数用于指定终端和仓库的绑定模式,设置为true时可以运行4.x兼容模式,意思为每个终端都有一个固定的仓库。设置为false时可以均匀的使用数据库整体配置。TPCC规定每个终端都必须有一个绑定的仓库,所以一般使用默认值true //The following five values must add up to 100 //The default percentages of 45, 43, 4, 4 & 4 match the TPC-C spec //五个值的总和必须等于100,默认值为45、43、4、4和4,要与TPC-C测试定义的比例一致,实际操作过程中,可以调整比重来适应各种场景。 newOrderWeight=45 //客户输入一笔新的订货交易,在各个类型的交易在系统中所占的比例45% paymentWeight=43 //更新客户账户余额以反应其支付状况,在各个类型的交易在系统中所占的比例43% orderStatusWeight=4 //发货(批处理交易),在各个类型的交易在系统中所占的比例4% deliveryWeight=4 //查询客户最近交易的状态,在各个类型的交易在系统中所占的比例4% stockLevelWeight=4 //查询仓库库存状况,在各个类型的交易在系统中所占的比例4% // Directory name to create for collecting detailed result data. // Comment this out to suppress. resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tS //测试数据生成目录,默认无需修改,默认生成在run目录下面,名字形如my_result_xxxx的文件夹 osCollectorScript=./misc/os_collector_linux.py //操作系统性能收集脚本,默认无需修改,需要操作系统具备有python环境 osCollectorInterval=1 //操作系统收集操作间隔,默认为1秒 //osCollectorSSHAddr=user@dbhost //操作系统收集所对应的主机,如果对本机数据库进行测试,该参数保持注销即可,如果要对远程服务器进行测试,请填写用户名和主机名。 osCollectorDevices=net_eth0 blk_sda //操作系统中被收集服务器的网卡名称和磁盘名称 |
2.7、修改benchmarksql-5.0/run下的funcs.sh,添加dm数据库类型
2.8、新建dameng文件夹,添加DM数据库修改的驱动包
在benchmarksql-5.0/lib目录下创建一个dameng目录,将dm数据库对应的jdbc驱动拷贝至该目录下,在实验中,DM数据库安装在/home/dmdba/dmdbms下。
cp -r /home/dmdba/dmdbms/ drivers/jdbc/DmJdbcDriver* /opt/benchmarksql-5.0/lib/dameng/ |
2.9、创建测试表,预加载测试数据(有两种预加载的方式)
在benchmarksql-5.0/run/目录下存放着常用的工具:执行SQL工具(runSQL.sh)、执行数据装载工具(runLoader.sh)、执行测试工具(runBenchmark.sh)等。除此之外还有一些SQL初始化的语句,包括创建表、创建索引,清空表数据等脚本。
A、在benchmarksql-5.0/run/下执行脚本./runDatabaseBuild.sh props.dm,执行该脚本会创建TPC-C标准模型中的9张表并按照props.dm设置的仓库数(warehouses)进行数据测试数据写入、主外键以及索引创建。
./runDatabaseBuild.sh props.dm |
B、在创建测试表的时候,可以使用runSQL.sh脚本来单独会创建TPC-C标准模型中的9张表以及索引,还可以使用runLoader.sh来设置仓库数(warehouses)进行数据测试数据
./runSQL.sh props.dm sql.common/tableCreates.sql ./runSQL.sh props.dm sql.common/indexCreates.sql ./runLoader.sh props.dm numWarehouses 10 |
3、执行测试
BenchmarkSQL测试会收集详细的性能指标,如果配置了操作系统参数收集,同样也会收集操作系统级别网卡和磁盘的性能指标,默认生成的数据在run/my_result_xx目录下。生成的报告可以通过脚本文件generateReport.sh + my_result_xx生成带有图形的HTML文件。生成图形的脚本generateReport.sh要求操作系统环境中已经安装了R语言。
3.1、开始测试TPC-C,在benchmarksql-5.0/run目录下执行:
./runBenchmark.sh props.dm |
3.2、测试结果查看及结果说明:
在测试完成后不仅会在屏幕打印出测试结果,还会在benchmarksql-5.0/run目录下生成一个my_result_+日期的文件夹,里面包含测试结果详细信息存储的CSV文件。
3.3、生成结果报告,在benchmarksql-5.0/run目录下执行:
BenchmarkSQL测试会自动收集详细的性能指标,生成的报告还可以通过脚本文件generateReport.sh将 my_result_xx生成带有图形的HTML文件。
./generateReport.sh my_result_2020-04-02_030832 |