Greenplum使用TPC-H测试过程及结果

Greenplum使用TPC-H性能测试过程及结果

·TPC-H 介绍

·1 Greenplum集群硬件信息

·2 Greenplum 集群架构信息

·3 TPC-H 软件环境搭建

o3.1 TPC-H软件下载

o3.2 编译TPC-H软件

§3.2.1 给文件添加执行权限

§3.2.2 生成Makefile文件

§3.2.3 Makefile文件

§3.2.4 编译TPC-H

§3.2.5 TPC-H查看帮助

·4 Greenplum测试步骤

o4.1 生成测试数据

§4.1.1 生成50G第一批测试数据

§4.1.2 生成200G第二批测试数据

o4.2 查看生成的测试数据

§4.2.1 查看每个表的含义信息

§4.2.2 查看消费者(customer)信息

§4.2.3 查看零件(part)信息

§4.2.4 查看供货商(supplier)信息

§4.2.5 查看供货商的零件(partsupp)信息

§4.2.6 查看查看订单(orders)的信息

§4.2.7 查看在线商品(lineitem)的信息

§4.2.8 查看国家的(nation)信息

§4.2.9 查看地区(region)的信息

o4.3 创建测试表与加载测试数据(50G测试数据)

§4.3.1 下载创建于查询SQL

§4.3.2 查看创建的表

§4.3.2 加载测试数据

§4.3.2.1 转化测试数据的格式

§4.3.2.2 删除tbl文件

§4.3.2.3 加载数据脚本

§4.3.2.4 查看每个表的个数

§4.3.2.5 查看表的分布情况

§4.3.2.5.1 customer 表的分布情况

§4.3.2.5.2 part表的分布情况

§4.3.2.5.3 region表的分布情况

§4.3.2.5.4 nation表的分布情况

§4.3.2.5.5 supplier表的分布情况

§4.3.2.5.6 partsupp表的分布情况

§4.3.2.5.7 orders表的分布情况

§4.3.2.5.8 lineitem表的分布情况

o4.4 执行测试SQL并查看测试效果(50G)

§4.4.1 价格摘要报告查询(Q1)

§4.4.2 最小代价供应者查询(Q2)

§4.4.3 运送优先权查询(Q3)

§4.4.4 订单优先权检查查询(Q4)

§4.4.5 当地供应者数量查询(Q5)

§4.4.6 预测收入变化查询(Q6)

§4.4.7 货运量查询(Q7)

§4.4.8 国家市场份额查询(Q8)

§4.4.9 国家市场份额查询(Q9)

§4.4.10 返回项目报告查询(Q10)

§4.4.11 重要库存标志查询(Q11)

§4.4.12 货运模式和命令优先查询(Q12)

§4.4.13 消费者分配查询(Q13)

§4.4.14 促进效果查询(Q14)

§4.4.15 头等(Q15)

§4.4.16 零件/供应商关系查询(Q16)

§4.4.17 小量订单收入查询(Q17)

§4.4.18 大订单顾客查询(Q18)

§4.4.19 折扣收入查询(Q19)

§4.4.20 潜在零件促进查询(Q20)

§4.4.21 不能按时交货供应商查询(Q21)

§4.4.22 全球销售机会查询(Q22)

o4.5 执行测试SQL并查看测试效果(200G)

§4.5.1 价格摘要报告查询(Q1)

§4.5.2 最小代价供应者查询(Q2)

§4.5.3 运送优先权查询(Q3)

§4.5.4 订单优先权检查查询(Q4)

§4.5.5 当地供应者数量查询(Q5)

§4.5.6 预测收入变化查询(Q6)

§4.5.7 货运量查询(Q7)

§4.5.8 国家市场份额查询(Q8)

§4.5.9 国家市场份额查询(Q9)

§4.5.10 返回项目报告查询(Q10)

§4.5.11 重要库存标志查询(Q11)

§4.5.12 货运模式和命令优先查询(Q12)

§4.5.13 消费者分配查询(Q13)

§4.5.14 促进效果查询(Q14)

