【openGauss/MogDB的TPCH测试】

TPC-H是一个决策支持基准(Decision Support Benchmark),它由一套面向业务的特别查询和并发数据修改组成。查询和填充数据库的数据具有广泛的行业相关性。这个基准测试演示了检查大量数据、执行高度复杂的查询并回答关键业务问题的决策支持系统。TPC-H报告的性能指标称为TPC-H每小时复合查询性能指标(QphH@Size),反映了系统处理查询能力的多个方面。这些方面包括执行查询时所选择的数据库大小,由单个流提交查询时的查询处理能力,以及由多个并发用户提交查询时的查询吞吐量。

TPC-H 测试标准模拟了一个零部件在线销售的系统,共定义了8个表:

表名称说明
REGION区域表
NATION国家表
SUPPLIER供应商表
PART零部件表
PARTSUPP零部件供应表
CUSTOMER客户表
ORDERS订单表
LINEITEM订单明细表

对应测试有22条SQL,涉及不同类型的业务。

查询语句说明主要涉及业务
Q1价格统计报告查询带有分组、排序、聚集操作并存的单表查询操作。这个查询会导致表上的数据有95%到97%行被读取到。
Q2最小代价供货商查询带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。
Q3运送优先级查询带有分组、排序、聚集操作并存的三表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前10行(通常依赖于应用程序实现)。
Q4订单优先级查询带有分组、排序、聚集操作、子查询并存的单表查询操作。子查询是相关子查询。
Q5本地供应商收入量查询带有分组、排序、聚集操作、子查询并存的多表连接查询操作。
Q6预测收入变化查询带有聚集操作的单表查询操作。查询语句使用了BETWEEN-AND操作符,有的数据库可以对BETWEEN-AND进行优化。
Q7批量出货查询带有分组、排序、聚集、子查询操作并存的多表查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询。
Q8国家市场份额查询带有分组、排序、聚集、子查询操作并存的查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询,但子查询自身是多表连接的查询。
Q9产品类型利润估量查询带有分组、排序、聚集、子查询操作并存的查询操作。子查询的父层查询不存在其他查询对象,是格式相对简单的子查询,但子查询自身是多表连接的查询。子查询中使用了LIKE操作符,有的查询优化器不支持对LIKE操作符进行优化。
Q10货运存在问题的查询带有分组、排序、聚集操作并存的多表连接查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前10行(通常依赖于应用程序实现)。
Q11库存价值查询带有分组、排序、聚集、子查询操作并存的多表连接查询操作。子查询位于分组操作的HAVING条件中。
Q12货运模式和订单优先级查询带有分组、排序、聚集操作并存的两表连接查询操作。
Q13消费者订单数量查询带有分组、排序、聚集、子查询、左外连接操作并存的查询操作。
Q14促销效果查询带有分组、排序、聚集、子查询、左外连接操作并存的查询操作。
Q15头等供货商查询带有分排序、聚集、聚集子查询操作并存的普通表与视图的连接操作。
Q16零件/供货商关系查询带有分组、排序、聚集、去重、NOT IN子查询操作并存的两表连接操作。
Q17小订单收入查询带有聚集、聚集子查询操作并存的两表连接操作。
Q18大订单顾客查询带有分组、排序、聚集、IN子查询操作并存的三表连接操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。
Q19折扣收入查询带有分组、排序、聚集、IN子查询操作并存的三表连接操作。
Q20供货商竞争力查询带有排序、聚集、IN子查询、普通子查询操作并存的两表连接操作。
Q21供应商留单等待查询带有分组、排序、聚集、EXISTS子查询、NOT EXISTS子查询操作并存的四表连接操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。
Q22全球销售机会查询带有分组、排序、聚集、EXISTS子查询、NOT EXISTS子查询操作并存的四表连接操作。

如下是openGaus/MogDB测试TPCH的流程。可供参考:

上传TPCH的工具包

链接: https://pan.baidu.com/s/1REqknBiMWtkE5ECbQPXJzg 提取码: qjbc

一、创建压测的数据库和用户

MogDB=# create database tpch_db;
CREATE DATABASE
MogDB=# create user tpch with password 'Abcd@1234' sysadmin;
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
MogDB=# alter database tpch_db owner to tpch ;
ALTER DATABASE
tpch_db=# alter schema public owner to tpch ;
ALTER SCHEMA

