# gpdb-tpcds **Repository Path**: joey2022/gpdb-tpcds ## Basic Information - **Project Name**: gpdb-tpcds - **Description**: gpdb运行tpc测试 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-04-13 - **Last Updated**: 2022-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TPC-DS测试组件 包含[TPC-DS](http://tpc.org/tpcds/default5.asp) v3.2.0,gpdb目录下是gpdb上运行tpc-ds的脚本,主要包含数据生成与加载,查询修复,测试运行和统计等。非标准开源协议,参考EULA.txt。 ### 准备工作 - 规划测试规模和gpdb集群配置,TPC-DS测试数据量以GB为单位,最小标准测试为1TB(1000GB),脚本默认值为10GB,按需要修改。 - 准备好gpdb集群环境,当前脚本主要运行在master节点上,要保证master节点剩余磁盘容量大于测试数据量,master节点9999端口可被segment节点访问。 - 这里使用master节点生成并加载数据,如果需要使用单独ETL节点,参考最后一节。 ### 生成数据 - 在tools目录下直接make来编译数据生成工具dsdgen和dsqgen,不需要configure。 - 切到gpdb目录,按目标数据量修改gen.sh中SC变量,单位GB。可按需要修改PARALLEL控制数据生成并行度,默认为可用逻辑cpu数。 - 运行 gen.sh,数据和查询生成在data目录。 为了适配gpdb运行,对原查询进行了以下修改。所有修改都通过gen.sh完成,没有改变原来查询模板 1. 查询2,14,23,49中部分子查询加alias 1. 查询5,12,16,20,21,32,37,40,77,80,82,92,94,95,98包含date差值运算,gpdb的语法为'interval diffvalue' 1. 删除查询30中包含的未定义列c_last_review_date_sk 1. 查询36,70,86中ORDER BY使用了计算列的alias,替换为将原查询整个作为子查询再ORDER BY ### 数据加载 1. source greenplum_path.sh,通常在/usr/local ``` source /usr/local/greenplum-db/greenplum_path.sh ``` 2. 创建数据库,执行schema.sql ``` createdb psql -f schema.sql ``` 3. tables中包含所有要加载的表名,此列表可运行以下命令得到 ```grep "create table" schema.sql | awk '{print $3;}'``` 4. 测试加载dbgen_version表 ``` ./load_data.sh dbgen_version ``` 标准结果如下,可忽略EXTERNAL TABLE不存在错误 ``` CREATE EXTERNAL TABLE TRUNCATE TABLE ../data/dbgen_version_1_32.dat INSERT 0 1 ANALYZE ``` 5. 加载全部数据 ``` ./load_all.sh ``` ### 运行测试 1. 运行单个query n,结果保存在n.out中,确认没有n.err文件 ``` ./run_single.sh 8 ``` 2. 运行全部99个query ``` ./run_all.sh ``` 3. 运行全部99个query N次,测试时间结果保存在/tmp/summary ``` ./run_iterations.sh 5 ``` ### 单独ETL节点 如果master节点上磁盘空间紧张,或者可用cpu核心数不多,可以为数据生成和加载单独准备资源。此时需要保证ETL节点的9999端口可被所有segment访问到。替换gen.sh中MASTER_HOST变量为ETL节点的IP或域名即可,其它流程相同。 如需要其它端口,替换ext_table.sql中```@host@:9999```部分,以及load_data.sh中```gpfdist -d /tmp -p 9999```部分