§4.5.15 头等(Q15)

§4.5.16 零件/供应商关系查询(Q16)

§4.5.17 小量订单收入查询(Q17)

§4.5.18 大订单顾客查询(Q18)

§4.5.19 折扣收入查询(Q19)

§4.5.20 潜在零件促进查询(Q20)

§4.5.21 不能按时交货供应商查询(Q21)

§4.5.22 全球销售机会查询(Q22)

·5 汇总TPC-H测试结果

o5.1 表的数量汇总

o5.2 执行SQL耗时汇总

·6 分析执行的SQL

o6.1 SQL执行过程分析

§6.1.1 价格摘要报告查询(Q1)

§6.1.2 最小代价供应者查询(Q2)

§6.1.3 运送优先权查询(Q3)

§6.1.4 订单优先权检查查询(Q4)

§6.1.5 当地供应者数量查询(Q5)

§6.1.6 预测收入变化查询(Q6)

§6.1.7 货运量查询(Q7)

§6.1.8 国家市场份额查询(Q8)

§6.1.9 国家市场份额查询(Q9)

§6.1.10 返回项目报告查询(Q10)

§6.1.11 重要库存标志查询(Q11)

§6.1.12 货运模式和命令优先查询(Q12)

§6.1.13 消费者分配查询(Q13)

§6.1.14 促进效果查询(Q14)

§6.1.15 头等(Q15)

§6.1.16 零件/供应商关系查询(Q16)

§6.1.17 小量订单收入查询(Q17)

§6.1.18 大订单顾客查询(Q18)

§6.1.19 折扣收入查询(Q19)

§6.1.20 潜在零件促进查询(Q20)

§6.1.21 不能按时交货供应商查询(Q21)

§6.1.22 全球销售机会查询(Q22)

o6.2 名词解释

TPC-H 介绍

TPC-H 基准测试是由 TPC-D(由 TPC 组织于 1994 年指定的标准,用于决策支持系统方面的测试基准)发展而来的.TPC-H 用 3NF 实现了一个数据仓库,共包含 8 个基本关系,其数据量可以设定从 1G~3T 不等。TPC-H 基准测试包括 22 个查询(Q1~Q22),其主要评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间.TPC-H 基准测试的度量单位是每小时执行的查询数( QphH@size),其中 H 表示每小时系统执行复杂查询的平均次数,size 表示数据库规模的大小,它能够反映出系统在处理查询时的能力.TPC-H 是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数.总而言之,TPC 组织颁布的TPC-H 标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。

(*)详细介绍:https://blog.csdn.net/woshisap/article/details/44427899

1 Greenplum集群硬件信息

硬件信息行查看Greenplum主节点与数据节点硬件详细信息

2 Greenplum 集群架构信息

3 TPC-H 软件环境搭建

参考资料:https://yq.aliyun.com/articles/93?spm=a2c4e.11153940.blogcont98613.10.6e386c3eB5OOZf&commentId=29

3.1 TPC-H软件下载

下载地址:链接: https://pan.baidu.com/s/1RKdgfRBvAzZ-yllXO15fng 提取码: p781

3.2 编译TPC-H软件

编译软件参考:https://github.com/digoal/pg_tpch?spm=a2c4e.11153940.blogcont93.5.df104cd2p9viqS

3.2.1 给文件添加执行权限

#cd dbgen

#chmod 777 *.c *.h

3.2.2 生成Makefile文件

# cp makefile.suite Makefile

3.2.3 Makefile文件

103 CC = gcc 104 # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata) 105 # SQLSERVER, SYBASE, ORACLE, VECTORWISE 106 # Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS, 107 # SGI, SUN, U2200, VMS, LINUX, WIN32 108 # Current values for WORKLOAD are: TPCH

109 DATABASE= ORACLE 110 MACHINE = LINUX 111 WORKLOAD = TPCH

3.2.4 编译TPC-H