二、建测试表

gsql -p 23000 -d tpch_db -U tpch < createtab_og.sql

Pasted Graphic 2.png

image.png

三、编译dbgen软件

解压TPCH的包,进入dbgen的目录

1.修改makefile文件

[om3@lmt0003 TPC-H_Tools_v3.0.0]$ pwd
/home/om3/TPCH-openGauss-TestTools/TPCH-openGauss-TestTools/TPC-H_Tools_v3.0.0
[om3@lmt0003 TPC-H_Tools_v3.0.0]$ cd dbgen/
[om3@lmt0003 dbgen]$ ls
answers     build.c          dists.dss  dsstypes.h      permute.h      queries    rnd.h         tests     tpch.vcproj
bcd2.c      check_answers    driver.c   HISTORY         PORTING.NOTES  README     rng64.c       text.c    update_release.sh
bcd2.h      column_split.sh  dss.ddl    load_stub.c     print.c        reference  rng64.h       tpcd.h    variants
bm_utils.c  config.h         dss.h      makefile.suite  qgen.c         release.h  shared.h      tpch.dsw  varsub.c
BUGS        dbgen.dsp        dss.ri     permute.c       qgen.vcproj    rnd.c      speed_seed.c  tpch.sln
[om3@lmt0003 dbgen]$ cp makefile.suite makefile
[om3@lmt0003 dbgen]$ vi makefile

Pasted Graphic 4.png

修改其中103到112行

image.png

2.修改tpcd.h

[om3@lmt0003 dbgen]$ vi tpcd.h 

在文件末尾加上

#ifdef POSTGRESQL
#define GEN_QUERY_PLAN  "EXPLAIN PLAN"
#define START_TRAN      "SET TRANSACTION"
#define END_TRAN        "COMMIT;"
#define SET_OUTPUT      ""
#define SET_ROWCOUNT    "LIMIT %d\n"
#define SET_DBASE      ""
#endif

修改完编译配置文件,可以编译出程序
3.编译dbgen

[om3@lmt0003 dbgen]$ make -f makefile

image.png

image.png

参数说明:
-v:详细信息
-f:覆盖之前的文件
-s:生成数据大小,单位GB
-C参数:表示把生成的数据分为几份
-S参数:切分数据用,表示第几个文件,例如:“-S 1”表示第1个文件,“-S 2”表示第2个文件

四、生成数据

例:
1.生成1G数据

./dbgen vf -s 1

image.png

image.png

生成8个tbl文件,对应8张表的数据。

也可以使用多个线程产生数据,加块速率。例:8线程生成500G数据

#!/bin/sh
./dbgen -vf -s 500 -S 1 -C 8 &
./dbgen -vf -s 500 -S 2 -C 8 &
./dbgen -vf -s 500 -S 3 -C 8 &
./dbgen -vf -s 500 -S 4 -C 8 &
./dbgen -vf -s 500 -S 5 -C 8 &
./dbgen -vf -s 500 -S 6 -C 8 &
./dbgen -vf -s 500 -S 7 -C 8 &
./dbgen -vf -s 500 -S 8 -C 8 &

2.转换数据(把tbl文件转换为csv文件)

for i in `ls *.tbl`;do sed 's/|$//' $i > ${i/tbl/csv};echo $i;done;

image.png

五、导入数据

创建脚本,导入数据

[om3@lmt0003 dbgen]$ vi copyin_tpch_db.sh 

下面需要修改的部分为dir和opts部分,dir为上述csv的路径。opts是gsql后需要加的参数,包含端口,数据库名等,sch是指定schema。

dir=/home/om3/TPCH-openGauss-TestTools/TPCH-openGauss-TestTools/TPC-H_Tools_v3.0.0/dbgen
opts='-p 23000 -d tpch_db'
sch=publicgsql $opts -c "COPY $sch.region FROM '$dir/region.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.nation FROM '$dir/nation.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.part FROM '$dir/part.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.supplier FROM '$dir/supplier.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.customer FROM '$dir/customer.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.partsupp FROM '$dir/partsupp.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.orders FROM '$dir/orders.csv' WITH (FORMAT csv,DELIMITER '|')"
gsql $opts -c "COPY $sch.lineitem FROM '$dir/lineitem.csv' WITH (FORMAT csv,DELIMITER '|')"

