当前位置: 首页 > news >正文

【使用TPCC和TPCH进行性能测试】

TPCC和TPCH介绍

在数据库领域,针对不同的使用场景,TPC组织发布了多项测试标准。其中被业界广泛接受和使用的有TPC-C、TPC-H。了解这些基准测试的区别和应用场景,对于数据库选型和性能评估至关重要。

OLTP与OLAP的基本概念

数据库处理大致可分为两大类:OLTP和OLAP,它们分别对应不同的测试标准。

OLTP(联机事务处理)

全称:On-line Transaction Processing
特点:

  • 高并发且数据量级不大的查询
  • 主要用于管理事务的系统
  • 专注于short on-line-transactions如INSERT,UPDATE,DELETE操作

数据存储:

  • 以实体对象模型存储数据
  • 满足3NF(数据库第三范式)

OLAP(联机分析处理)

全称:On-line Analytical Processing
特点:

  • 查询频率较OLTP系统更低
  • 通常涉及非常复杂的聚合计算

数据存储:

  • 以维度模型存储历史数据
  • 主要存储描述性数据
  • 结构上都是同质的

TPC-C:OLTP基准测试

TPC-C于1992年7月获得批准,是针对OLTP的基准测试。
主要特点:

  • 混合五种不同类型的并发事务及其复杂性
  • 事务要么在线执行成功,要么排队等候延迟执行
  • 数据库由九种类型的表组成,具有广泛的数据记录和数据大小
  • 通过每分钟事务数(tpmC)来衡量性能

应用场景:
TPC-C基准测试描述了批发供应商的活动,不局限于特定的商业活动,而是代表了包含管理、销售、分发产品或者服务的任何行业。

TPC-H详细介绍

定位:
决策支持的基准测试
组成:
一套面向业务的即席查询和并发数据修改
特点:

  • 查询和填充数据库的数据具有广泛的行业相关性
  • 展示决策支持系统处理复杂查询的能力
  • 性能指标:TPC-H每小时综合查询性能指标(QphH@Size)

测试内容:

  • 8张表
  • 22个查询
  • 遵循SQL92标准

应用场景:
面向商品零售业的决策支持系统测试

使用TPCC进行简单测试

一、 benchmarksql配置部署

1、解压工具

tar zxvf bms.tar.gz
mv benchmarksql-5.0rc2-westone-v1.2 benchmarksql-5.0

2、修改jTPCC.java

vim benchmarksql-5.0/src/client/jTPCC.java
	if (iDB.equals("firebird"))dbType = DB_FIREBIRD;else if (iDB.equals("oracle"))dbType = DB_ORACLE;else if (iDB.equals("postgres"))dbType = DB_POSTGRES;else if (iDB.equals("kingbase"))dbType = DB_KINGBASE;else if (iDB.equals("oscar"))dbType = DB_OSCAR;else if (iDB.equals("dm"))dbType = DB_DM;else if (iDB.equals("kdb"))dbType = DB_KDB;else{log.error("unknown database type '" + iDB + "'");return;}

3、修改funcs.sh文件

cd   benchmarksql-5.0/run
vi funcs.sh
function setCP()
{case "$(getProp db)" infirebird)cp="../lib/firebird/*:../lib/*";;oracle)cp="../lib/oracle/*"if [ ! -z "${ORACLE_HOME}" -a -d ${ORACLE_HOME}/lib ] ; thencp="${cp}:${ORACLE_HOME}/lib/*"ficp="${cp}:../lib/*";;postgres)cp="../lib/postgres/*:../lib/*";;kingbase)cp="../lib/kingbase/*:../lib/*";;oscar)cp="../lib/oscar/*:../lib/*";;dm)cp="../lib/dm/*:../lib/*";;kdb)cp="../lib/kdb/*:../lib/*";;
EsacmyCP=".:${cp}:../dist/*"export myCP
}
# ----
# Make sure that the properties file does have db= and the value
# is a database, we support.
# ----
case "$(getProp db)" in
firebird|oracle|postgres|kingbase|oscar|dm|kdb)

4、在lib库中添加dameng目录,放置driver包

5、修改benchmarksql-5.0/run/runDatabaseBuild.sh,去掉AFTER_LOAD中的extraHistID