# make gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o build.o build.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o driver.o driver.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o bm_utils.o bm_utils.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o rnd.o rnd.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o print.o print.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o load_stub.o load_stub.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o bcd2.o bcd2.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o speed_seed.o speed_seed.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o text.o text.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o permute.o permute.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o rng64.o rng64.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -O -o dbgen build.o driver.o bm_utils.o rnd.o print.o load_stub.o bcd2.o speed_seed.o text.o permute.o rng64.o -lm gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o qgen.o qgen.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -c -o varsub.o varsub.c gcc -g -DDBNAME=\"dss\" -DLINUX -DORACLE -DTPCH -DRNG_TEST -D_FILE_OFFSET_BITS=64 -O -o qgen build.o bm_utils.o qgen.o rnd.o varsub.o text.o bcd2.o permute.o speed_seed.o rng64.o -lm

3.2.5 TPC-H查看帮助

# ./dbgen --help ./dbgen: invalid option -- '-' ERROR: option '-' unknown. TPC-H Population Generator (Version 2.14.3 build 0) Copyright Transaction Processing Performance Council 1994 - 2010 USAGE: dbgen [-{vf}][-T {pcsoPSOL}] [-s <scale>][-C <procs>][-S <step>] dbgen [-v] [-O m] [-s <scale>] [-U <updates>]

Basic Options =========================== -C <n> -- separate data set into <n> chunks (requires -S, default: 1) -f -- force. Overwrite existing files -h -- display this message -q -- enable QUIET mode -s <n> -- set Scale Factor (SF) to <n> (default: 1) -S <n> -- build the <n>th step of the data/update set (used with -C or -U) -U <n> -- generate <n> update sets -v -- enable VERBOSE mode

Advanced Options =========================== -b <s> -- load distributions for <s> (default: dists.dss) -d <n> -- split deletes between <n> files (requires -U) -i <n> -- split inserts between <n> files (requires -U) -T c -- generate cutomers ONLY -T l -- generate nation/region ONLY -T L -- generate lineitem ONLY -T n -- generate nation ONLY -T o -- generate orders/lineitem ONLY -T O -- generate orders ONLY -T p -- generate parts/partsupp ONLY -T P -- generate parts ONLY -T r -- generate region ONLY -T s -- generate suppliers ONLY -T S -- generate partsupp ONLY

To generate the SF=1 (1GB), validation database population, use: dbgen -vf -s 1

To generate updates for a SF=1 (1GB), use: dbgen -v -U 1 -s 1

以上常用的参数为:

-s 使用dbgen产生一些测试数据, -s 表示scale(单位为GB),根据需要测试的数据量指定:

4 Greenplum测试步骤

4.1 生成测试数据

4.1.1 生成50G第一批测试数据

$ time ./dbgen -s 50 -f TPC-H Population Generator (Version 2.14.3) Copyright Transaction Processing Performance Council 1994 - 2010

real 23m8.674s user 22m8.985s sys 0m59.560s

以上命令式生成50G的测试数据,用时23m

50G测试数据的分布情况

$ ll -h *.tbl -rw-rw-r-- 1 gpadmin gpadmin 1.2G Sep 19 17:18 customer.tbl -rw-rw-r-- 1 gpadmin gpadmin 37G Sep 19 17:18 lineitem.tbl -rw-rw-r-- 1 gpadmin gpadmin 2.2K Sep 19 17:18 nation.tbl -rw-rw-r-- 1 gpadmin gpadmin 8.3G Sep 19 17:18 orders.tbl -rw-rw-r-- 1 gpadmin gpadmin 5.7G Sep 19 17:18 partsupp.tbl -rw-rw-r-- 1 gpadmin gpadmin 1.2G Sep 19 17:18 part.tbl -rw-rw-r-- 1 gpadmin gpadmin 389 Sep 19 17:18 region.tbl -rw-rw-r-- 1 gpadmin gpadmin 69M Sep 19 17:18 supplier.tbl

4.1.2 生成200G第二批测试数据

$ time ./dbgen -s 200 -f TPC-H Population Generator (Version 2.14.3) Copyright Transaction Processing Performance Council 1994 - 2010

