网易首页 > 网易号 > 正文 申请入驻

PostgreSQL技术大讲堂 - 第46讲:poc-tpch测试

0
分享至



PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

第46讲:POC-TPCH测试

内容1:TPC-H介绍

内容2:TPC-H测试部署

内容3:TPC-H报告

TPC背景介绍

TPC组织:

事务处理性能测试委员会TPC(Transaction process performance Council)是一个专门负责制定计算机事务处理能力测试标准并监督其执行的组织,其总部位于美国,针对数据库不同的使用场景TPC组织发布了多项测试标准,其中被业界广泛使用的有TPC-C 、TPC-E,TPC-H和TPC-DS,前两者应用到OLTP,后两者应用到OLAP场景。

OLTP与OLAP区别

联机事务处理OLTP(on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。高并发,高性能,且满足事务的ACID特性。

联机分析处理OLAP(On-Line Analytical Processing) 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。对实时性要求不高,数据量大



测试标准-OLAP

随着开源Hapdoop、Spark、HDFS、HBASE等技术的商用化,大数据管理技术得到了突飞猛进的发展,为了更客观地比较不同数据管理系统,TPC组织牵头制定了大数据测试基准TPC-H,TPC-DS,后者是TPC组织在TPC-H基础上的升级版本,下面介绍一下两者差异以及TPC-DS的SQL覆盖



TPC-H测试简介

TPC-H是事务处理性能委员会( Transaction ProcessingPerformance Council )制定的基准程序之一。

TPC- H 主要目的是评测数据库系统在统计分析、数据挖掘、分析处理等决策支持方面的能力。

该基准模拟了决策支持系统中的数据库操作,测试数据库系统复杂查询的响应时间,以每小时执行的查询数(TPC-H QphH@Siz)作为度量指标。

TPC-H基准模型中定义了一个数据库模型,容量可以在1GB~10000GB的8个级别中进行选择。数据库模型包括CUSTOMER、LINEITEM、NATION、ORDERS、PART、PARTSUPP、REGION和SUPPLIER 8张数据表。

模拟商品零售业决策支持系统的 22 个查询,涉及22条复杂的select查询流语句和2条带有insert和delete程序段的更新流语句。SQL涵盖了统计分组、排序、聚集操作、子查询、多表关联等复杂操作,可以测试各个查询的响应时间。

TPC-H查询语句简介

Q1语句是查询lineItems的一个定价总结报告

在单个表lineitem上查询某个时间段内,对已经付款的、已经运送的等各类商品进行统计,包括业务量的计费、发货、折扣、税、平均价格等信息。

Q1语句的特点是:带有分组、排序、聚集操作并存的单表查询操作。这个查询会导致表上的数据有95%到97%行被读取到。

Q2语句是查询最小代价供货商查询

Q2语句查询获得最小代价的供货商。得到给定的区域内,对于指定的零件(某一类型和大小的零件),哪个供应者能以最低的价格供应它,就可以选择哪个供应者来订货。

Q2语句的特点是:带有排序、聚集操作、子查询并存的多表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前100行(通常依赖于应用程序实现)。

Q3语句是查询运送优先级

Q3语句查询得到收入在前10位的尚未运送的订单。在指定的日期之前还没有运送的订单中具有最大收入的订单的运送优先级(订单按照收入的降序排序)和潜在的收入(潜在的收入为l_extendedprice * (1-l_discount)的和)。

Q3语句的特点是:带有分组、排序、聚集操作并存的三表查询操作。查询语句没有从语法上限制返回多少条元组,但是TPC-H标准规定,查询结果只返回前10行(通常依赖于应用程序实现)。

TPC-H测试部署

1、软件安装

$ unzip tpc-h-tools-2.17.3.zip

$ cd 2.17.3/

$ cd dbgen/

$ cp makefile.suite makefile

#编辑makefile (修改如下内容 (第 109行左右),下面内容区别大小写)

CC=gcc

DATABASE=ORACLE

MACHINE=LINUX

WORKLOAD=TPCH

#编译

$ make

2、产生数据模板

让我们使用dbgen工具生成数据-有一个重要的参数“scale”影响数据量。它大致相当于原始数据的GB数,所以要生成5GB的数据,注意当前是否有足够的空间。

./dbgen -s 5

它以类似于Oracle的CSV格式创建一堆.tbl文件,ls *.tbl查看。

3、要将它们转换为与PostgreSQL兼容的CSV格式,请执行以下操作

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

执行完成后可以把.tbl文件删除,否则占用空间,现在我们有八个CSV文件可以加载到数据库中。但我们必须先创造它。

4、安装pg_tpch_master软件,提供测试脚本:

unzip pg_tpch-master.zip

cd pg_tpch-master

cp -rf dss /soft/2.17.3/dbgen/ #/soft是存放tpch软件的目录,后面需要dss目录下的文件

5、创建数据库并加载数据

尽管TPC-H规范描述了数据库结构,但create脚本不是包的一部分。PG准备了一个创建所有表的创建脚本和一个创建外键的alter脚本(在填充数据库之后),需要先创建一个数据库tpch然后再创建表。

$ cd /soft/2.17.3/dbgen/dss

$ psql tpch < tpch-create.sql

把前面由八个.tbl 转化为CSV文件mv到当前路径的data目录下,data目录需要自己创建。

$ mkdir data

$ mv /soft/2.17.3/dbgen/*.csv data/

6、用生成的数据填充数据库

在/soft/2.17.3/dbgen/dss目录下创建脚本load.sql,加入如下内容:

dir=`pwd`/data

opts="-h localhost tpch"

psql $opts -c "COPY part FROM '$dir/part.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY region FROM '$dir/region.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY nation FROM '$dir/nation.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY supplier FROM '$dir/supplier.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY customer FROM '$dir/customer.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY partsupp FROM '$dir/partsupp.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY orders FROM '$dir/orders.csv' WITH (FORMAT csv, DELIMITER '|')"

psql $opts -c "COPY lineitem FROM '$dir/lineitem.csv' WITH (FORMAT csv, DELIMITER '|') "

#执行该脚本,导入数据:

sh load.sql

7、最后创建约束

psql tpch < tpch-pkeys.sql --先创建主键

psql tpch < tpch-alter.sql --创建外键

8、产生sql语句:

现在我们必须从TPC-H基准中指定的模板生成查询。在tpch.org上提供的模板不适合PostgreSQL。因此,在“dss/templates”目录中提供了稍加修改的查询,应该将这些查询放在“dss/querys”目录中。进入到dbgen目录下,(必须要在此目录中)

$ cd /soft/2.17.3/dbgen

--创建存放sql语句的目录:

$ mkdir dss/queries

--产生sql语句:

for q in `seq 1 22`

do

DSS_QUERY=dss/templates ./qgen $q >> dss/queries/$q.sql

sed 's/^select/explain select/' dss/queries/$q.sql > dss/queries/$q.explain.sql

cat dss/queries/$q.sql >> dss/queries/$q.explain.sql;

done

8、产生sql语句(续):

现在,dss/querys目录中应该有44个文件。其中22个将实际运行查询,另外22个将生成查询的解释计划(不实际运行)。

自此,数据加载完成,同时产生sql语句,可以调用里面的sql语句执行。

9、产生工作负载集

--从查询模板中把22个查询集中产生一个压力测试的sql脚本:

DSS_QUERY=dss/queries ./qgen > dss/workload.sql

--指定某些查询模板产生工作负载集:

DSS_QUERY=dss/queries ./qgen 1 2 3 > dss/1_2_3_workload.sql

9、产生工作负载集

--指定1-10的查询模板产生工作负载集:

for r in `seq 1 10`

do

rn=$((`cat /dev/urandom|od -N3 -An -i` % 10000))

DSS_QUERY=dss/queries ./qgen -r $rn >> dss/1_to_10_workload.sql

done

10、执行压力测试脚本

前面我们以及生成了数据集,产生了压力测试的脚本,接下来需要去执行它,执行的方式有很多种,根据实际测试的要求去运行。

--简单的执行测试脚本,可以执行如下命令:

psql tpch < workload.sql

这个查询只是产生工作量,没有产生有关统计分析后的信息。

10、执行压力测试脚本

--生成一组结果日志,其中包含每个工作负载的秒数。从各种工具(iostat、vmstat等等)收集数据。

先准备workload-1.sql-workload-4.sql 4个脚本,然后再写一个脚本,调用该脚本:

DSS_QUERY=dss/queries ./qgen 1 > dss/workload-1.sql #根据这个命令产生1-4的压力脚本

#start the processes

for c in `seq 1 4`

do

/usr/bin/time -f "total=%e" -o result-$c.log \

psql tpch < workload-$c.sql > /dev/null 2>&1 &

done;

# wait for the processes

for p in `jobs -p`

do

wait $p;

done;

结合JeMeter产生测试报告



CUUG PostgreSQL技术大讲堂系列公开课第46讲-POC-TPCH测试的内容,往期视频及文档,请联系CUUG。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
香港机场以前只有两条跑道,却是世界第一大货运机场,效率真是高

香港机场以前只有两条跑道,却是世界第一大货运机场,效率真是高

作家李楠枫
2024-04-30 22:09:15
日元崩盘!全球薅日本羊毛,没想到竟是中国人被迫为日本买单

日元崩盘!全球薅日本羊毛,没想到竟是中国人被迫为日本买单

汪蹦跶啦
2024-04-30 19:26:21
英国突发!首相:震惊

英国突发!首相:震惊

环球时报新闻
2024-04-30 22:36:04
她被称为中国黄金身材,巅峰期退圈结婚,丈夫身份特殊到不方便说

她被称为中国黄金身材,巅峰期退圈结婚,丈夫身份特殊到不方便说

简读视觉
2024-04-11 20:00:03
常吃鸡蛋,长寿不会远离你!但这2类人要记住,最好不要吃

常吃鸡蛋,长寿不会远离你!但这2类人要记住,最好不要吃

熊猫医学社
2024-04-29 10:45:03
冯琳:上了《新闻联播》,系主持人大赛结束127天的“央视首秀”

冯琳:上了《新闻联播》,系主持人大赛结束127天的“央视首秀”

晓今娱
2024-05-01 00:05:32
俄乌战争,大帝的梦想摧毁了一切,多数人看不懂

俄乌战争,大帝的梦想摧毁了一切,多数人看不懂

论鉴
2024-03-05 18:35:40
撑队友!球迷问石柯,王大雷:都为泰山流过汗受过伤,你说怎么样

撑队友!球迷问石柯,王大雷:都为泰山流过汗受过伤,你说怎么样

直播吧
2024-05-01 09:26:19
詹杜库陷入泥潭之中 他们三人新赛季会成为队友吗?

詹杜库陷入泥潭之中 他们三人新赛季会成为队友吗?

直播吧
2024-05-01 12:27:14
4强将出炉 斯诺克世锦赛5月1日赛程公布:特鲁姆普奥沙利文再出战

4强将出炉 斯诺克世锦赛5月1日赛程公布:特鲁姆普奥沙利文再出战

草根体育
2024-05-01 06:28:08
阿根廷总统慷慨激昂地说:凡是享受特权的人,都是人民的敌人

阿根廷总统慷慨激昂地说:凡是享受特权的人,都是人民的敌人

小白兔趣闻
2024-04-11 20:07:55
一夜成名的饭局!990万迈巴赫背后的“沉默成本”我笑死在评论区

一夜成名的饭局!990万迈巴赫背后的“沉默成本”我笑死在评论区

户外小阿隋
2024-05-01 09:43:06
乌云其木格同志逝世

乌云其木格同志逝世

新京报
2024-04-30 19:03:17
乌克兰列出了克里米亚多达 200 个的军事设施清单:必须全部摧毁

乌克兰列出了克里米亚多达 200 个的军事设施清单:必须全部摧毁

探索星空
2024-04-30 12:03:05
广州的这场暴雨,撕掉新能源汽车的遮羞布,车主是苦不堪言

广州的这场暴雨,撕掉新能源汽车的遮羞布,车主是苦不堪言

户外小阿隋
2024-04-30 11:30:31
被针对?郭楠执法辽粤大战G1,宏远再添一坏消息,辽宁或得开门红

被针对?郭楠执法辽粤大战G1,宏远再添一坏消息,辽宁或得开门红

刘哥谈体育
2024-05-01 11:54:38
问界M7车祸一事已协商好,家属表示不愿再被打扰

问界M7车祸一事已协商好,家属表示不愿再被打扰

映射生活的身影
2024-04-30 10:07:17
买超,被曝出大瓜!

买超,被曝出大瓜!

一个小小人物
2024-04-29 11:13:06
土耳其归还当年“辽宁号”的10亿过路费,恳请中方加大投资!

土耳其归还当年“辽宁号”的10亿过路费,恳请中方加大投资!

星辰故事屋
2024-03-31 11:04:14
乌军使用ATACMS导弹再袭克里米亚,未来两周克里米亚大桥面临风险

乌军使用ATACMS导弹再袭克里米亚,未来两周克里米亚大桥面临风险

山河路口
2024-04-28 21:43:35
2024-05-01 13:06:44
CUUG
CUUG
北京神脑资讯技术有限公司
462文章数 20关注度
往期回顾 全部

科技要闻

余承东卸任华为终端CEO 新任命为董事长

头条要闻

问界M7事故砸窗救人男子:若早1分钟我能把3人都拽出来

头条要闻

问界M7事故砸窗救人男子:若早1分钟我能把3人都拽出来

体育要闻

"意甲最佳"金玟哉 踢回了中超水平...

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

俞敏洪,踏足A股!

汽车要闻

预售2.89-3.49万 奔腾小马正式开启预售

态度原创

本地
亲子
教育
健康
军事航空

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

亲子要闻

再不穿背带裤就长大了,可爱

教育要闻

北京市小学数学竞赛题,求正方形边长,答对的寥寥无几

春天野菜不知不识莫乱吃

军事要闻

以官员:以总理求助拜登阻止逮捕令

无障碍浏览 进入关怀版