if [ $# -lt 1 ] ; thenecho "usage: $(basename $0) PROPS [OPT VAL [...]]" >&2exit 2
fi
PROPS="$1"
shift
if [ ! -f "${PROPS}" ] ; thenecho "${PROPS}: no such file or directory" >&2exit 1
fi
DB="$(grep '^db=' $PROPS | sed -e 's/^db=//')"
BEFORE_LOAD="tableCreates"
AFTER_LOAD="indexCreates foreignKeys extraHistID buildFinish"
for step in ${BEFORE_LOAD} ; do./runSQL.sh "${PROPS}" $step
done
./runLoader.sh "${PROPS}" $*
for step in ${AFTER_LOAD} ; do./ru

6、在/dm/dmsoft/benchmarksql-5.0/run中编辑props.dm文件,用于达梦压测参数

db=dm
driver=dm.jdbc.driver.DmDriver
conn=jdbc:dm://127.0.0.1:5236
user=benchmarksql
password=123456789
#数据库连接相关信息
warehouses=100
#压测的仓位数
loadWorkers=48
#加载的工作线程数
terminals=100
#并发的终端数
//To run specified transactions per terminal- runMins must equal zero
runTxnsPerTerminal=0
//To run for specified minutes- runTxnsPerTerminal must equal zero
#运行指定的分钟- runTxnsPerTerminal必须等于0
runMins=10
#执行时间
//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

二、导入数据

连接数据库,并执行SQL脚本导入数据,导入成功截图如下。
在这里插入图片描述

三、装载数据

进入到benchmarksql-5.0/run目录
执行命令:

./runLoader.sh props.dm numWarehouses 100

说明:newwarehoures表示仓库数 props.dm是达梦的配置参数文件
装载数据大约10分钟左右,装载成功截图如下:
在这里插入图片描述

四、创建索引和收集统计信息

连接数据库执行脚本创建索引,执行成功截图如下:
在这里插入图片描述

五、测试-数据预加载

如果是压力测试(数据都可以在内存放下),可以执行下面的语句,把数据预加载到内存:

select count(*) from "BENCHMARKSQL"."BMSQL_CUSTOMER" union all
select count(*) from "BENCHMARKSQL"."BMSQL_DISTRICT" union all
select count(*) from "BENCHMARKSQL"."BMSQL_ITEM" union all
select count(*) from "BENCHMARKSQL"."BMSQL_NEW_ORDER" union all
select count(*) from "BENCHMARKSQL"."BMSQL_OORDER" union all
select count(*) from "BENCHMARKSQL"."BMSQL_ORDER_LINE" union all
select count(*) from "BENCHMARKSQL"."BMSQL_STOCK" union all
select count(*) from "BENCHMARKSQL"."BMSQL_WAREHOUSE" union all
select count(*) from "BENCHMARKSQL"."BMSQL_HISTORY"  union all
select count("C_PAYMENT_CNT") from "BENCHMARKSQL"."BMSQL_CUSTOMER";

在这里插入图片描述

六、测试-开始测试

执行./runBenchmark.sh props.dm,执行过程截图如下:
在这里插入图片描述

执行结果如下图所示:
在这里插入图片描述

七、测试-清除数据

进入到benchmarksql-5.0/run目录

./runDatabaseDestroy.sh props.dm

在这里插入图片描述

http://www.lryc.cn/news/597885.html

相关文章:

  • 编程日常开发工具整理
  • 顺丰面试提到的一个算法题
  • C# 继承 虚方法
  • linux性能调整和故障排查
  • Python进阶知识之pandas库
  • 前端开发 React 状态优化
  • 面向对象分析与设计40讲(7)设计原则之合成复用原则
  • 前端实现可编辑脑图的方案
  • 网络编程初识(详细易懂)
  • 嵌入式linux下的NES游戏显示效果优化方案:infoNES显示效果优化
  • Python进阶知识之pandas库(一)基础数据类型
  • Android热修复实现方案深度分析
  • Android root和完整性检测实现方案深度分析
  • 海信IP501H-IP502h_GK6323处理器-原机安卓9专用-TTL线刷烧录可救砖
  • HTTPS证书体系,证书加密流程(通信体系)
  • lumerical——光纤布拉格光栅(Fiber Bragg gratings)
  • Linux 或者 Ubuntu 离线安装 ollama
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • pig cloud框架中引入websocket
  • 车载绝缘子放电状态检测系统数据分析软件需求说明书
  • python自动化测试框架,封装方法方式
  • WebGIS 常用坐标系
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(8):自動詞 & 他動詞 「~ている」「~ておく」「~てある」
  • 【西北工业大学公开课】导引系统原理(全61讲)周军 -个人笔记版 5000字
  • JVM、Dalvik、ART垃圾回收机制
  • 大模型就业方向
  • OpenCV(02)图像颜色处理,灰度化,二值化,仿射变换
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(3)
  • 解决sparksql创建出来的数据库路径错误的问题
  • VSCode 开发 STM32 - clangd 带来的极致补全体验