real 92m56.905s user 88m27.882s sys 4m28.157s

以上命令式生成200G的测试数据,用时92m56.905s

4.2 查看生成的测试数据

4.2.1 查看每个表的含义信息

表的含义如下说明,详细请查看:https://blog.csdn.net/woshisap/article/details/44427899

4.2.2 查看消费者(customer)信息

$ head -n 2 customer.tbl 1|Customer#000000001|IVhzIApeRb ot,c,E|15|25-989-741-2988|711.56|BUILDING|to the even, regular platelets. regular, ironic epitaphs nag e| 2|Customer#000000002|XSTf4,NCwDVaWNe6tEgvwfmRchLXak|13|23-768-687-3665|121.65|AUTOMOBILE|l accounts. blithely ironic theodolites integrate boldly: caref|

******

4.2.3 查看零件(part)信息

$ head -n 2 part.tbl 1|goldenrod lavender spring chocolate lace|Manufacturer#1|Brand#13|PROMO BURNISHED COPPER|7|JUMBO PKG|901.00|ly. slyly ironi| 2|blush thistle blue yellow saddle|Manufacturer#1|Brand#13|LARGE BRUSHED BRASS|1|LG CASE|902.00|lar accounts amo|

*********

4.2.4 查看供货商(supplier)信息

$ head -n 2 supplier.tbl 1|Supplier#000000001| N kD4on9OM Ipw3,gf0JBoQDd7tgrzrddZ|17|27-918-335-1736|5755.94|each slyly above the careful| 2|Supplier#000000002|89eJ5ksX3ImxJQBvxObC,|5|15-679-861-2259|4032.68| slyly bold instructions. idle dependen|

************

4.2.5 查看供货商的零件(partsupp)信息

$ head -n 2 partsupp.tbl 1|2|3325|771.64|, even theodolites. regular, final theodolites eat after the carefully pending foxes. furiously regular deposits sleep slyly. carefully bold realms above the ironic dependencies haggle careful| 1|125002|8076|993.49|ven ideas. quickly even packages print. pending multipliers must have to are fluff|

*********

4.2.6 查看查看订单(orders)的信息

$ head -n 2 orders.tbl 1|1845001|O|218611.01|1996-01-02|5-LOW|Clerk#000047528|0|nstructions sleep furiously among | 2|3900082|O|59659.27|1996-12-01|1-URGENT|Clerk#000043958|0| foxes. pending accounts at the pending, silent asymptot|

***********

4.2.7 查看在线商品(lineitem)的信息

$ head -n 2 lineitem.tbl 1|7759468|384484|1|17|25960.36|0.04|0.02|N|O|1996-03-13|1996-02-12|1996-03-22|DELIVER IN PERSON|TRUCK|egular courts above the| 1|3365454|365455|2|36|54694.44|0.09|0.06|N|O|1996-04-12|1996-02-28|1996-04-20|TAKE BACK RETURN|MAIL|ly final dependencies: slyly bold |

**********

4.2.8 查看国家的(nation)信息

$ head -n 2 nation.tbl 0|ALGERIA|0| haggle. carefully final deposits detect slyly agai| 1|ARGENTINA|1|al foxes promise slyly according to the regular accounts. bold requests alon|

4.2.9 查看地区(region)的信息

$ head -n 2 region.tbl 0|AFRICA|lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to | 1|AMERICA|hs use ironic, even requests. s|

4.3 创建测试表与加载测试数据(50G测试数据)

4.3.1 下载创建于查询SQL

下载创建于查询SQL: tpc-h测试SQL.zip

4.3.2 查看创建的表

4.3.2 加载测试数据

4.3.2.1 转化测试数据的格式

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

4.3.2.2 删除tbl文件

#rm -rf *.tbl

4.3.2.3 加载数据脚本

# cat file-export-greenplum.sh #!bin/bash

