达梦数据库的TPCC测试记录
测试环境
本文主要目的是介绍使用 benchmarksql工具进行 TPCC 测试的步骤
使用工具版本:benchmarksql-4.1.1
服务器:华为泰山v1
CPU:海思1616 32核x2;
内存:192G;
硬盘:1.2Tx5
系统:中标麒麟 release V7Update6/(Chromium)-aarch64
1.上传数据库的驱动包jar文件
上传目录:/home/setup/tpcc/benchmarksql-4.1.1/lib/
2.初始化相关配置
1、创建测试用户
[ dm7]# su - dmdba
[ dmdbms]$ cd /dm7/bin
[ bin]$ ./disql SYSDBA/
create tablespace TPCC datafile ‘TPCC01.dbf‘ size 128 autoextend on maxsize unlimited;
create user BENCHMARKSQL identified by "123456789" default tablespace TPCC;
grant DBA to BENCHMARKSQL;
2、配置props.dm脚本内容
driver=dm.jdbc.driver.DmDriver
conn=jdbc:dm://IP地址:端口号
user=BENCHMARKSQL
password=123456789
warehouses=100
terminals=144
//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
//The following five values must add up to 100
newOrderWeight=45
paymentWeight=43
orderStatusWeight=4
deliveryWeight=4
stockLevelWeight=4
注:runMins=5 表示测试时间为 5分钟
3.创建表
包含创建表语句,扩库以及日志文件、优化表语句
先在sqlTableCreates_DM这个文件里编写SQL语句
[ run]#cd /home/setup/tpcc/benchmarksql-4.1.1/run
[ run]# ./runSQL.sh props.dm dm01_sqlTableCreates
-bash: ./runSQL.sh: 权限不够
如果有提示这个执行权限不够,将执行赋值权限操作:
[ run]# chmod -R 755 /home/setup/tpcc/benchmarksql-4.1.1
4.创建索引
[ run]#./runSQL.sh props.dm dm02_sqlIndexCreates
5.装载数据
模拟真实业务的交易数据
[ run]#./runLoader.sh props.dm numWarehouses 100
这步需要等待一会时间,性能好的20分钟,泰山服务器60分钟
提示以下信息表示执行装载数据完成。
6.修改数据库参数
手动修改数据库的参数,如达梦数据库 dm.ini 的下列参数:
MAX_OS_MEMORY = 100
MEMORY_POOL = 1000
BUFFER = 100000
BUFFER_POOLS = 101
FAST_POOL_PAGES = 90000
FAST_ROLL_PAGES = 80000
RECYCLE = 8
MULTI_PAGE_GET_NUM = 64
MAX_BUFFER = 100000
VM_MEM_HEAP = 0
WORKER_THREADS = 24
WORK_THRD_STACK_SIZE = 512
CKPT_RLOG_SIZE = 0
CKPT_INTERVAL = 3600
CKPT_DIRTY_PAGES = 0
FORCE_FLUSH_PAGES = 0
IO_THR_GROUPS =12
CHECK_DB_IS_ACTIVE = 0
BDTA_SIZE = 20
ENABLE_SPACELIMIT_CHECK = 0
RLOG_PARALLEL_ENABLE = 1
RLOG_RESERVE_SIZE = 0
SESS_CHECK_INTERVAL = 30
FAST_RELEASE_SLOCK = 0
NOWAIT_WHEN_UNIQUE_CONFLICT = 1
UNDO_EXTENT_NUM = 32
UNDO_RETENTION = 1
MAX_SESSIONS = 1000
SUBQ_EXP_CVT_FLAG = 0
PURGE_DEL_OPT = 1
ENABLE_FREQROOTS = 2
CACHE_POOL_SIZE = 100
DICT_BUF_SIZE = 20
ENABLE_MONITOR = 0
注 1:BUFFER 估算公式为:单库不超过 100M,BUFFER>= 100M * 库个数。内存允许的 情况下,可以放大。
注 2:WORKER_THREADS 估算公式为:WORKER_THREADS = 系统逻辑 cpu 个数
注 3:IO_THR_GROUPS 估算公式为:IO_THR_GROUPS =系统逻辑 cpu 个数 / 2
注 4:BDTA_SIZE=20 和 UNDO_RETENTION<=3 必须同时设置
注 5:N_PLN_POOLS=17 老版本有用,新版本废弃。
7.重启服务器
service DmServiceDMSERVER restart
8.预加载数据到内存
[ run]#./runSQL.sh props.dm dm03_sqlCount
9.执行测试
修改 log4j.xml
确保配置文件有这条配置,如果没有,手动添加(压力机硬件较差的情况会对测试结果造成巨大影响):
<param name="Threshold" value="info"/>
执行命令如下:
[ ~]# cd /home/setup/tpcc/benchmarksql-4.1.1/run
[ ~]# ./runBenchmark.sh props.dm
这步需要等待一会时间,执行提示多版本操作冲突过多,先忽略。
注:测试结果日志文件目录:run/log/benchmarksql.log
benchmarksql.log测试结果说明
Measured tpmC (NewOrders) = 196182.35,每分钟新订单数为19万多,每秒196182/60=3269多交易,新订单占比45%左右
Measured tpmTOTAL = 436217.74,每分钟处理的总数为43万多,每秒196182/60=7270多交易
Transaction Count = 2181364,5分钟处理的总数218万多