聊聊数仓中TPCD-DS&TPC-H与查询性能的那些事儿
摘要:详细讲述使用GaussDB(DWS)时,如何使用TPC-DS/TPC-H等标准数据模型,获取DWS的查询性能数据。
本文分享自华为云社区《GaussDB(DWS) 《DWS之TPCD-DS&TPC-H与查询性能的那些事儿》》,作者: 一剑战八荒 。
1 综述
本文目标在于,详细讲述使用GaussDB(DWS)时,如何使用TPC-DS/TPC-H等标准数据模型,获取DWS的查询性能数据。主要包括,整体流程概述,DWS集群和ECS弹性云服务器环境准备,TPC-DS/TPC-H造数,建表与数据导入,执行查询与结果收集四个章节。
受限于编辑器的显示,为了更好地阅读效果,烦请下载附件的原版文档查看,获取相关脚本。
其中涉及的很多操作细节无法一一展开叙述,以梳理和展示整体的逻辑为主。其中主要涉及的工具OBS/GDS/JDBC copy后续会单独开篇叙述。若有无法解决的疑问,欢迎评论留言。
2 整体流程概述

3 DWS集群和ECS弹性云服务器环境准备
3.1 创建ECS弹性云服务器

3.2 创建DWS数据仓库

4 TPC-DS/TPC-H造数
4.1 准备数据生成工具
- 远程连接ECS弹性云
- 执行 yum install git,安装git
- 执行 yum install gcc,安装gcc
- 执行 mkdir –p /data1/script/tpcds-kit/tpcds1000X ; mkdir –p /data1/script/tpch-kit/tpch100X 创建tpc-ds或者tpc-h的存放目录
- TPC-DS造数工具dsdgen请从官网获取最新版本。
通过FTP或者OBS服务上传到ECS的 /data1/script/tpcds-kit;(OBS使用方法详见附录1)
TPC-H造数工具可直接git clone下载。
cd /data1/script/tpch-kit;
git clone https://github.com/gregrahn/tpch-kit.git
- 解压tpch的包,进入dbgen目录,make 编译对应的造数工具dbgen
- 解压tpcds的包,进入tools目录,make 编译对应的造数工具dsdgen
4.2 生成数据文件
- 生成TPCH数据文件
进入dbgen目录后,执行./dbgen –s 100 > ./dbgen_100.log 2>&1 &,下发生成100Xtpch数据的命令到后台执行
可以通过du –sh dbgen/*.tbl,判断数据文件的生成进度。100Xtpch数据文件总大小约107GB,
也可以通过ps ux|grep dbgen,查看生成数据文件的进程是否退出
- 生成TPCDS数据文件
因为tpcds1000X的数据,单个标的数据文件较大,我们采取分片生成的策略。
进入tools目录后,执行
for c in {1..10};do (./dsdgen –sc 1000 –parallel 10 –child ${c} –dir /data1/script/tpcdsk-kit/tpcds1000X > /dev/null 2>&1 &);done
其中,
-sc 指定数据规模
-parallel 指定分片数
-child 指定当前是生成分片中的第几片
-dir 指定生成数据文件存放的目录
可以通过du –sh tpcds100X/*.dat,判断数据文件的生成进度。1000Xtpcds数据文件总大小约920GB,
也可以通过ps ux|grep dsdgen,查看生成数据文件的进程是否退出。
5 建表与数据导入
5.1 GDS方式导入
5.1.1 从数据仓库服务的连接管理页面下载ECS对应版本的gsql客户端,通过ftp或obs上传到ECS上;(OBS使用方法详见附录1)

5.1.2 在ECS上部署GDS,详见华为云官方资料https://support.huaweicloud.com/tg-dws/dws_07_0759.html
5.1.3 在ECS上通过gsql工具连接集群,连接群集群所需的ip和端口号信息,可以从数据仓库服务的连接管理页面获取

5.1.4 在ECS上使用gsql连接集群,创建tpch/tpcds的内表和gds外表。建表语句详见如下sql文件,
5.1.5 在ECS使用gsql连接集群,通过GDS外表,使用insert into [目标表] select * from [目标表外表]的方式导入数据到集群内。
5.2 JDBC copy方式导入
5.2.1 从数据仓库服务的连接管理页面下载ECS对应版本的JDBC驱动,通过ftp或obs上传到ECS上;(OBS使用方法详见附录1)

5.2.2 上传JDBC驱动和copy的java脚本到ECS,此处提供dws_copy.java源码
5.2.3 在ECS上javac编译java文件,然后生成copy编译后源码和JDBC驱动的jar包,Copy.jar。编译和生成jar包详细流程如下图,

5.2.4 在ECS上java –jar Copy.jar通过JDBC copy数据到集群内。
可执行源码和二次封装的shell JDBC导数执行脚本详见如下压缩包
6 执行查询与结果收集
6.1通过编写shell脚本自动化执行查询和结果收集。
脚本压缩包如下,其中包含query.conf和run_query.sh两个文件。
query.conf为集群信息配置文件,包含如下四个变量
db_name=tpcds_test 数据库名称
db_port=6000 数据库端口号
db_user=tpcds_user 数据库用户
user_passwd=Gauss_234 数据库用户密码
编辑query.conf为集群对应的信息后,执行sh run_query.sh即可开始查询执行和结果收集。
注意事项:
- gsql客户端的使用需要每次连接后,source gsql_env,执行查询脚本前请确认gsql可执行;
- 每个查询会跑6次,一次收集执行计划,两次预热,三次正式查询,最终结果取后三次查询的平均值;
- 查询脚本执行后会立即生成query_log_yymmdd_hhmmss名称的目录,其中
exlain_log子目录存放查询计划,
pre_warm子目录存放预热执行结果,
real_test子目录存放正式查询执行结果,
query_result.csv文件,csv格式汇总所有查询的执行结果,csv中结果实例如下图

7 附录
7.1 华为云OBS官方使用指导
https://support.huaweicloud.com/browsertg-obs/obs_03_1000.html
聊聊数仓中TPCD-DS&TPC-H与查询性能的那些事儿的更多相关文章
- 在HUE中将文本格式的数据导入hive数仓中
今天有一个需求需要将一份文档形式的hft与fdd的城市关系关系的数据导入到hive数仓中,之前没有在hue中进行这项操作(上家都是通过xshell登录堡垒机直接连服务器进行操作的),特此记录一下. - ...
- Hive 数仓中常见的日期转换操作
(1)Hive 数仓中一些常用的dt与日期的转换操作 下面总结了自己工作中经常用到的一些日期转换,这类日期转换经常用于报表的时间粒度和统计周期的控制中 日期变换: (1)dt转日期 to_date(f ...
- 一文读懂数仓中的pg_stat
摘要:GaussDB(DWS)在SQL执行过程中,会记录表增删改查相关的运行时统计信息,并在事务提交或回滚后记录到共享的内存中.这些信息可以通过 "pg_stat_all_tables视图& ...
- 使用Oozie中workflow的定时任务重跑hive数仓表的历史分期调度
在数仓和BI系统的开发和使用过程中会经常出现需要重跑数仓中某些或一段时间内的分区数据,原因可能是:1.数据统计和计算逻辑/口径调整,2.发现之前的埋点数据收集出现错误或者埋点出现错误,3.业务数据库出 ...
- HAWQ取代传统数仓实践(十九)——OLAP
一.OLAP简介 1. 概念 OLAP是英文是On-Line Analytical Processing的缩写,意为联机分析处理.此概念最早由关系数据库之父E.F.Codd于1993年提出.OLAP允 ...
- 基于MaxCompute的数仓数据质量管理
声明 本文中介绍的非功能性规范均为建议性规范,产品功能无强制,仅供指导. 参考文献 <大数据之路——阿里巴巴大数据实践>——阿里巴巴数据技术及产品部 著. 背景及目的 数据对一个企业来说已 ...
- 【企业流行新数仓】Day01:新版本对比、业务和表的介绍☆、Hive、ODS层、DWD层
一.2.0版本对比 二.业务介绍 1.术语 SKU SPU UV: user views 用户浏览总量[浏览量] PV:page views 页面浏览总量 2.电商业务表结构 表名 同步方式 字段名 ...
- 数仓建设中最常用模型--Kimball维度建模详解
数仓建模首推书籍<数据仓库工具箱:维度建模权威指南>,本篇文章参考此书而作.文章首发公众号:五分钟学大数据,公众号中发送"维度建模"即可获取此书籍第三版电子书 先来介绍 ...
- 数仓选型必列入考虑的OLAP列式数据库ClickHouse(中)
实战 案例使用 背景 ELK作为老一代日志分析技术栈非常成熟,可以说是最为流行的大数据日志和搜索解决方案:主要设计组件及架构如下: 而新一代日志监控选型如ClickHouse.StarRocks特别是 ...
- HAWQ取代传统数仓实践(十六)——事实表技术之迟到的事实
一.迟到的事实简介 数据仓库通常建立于一种理想的假设情况下,这就是数据仓库的度量(事实记录)与度量的环境(维度记录)同时出现在数据仓库中.当同时拥有事实记录和正确的当前维度行时,就能够从容地首先维护维 ...
随机推荐
- 洛谷P1990
这是一道dp的题,好像也不算dp.需要递推,感觉能训练思维!!!很棒的一道题. 覆盖墙壁 关于这道题的分析 状态表示:f[i][0]表示前i列全部填满的所有方案,f[i][1]表示前i列全部填满缺一个 ...
- 创建一个自己的 Linux系统
简单来说就是一个文件传递的机制,首先创建/安装一个硬盘,然后把前硬盘中的一部分文件先转移到Linux系统上,再通过Linux系统转移到创建的新硬盘,之后用虚拟机,把新硬盘装在其中,就可以在新硬盘上做到 ...
- STM32 定时器时钟配置技巧
众所周知 STM32 的时钟配置比较复杂,而定时器的时钟配置更是 '奇葩'. 如下图(截图自STM32F4编程手册)APB的预分频器分频系数如果不为1,则定时器的时钟就倍频了反而. 配置技巧 下面以S ...
- C/C++ 运用Npcap发送UDP数据包
Npcap 是一个功能强大的开源网络抓包库,它是 WinPcap 的一个分支,并提供了一些增强和改进.特别适用于在 Windows 环境下进行网络流量捕获和分析.除了支持通常的网络抓包功能外,Npca ...
- DevOps|研发提效-敏捷开发之每日站立会
对于研发效能团队建设和组织,本文不再赘述,可以参考之前的文章,已经讲得很透彻了.本文重点讲我们日常是怎么开站立会,怎么让团队跑起来,高效能产出的.每日站立会,15分钟到30分钟,看似非常短的一个会,但 ...
- STA分析-复制
1 静态时序分析(Static Timing Analysis)静态时序分析(Static Timing Analysis):静态执行对于数字设计时序的分析,不依赖于施加在输入端口上的激励,验证设计是 ...
- 一招MAX降低10倍,现在它是我的了
一.背景 性能优化是一场永无止境的旅程. 到家门店系统,作为到家核心基础服务之一,门店C端接口有着调用量高,性能要求高的特点. C端服务经过演进,核心接口先查询本地缓存,如果本地缓存没有命中,再查询R ...
- MySQL账号锁定与解锁
MySQL提供了多种方法来锁定解锁账号,下面是几种常用的方法: 1.使用ALTER语句锁定账号 锁定账号: ALTER USER 'username'@'localhost' ACCOUNT LOCK ...
- java注释、变量、数据类型和运算符
注释 单行注释:// 多行注释:/*开头,*/结尾 JavaDoc注释:/**开头,*/结尾 快捷键:ctrl + ? 变量 第一步:声明变量.即根据数据类型在内存分配空间. 第二步:赋值.即将数据的 ...
- 为什么要重写equals()?
为什么要重写equals()? Equals和 == 的区别: ==:是个运算符, 判断是否相等,基本数据类型进行判断 也可判断两个对象相等,比较两个对象的哈希码值 Equals:是个Object类的 ...