time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.part FROM '/greenplum/****/part.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.region FROM '/greenplum/****/region.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.nation FROM '/greenplum/****/nation.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.supplier FROM '/greenplum/****/supplier.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.customer FROM '/greenplum/****/customer.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.partsupp FROM '/greenplum/****/partsupp.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.orders FROM '/greenplum/****/orders.csv' WITH csv DELIMITER '|'"; time psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "COPY tpc_h_test.lineitem FROM '/greenplum/****/lineitem.csv' WITH csv DELIMITER '|'";

4.3.2.4 查看每个表的个数

shell脚本实例

$ vi table-count.sh

#!bin/bash psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) part from tpc_h_test.part;"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) region from tpc_h_test.region"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) nation from tpc_h_test.nation"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) supplier from tpc_h_test.supplier"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) customer from tpc_h_test.customer"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) partsupp from tpc_h_test.partsupp"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) orders from tpc_h_test.orders"; psql -d stagging -h 192.****.11 -p 5432 -U gpadmin -c "select count(*) lineitem from tpc_h_test.lineitem";

查看个数

$ sh table-count.sh part ---------- 10000000 (1 row)

region -------- 5 (1 row)

nation -------- 25 (1 row)

supplier ---------- 500000 (1 row)

customer ---------- 7500000 (1 row)

partsupp ---------- 40000000 (1 row)

orders ---------- 75000000 (1 row)

lineitem ----------- 300005811 (1 row)

4.3.2.5 查看表的分布情况

4.3.2.5.1 customer 表的分布情况
4.3.2.5.2 part表的分布情况
4.3.2.5.3 region表的分布情况
4.3.2.5.4 nation表的分布情况
4.3.2.5.5 supplier表的分布情况
4.3.2.5.6 partsupp表的分布情况
4.3.2.5.7 orders表的分布情况
4.3.2.5.8 lineitem表的分布情况

4.4 执行测试SQL并查看测试效果(50G)

查询SQL下载: tpc-h测试SQL.zip

4.4.1 价格摘要报告查询(Q1)

用时17.877s

4.4.2 最小代价供应者查询(Q2)

用时4.160s

4.4.3 运送优先权查询(Q3)

用时9.581s

4.4.4 订单优先权检查查询(Q4)

这个查询没有匹配到数据,用时0.032s

4.4.5 当地供应者数量查询(Q5)

这个查询没有匹配到数据,用时0.049s

4.4.6 预测收入变化查询(Q6)

这个查询没有匹配到数据,用时0.026s

4.4.7 货运量查询(Q7)

用时6.882s

4.4.8 国家市场份额查询(Q8)

用时6.261s

4.4.9 国家市场份额查询(Q9)

用时21.678s

4.4.10 返回项目报告查询(Q10)

这个查询没有匹配到数据,用时0.041s

4.4.11 重要库存标志查询(Q11)

这个查询没有匹配到数据,用时1.864s

4.4.12 货运模式和命令优先查询(Q12)

这个查询没有匹配到数据,用时0.072s

4.4.13 消费者分配查询(Q13)

用时4.080s

4.4.14 促进效果查询(Q14)

这个查询没有匹配到数据,用时0.041s

4.4.15 头等(Q15)

这个查询没有匹配到数据,用时0.481s

4.4.16 零件/供应商关系查询(Q16)

用时2.676s

4.4.17 小量订单收入查询(Q17)

用时21.901s

4.4.18 大订单顾客查询(Q18)

用时29.006s

4.4.19 折扣收入查询(Q19)

用时3.385s

4.4.20 潜在零件促进查询(Q20)

这个查询没有匹配到数据,用时1.739s

4.4.21 不能按时交货供应商查询(Q21)

用时30.719s

4.4.22 全球销售机会查询(Q22)

用时4.104s

4.5 执行测试SQL并查看测试效果(200G)

查询SQL下载: tpc-h测试SQL.zip

4.5.1 价格摘要报告查询(Q1)

用时69.827s

4.5.2 最小代价供应者查询(Q2)

用时9.911s

4.5.3 运送优先权查询(Q3)

用时36.624s

4.5.4 订单优先权检查查询(Q4)