image.png

六、创建所需函数

create or replace function NUMTOYMINTERVAL(float8, text) returns interval as $$ select ($1||' '||$2)::interval;  
$$ language sql strict immutable;create or replace function NUMTODSINTERVAL(float8, text) returns interval as $$ select ($1||' '||$2)::interval;  
$$ language sql strict immutable;

image.png

七、执行SQL文件夹下SQL(共22种SQL)

image.png

如下是遍历执行全部22种SQL的脚本

#!/bin/bash
opts='-p 23000 -d tpch_db -U tpch -W 'Abcd@1234''
for i in `seq 1 22`
do
echo $i"'s  result"
gsql ${opts} -f ${i}.sql
done

image.png

可以将8张表的导入耗时以及22种SQL的执行耗时记录下来,并做相应对比(测表导入耗时可以copy前开启\timing)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/149694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用python下的matplotlib库绘制能突出显示的饼状图

需求描述 根据已有的数据绘制一个占比图&#xff0c;期望能对其中的部分占比成分进行突出显示。 原始数据如下&#xff1a; 国外投资&#xff08;5%&#xff09;、公司投资&#xff08;8%&#xff09;、地方投资&#xff08;7%&#xff09;、中央财政&#xff08;80%&#xff…

Unity 中 TextMesh Pro 认识学习

TextMesh Pro User Guide | TextMeshPro | 3.0.6官方文档 有两个 TextMesh Pro 组件可用。 第一个 TMP 文本组件的类型为 <TextMeshPro> 旨在与 MeshRenderer 配合使用。该组件是旧版 TextMesh 组件的理想替代品。 要添加新的 <TextMeshPro> 文本对象&#xff…

vs2017打开工程提示若要解决此问题,请使用以下选择启动 Visual Studio 安装程序: 用于 x86 和 x64 的 Visual C++ MFC

下载安装文件。 下载之后点击C项目&#xff0c;他会提示需要安装编译依赖。这个时候需要选择 用于 x86 和 x64 的 Visual C MFCWindows SDK 版本8.1 点击右下角的安装等待即可 error MSB8036: 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页…

R语言:利用biomod2进行生态位建模

在这里主要是分享一个不错的代码&#xff0c;喜欢的可以慢慢研究。我看了一遍&#xff0c;觉得里面有很多有意思的东西&#xff0c;供大家学习和参考。 利用PCA轴总结的70个环境变量&#xff0c;利用biomod2进行生态位建模&#xff1a; #------------------------------------…

.NET 8 正式 GA 遥遥领先

.NET 8 一正式 已正式 GA。 微软称 .NET 8 提供了数以千计的性能、稳定性和安全性改进&#xff0c;以及平台和工具增强功能&#xff0c;有助于提高开发者的工作效率和创新速度。 比如 .NET 8 为 Android 和 WASM 引入了全新的 AOT 模式、改进 System.Text.Json&#xff0c;以…

Spark 平障录

Profile Profile 是最重要的第一环。 利用好 spark UI 和 yarn container log分析业务代码&#xff0c;对其计算代价进行预判建设基准&#xff0c;进行对比&#xff0c;比如application id 进行对比&#xff0c;精确到 job DAG 环节 充分利用 UI Stage 页面 页头 summary&…

Python编程基础(华为在线课程)

一、免费课程链接 https://e.huawei.com/cn/talent/outPage/#/sxz-course/home?courseId3mCm7X8-UyWyS6pioCSJeUI0yFo 二、学习环境搭建 1、下载anaconda&#xff08;python3.7版本&#xff09; 清华镜像地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/anacond…

在通用jar包中引入其他spring boot starter,并在通用jar包中直接配置这些starter的yml相关属性

场景 我在通用jar包中引入 spring-boot-starter-actuator 这样希望引用通用jar的所有服务都可以直接使用 actuator 中的功能&#xff0c; 问题在于&#xff0c;正常情况下&#xff0c;actuator的配置都写在每个项目的yml文件中&#xff0c;这就意味着&#xff0c;虽然每个项目…

数据结构与算法编程题3

