鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

使用HammerDB测试Greenplum时,可能存在数据导入失败的情况

问题现象描述

使用HammerDB工具测试Greenplum时,部分机型可能存在数据导入失败的情况,可以采用tbl文件的方式导入。

关键过程、根本原因分析

可能是HammerDB默认配置不匹配系统环境所致,可以采用tbl文件的方式导入数据。

结论、解决方案及效果

  1. 生成tbl文件。
    1
    2
    3
    4
    5
    6
    dbset db pg
    dbset bm tpc-h
    dgset directory /data/tbl
    dgset scale_fact 1
    dgset vu 1
    datagenrun
    

    命令

    含义

    dgset directory /data/tbl

    tbl文件存储路径,路径需存在并存在剩余空间。

    dgset scale_fact 1

    数据量。

    dgset vu 1

    任务并发数,与生成的tbl文件个数相关。

    datagenrun

    创建tbl。

  2. 查看已生成的tbl文件。
    1
    ll ./data/tbl/
    

  3. 将生成的tbl文件拷贝至数据库服务端。其中192.168.67.106为目标数据库服务端的IP地址,用户在操作过程中请根据实际情况替换。
    1
    scp -r /data/tbl/ 192.168.67.106:/data/
    

  4. 在数据库服务器上创建库并按测试模型建表,可在HammerDB安装路径下的src/postgresql/pgolap.tcl中查看OLAP测试脚本。

    建表(默认行存):

    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE ORDERS (O_ORDERDATE TIMESTAMP, O_ORDERKEY NUMERIC NOT NULL, O_CUSTKEY NUMERIC NOT NULL, O_ORDERPRIORITY CHAR(15), O_SHIPPRIORITY NUMERIC, O_CLERK CHAR(15), O_ORDERSTATUS CHAR(1), O_TOTALPRICE NUMERIC, O_COMMENT VARCHAR(79))  DISTRIBUTED BY (O_ORDERKEY);
    CREATE TABLE PARTSUPP (PS_PARTKEY NUMERIC NOT NULL, PS_SUPPKEY NUMERIC NOT NULL, PS_SUPPLYCOST NUMERIC NOT NULL, PS_AVAILQTY NUMERIC, PS_COMMENT VARCHAR(199))  DISTRIBUTED BY (PS_PARTKEY,PS_SUPPKEY);
    CREATE TABLE CUSTOMER(C_CUSTKEY NUMERIC NOT NULL, C_MKTSEGMENT CHAR(10), C_NATIONKEY NUMERIC, C_NAME VARCHAR(25), C_ADDRESS VARCHAR(40), C_PHONE CHAR(15), C_ACCTBAL NUMERIC, C_COMMENT VARCHAR(118))  DISTRIBUTED BY (C_CUSTKEY);
    CREATE TABLE PART(P_PARTKEY NUMERIC NOT NULL, P_TYPE VARCHAR(25), P_SIZE NUMERIC, P_BRAND CHAR(10), P_NAME VARCHAR(55), P_CONTAINER CHAR(10), P_MFGR CHAR(25), P_RETAILPRICE NUMERIC, P_COMMENT VARCHAR(23))  DISTRIBUTED BY (P_PARTKEY);
    CREATE TABLE SUPPLIER(S_SUPPKEY NUMERIC NOT NULL, S_NATIONKEY NUMERIC, S_COMMENT VARCHAR(102), S_NAME CHAR(25), S_ADDRESS VARCHAR(40), S_PHONE CHAR(15), S_ACCTBAL NUMERIC)   DISTRIBUTED BY (S_SUPPKEY);
    CREATE TABLE NATION(N_NATIONKEY NUMERIC NOT NULL, N_NAME CHAR(25), N_REGIONKEY NUMERIC, N_COMMENT VARCHAR(152))  DISTRIBUTED BY (N_NATIONKEY);
    CREATE TABLE REGION(R_REGIONKEY NUMERIC, R_NAME CHAR(25), R_COMMENT VARCHAR(152))  DISTRIBUTED BY (R_REGIONKEY);
    CREATE TABLE LINEITEM(L_SHIPDATE TIMESTAMP, L_ORDERKEY NUMERIC NOT NULL, L_DISCOUNT NUMERIC NOT NULL, L_EXTENDEDPRICE NUMERIC NOT NULL, L_SUPPKEY NUMERIC NOT NULL, L_QUANTITY NUMERIC NOT NULL, L_RETURNFLAG CHAR(1), L_PARTKEY NUMERIC NOT NULL, L_LINESTATUS CHAR(1), L_TAX NUMERIC NOT NULL, L_COMMITDATE TIMESTAMP, L_RECEIPTDATE TIMESTAMP, L_SHIPMODE CHAR(10), L_LINENUMBER NUMERIC NOT NULL, L_SHIPINSTRUCT CHAR(25), L_COMMENT VARCHAR(44))  DISTRIBUTED BY (L_LINENUMBER, L_ORDERKEY);
    

  5. 在数据库中按表逐个导入tbl文件。
    1
    copy ${table_name} from '/data/tbl/${table_name}.tbl' WITH DELIMITER AS '|';
    

    ${table_name} 表示表名,共8张表。

  6. 创建索引。
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE INDEX REGION_PK ON REGION (R_REGIONKEY);
    CREATE INDEX NATION_PK ON NATION (N_NATIONKEY);
    CREATE INDEX SUPPLIER_PK ON SUPPLIER (S_SUPPKEY);
    CREATE INDEX PARTSUPP_PK ON PARTSUPP (PS_PARTKEY,PS_SUPPKEY);
    CREATE INDEX PART_PK ON PART (P_PARTKEY);
    CREATE INDEX ORDERS_PK ON ORDERS (O_ORDERKEY,o_orderdate);
    CREATE INDEX LINEITEM_PK ON LINEITEM (L_LINENUMBER, L_ORDERKEY,l_shipdate);
    CREATE INDEX CUSTOMER_PK ON CUSTOMER (C_CUSTKEY);