这个查询没有匹配到数据,用时0.057s

4.5.5 当地供应者数量查询(Q5)

这个查询没有匹配到数据,用时0.059s

4.5.6 预测收入变化查询(Q6)

这个查询没有匹配到数据,用时0.029s

4.5.7 货运量查询(Q7)

用时22.081s

4.5.8 国家市场份额查询(Q8)

用时19.905s

4.5.9 国家市场份额查询(Q9)

用时58.924s

4.5.10 返回项目报告查询(Q10)

这个查询没有匹配到数据,用时0.040s

4.5.11 重要库存标志查询(Q11)

这个查询没有匹配到数据,用时3.393s

4.5.12 货运模式和命令优先查询(Q12)

这个查询没有匹配到数据,用时0.072s

4.5.13 消费者分配查询(Q13)

用时16.432s

4.5.14 促进效果查询(Q14)

这个查询没有匹配到数据,用时0.039s

4.5.15 头等(Q15)

这个查询没有匹配到数据,用时0.303s

4.5.16 零件/供应商关系查询(Q16)

用时10.648s

4.5.17 小量订单收入查询(Q17)

用时94.435s

4.5.18 大订单顾客查询(Q18)

用时118.068s

4.5.19 折扣收入查询(Q19)

用时8.773s

4.5.20 潜在零件促进查询(Q20)

这个查询没有匹配到数据,用时4.005s

4.5.21 不能按时交货供应商查询(Q21)

用时85.615s

4.5.22 全球销售机会查询(Q22)

用时13.140s

5 汇总TPC-H测试结果

5.1 表的数量汇总

在以上的图表中可以看出50G数据时,数据量最多的是lineitem表,达到300005811行的数据,最少的是region表,数据量5行

其中200G数据时,数据量最多的是lineitem表,达到12,0001,8434行的数据,最少的是region表,数据量5行。

表中的数据请查看 4.2 查看生成的测试数据

5.2 执行SQL耗时汇总

在以上的图表中可以看出,50G数据时耗时最多的是Q21,耗时30.719s, 0s代表查询没有匹配的数据

其中200G数据时耗时最多的是Q18,耗时118.068s , 0s代表查询没有匹配的数据。

6 分析执行的SQL

6.1 SQL执行过程分析

6.1.1 价格摘要报告查询(Q1)

6.1.2 最小代价供应者查询(Q2)

6.1.3 运送优先权查询(Q3)

6.1.4 订单优先权检查查询(Q4)

6.1.5 当地供应者数量查询(Q5)

6.1.6 预测收入变化查询(Q6)

6.1.7 货运量查询(Q7)

6.1.8 国家市场份额查询(Q8)

6.1.9 国家市场份额查询(Q9)

6.1.10 返回项目报告查询(Q10)

6.1.11 重要库存标志查询(Q11)

6.1.12 货运模式和命令优先查询(Q12)

6.1.13 消费者分配查询(Q13)

6.1.14 促进效果查询(Q14)

6.1.15 头等(Q15)

6.1.16 零件/供应商关系查询(Q16)

6.1.17 小量订单收入查询(Q17)

6.1.18 大订单顾客查询(Q18)

6.1.19 折扣收入查询(Q19)

6.1.20 潜在零件促进查询(Q20)

6.1.21 不能按时交货供应商查询(Q21)

6.1.22 全球销售机会查询(Q22)

6.2 名词解释

执行计划运算类型

操作说明

是否有启动时间

Seq Scan

扫描表

无启动时间

Index Scan

索引扫描

无启动时间

Bitmap Index Scan

索引扫描

有启动时间

Bitmap Heap Scan

索引扫描

有启动时间

Subquery Scan

子查询

无启动时间

Tid Scan

ctid = …条件

无启动时间

Function Scan

函数扫描

无启动时间

Nested Loop

循环结合

无启动时间

Merge Join

合并结合

有启动时间

Hash Join

哈希结合

有启动时间

Sort

排序,ORDER BY操作

有启动时间

Hash

哈希运算

