使用HammerDB测试Greenplum时,可能存在数据导入失败的情况
问题现象描述
使用HammerDB工具测试Greenplum时,部分机型可能存在数据导入失败的情况,可以采用tbl文件的方式导入。
关键过程、根本原因分析
可能是HammerDB默认配置不匹配系统环境所致,可以采用tbl文件的方式导入数据。
结论、解决方案及效果
- 生成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。
- 查看已生成的tbl文件。
1
ll ./data/tbl/
- 将生成的tbl文件拷贝至数据库服务端。其中192.168.67.106为目标数据库服务端的IP地址,用户在操作过程中请根据实际情况替换。
1
scp -r /data/tbl/ 192.168.67.106:/data/
- 在数据库服务器上创建库并按测试模型建表,可在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);
- 在数据库中按表逐个导入tbl文件。
1
copy ${table_name} from '/data/tbl/${table_name}.tbl' WITH DELIMITER AS '|';
${table_name} 表示表名,共8张表。
- 创建索引。
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);
父主题: 故障排除