长度为n的顺序表&#xff0c;删除线性表所有值为x的元素&#xff0c;使得时间复杂度为O(n)&#xff0c;空间复杂度为O(1) #include <iostream> using namespace std;typedef int ElemType; #define Maxsize 100 #define OK 1 #define ERROR 0 typedef struct SqList {E…

CorelDraw2024(CDR)- 矢量图制作软件介绍

在当今数字化时代&#xff0c;平面设计已成为营销、品牌推广和创意表达中不可或缺的元素。平面设计必备三大软件Adebo PhotoShop、CorelDraw、Adobe illustrator, 今天小编就详细介绍其中之一的CorelDraw软件。为什么这款软件在设计界赢得了声誉&#xff0c;并成为了设计师的无…

Ubuntu——卸载、安装CUDA

【注】WSL的Ubuntu是不用安装CUDA的&#xff0c;因为它使用的是Windows的显卡驱动&#xff0c;所以如果WSL的CUDA出了问题&#xff0c;重新安装WSL即可&#xff01; 1、卸载 安装完CUDA后&#xff0c;会提示如果要卸载CUDA可以使用下列方法。 首先终端进入cuda-uninstaller所…

LeetCode【92】翻转链表II

题目&#xff1a; 思路&#xff1a; https://blog.csdn.net/DarkAndGrey/article/details/122146216 public ListNode reverseBetween(ListNode head, int left, int right) {if(head null || right left){return head;// 头节点为null&#xff0c;链表为空&#xff0c;反…

微服务学习|Nacos配置管理:统一配置管理、配置热更新、配置共享、搭建Nacos集群

统一配置管理 在微服务当中&#xff0c;提供一个配置中心来将一些配置提取出来&#xff0c;进行统一的使用&#xff0c;Nacos既可以充当注册中心&#xff0c;也提供配置中心的功能。 1.在Nacos中添加配置文件 在Nacos控制台&#xff0c;我们可以在配置管理中&#xff0c;添加…

【latex】公式推导等号对齐

使用aligned进行多行公式对齐&#xff0c;&作为对齐的节点&#xff0c;\作为公式换行 \begin{equation} \begin{aligned}a& bc \\& cd \end{aligned} \end{equation}

echarts 中如何添加左右滚动条 数据如何进行堆叠如何配置那些数据使用那个数据轴

左右滚动条的效果 此项的具体配置可参考 https://echarts.apache.org/zh/option.html#dataZoom-inside.moveOnMouseWheel dataZoom: [{id: dataZoomX,type: inside,// start: 0,// end: this.xAxis.length > 5 ? 10 : 100,startValue: this.xAxis.length > 5 ? 5 : 0,/…

新版mmdetection3d将3D bbox绘制到图像

环境信息 使用 python mmdet3d/utils/collect_env.py收集环境信息 sys.platform: linux Python: 3.7.12 | packaged by conda-forge | (default, Oct 26 2021, 06:08:21) [GCC 9.4.0] CUDA available: True numpy_random_seed: 2147483648 GPU 0,1: NVIDIA GeForce RTX 3090 …

map与set的封装

目录 红黑树的结点 与 红黑树的迭代器 红黑树的实现&#xff1a; 迭代器&#xff1a; ​编辑 红黑树的查找&#xff1a; 红黑树的插入&#xff1a; ​编辑 检查红色结点&#xff1a;​编辑红黑树的左旋 ​编辑红黑树的右旋 ​编辑红黑树的双旋 Map的封装 ​编辑set的…

【数据结构&C++】超详细一文带小白轻松全面理解 [ 二叉平衡搜索树-AVL树 ]—— [从零实现&逐过程分析&代码演示简练易懂]

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.AVL树的概念二.AVL树节点的定义(代码…

Android自动化测试,5个必备的测试框架

Appium Appium是一个开源的移动测试工具&#xff0c;支持iOS和Android&#xff0c;它可以用来测试任何类型的移动应用&#xff08;原生、网络和混合&#xff09;。作为一个跨平台的工具&#xff0c;你可以在不同的平台上运行相同的测试。为了实现跨平台的功能&#xff0c;Appi…

linux高级篇基础理论五(用户安全,口令设置,JR暴力破解用户密码,NMAP端口扫描)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…