有启动时间

Result

函数扫描,和具体的表无关

无启动时间

Unique

DISTINCT,UNION操作

有启动时间

Limit

LIMIT,OFFSET操作

有启动时间

Aggregate

count, sum,avg, stddev集约函数

有启动时间

Group

GROUP BY分组操作

有启动时间

Append

UNION操作

无启动时间

Materialize

子查询

有启动时间

SetOp

INTERCECT,EXCEPT

有启动时

-> Hash (cost=1840.19..1840.19 rows=413438 width=16) -> HashAggregate (cost=0.00..1840.19 rows=413438 width=16) Group By: orders.o_custkey -> Redistribute Motion 48:48 (slice3; segments: 48) (cost=0.00..1786.12 rows=413438 width=16) Hash Key: orders.o_custkey -> Result (cost=0.00..1765.42 rows=413438 width=16) -> HashAggregate (cost=0.00..1765.42 rows=413438 width=16) Group By: orders.o_custkey -> Table Scan on orders (cost=0.00..881.31 rows=6250000 width=8)

1.从下往上读 2.explain报告查询的操作,开启的消耗,查询总的消耗,访问的行数 访问的平均宽度 3.开启时间消耗是输出开始前的时间例如排序的时间 4.消耗包括磁盘检索页,cpu时间 5.注意,每一步的cost包括上一步的 6.重要的是,explain 不是真正的执行一次查询 只是得到查询执行的计划和估计的花费

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

死锁案例之三

一 前言 死锁其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发朋友都会在工作过程中遇见。关于死锁我会持续写一个系列的案例分析,希望能...

652
来自专栏杨建荣的学习笔记

关于segment的一个小问题

今天统计数据的时候,发现一个奇怪的小问题,通过segment去判断一个表的大小,然后查表的count,有一个表明明在,但是从segment里面去查的时候查不出来...

3488
来自专栏Spark学习技巧

浪尖,请问如何确定hive分桶数?

顺便打个广告,更多优质文章和问题答疑及视频教程请点击原文链接,加入浪尖知识星球-Spark技术学院获取。

2325
来自专栏杨建荣的学习笔记

海量数据切分抽取的实践场景(r11笔记第43天)

如果一个大表要抽取数据导出成csv文件,我们有什么策略,如何改进。 一、问题背景 今天开发的同学找到我,他们需要做一个数据统计分析,需要我提供一些支持,把一...

3446
来自专栏Java架构沉思录

为什么我建议你这样实现MySQL分页

之前分享了关于MySQL分页实现方案的文章《如何优雅地实现分页查询》,有些读者觉得写得太浅显了,今天我们就继续探讨这个话题,当然由于能力有限,这篇文章也未必能够...

1312
来自专栏杨建荣的学习笔记

生产环境sql语句调优实战第二篇(r2第38天)

在生产环境通过sql monitor监控到有一条sql执行效率很差。执行了大约5个小时,得到的sql monitor报告如下: Global Informat...

2787
来自专栏杨建荣的学习笔记

使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)

对于数据整合式迁移,基本就是小霸王的二合一,四合一,八合一这样的节奏,把几个尽可能相关业务的数据库中的数据整合到一个库里。彼此还是独立的schema,倒也是相安...

2804
来自专栏好好学java的技术栈

微信支付和支付宝支付到springmvc+spring+mybatis环境全过程(支付宝和微信支付)

2132
来自专栏数据和云

【安全警告】Oracle 12c 多租户的SQL注入高危风险防范

在使用Oracle多租户选件时,由于Container容器和PDB融合共存,则权限控制必将更加重要,在之前的文章中我们提到,Oracle 12.2 的 loc...

3586
来自专栏杨建荣的学习笔记

关于奇怪的并行进程分析(二) (r6笔记第46天)

前几天的并行问题自己分析了下,也算有了一些进展,但是目前还没有找到让人信服的理由,有些读者也比较关心这个问题,所以第二篇中会把自己的分析过程写出来,第三篇中应该...

2603

扫码关注云+社区