3)表ACCA_ITEM的DDL定义
CREATE TABLE “BI”.”ACC_ITEM”(
“BILLING_CYCLE_ID” VARCHAR(6),
“BILL_DTL_ID” DECIMAL(15,0),
“DEFAULT_ACCT_ID”DECIMAL(9,0),
“ACCT_ID” DECIMAL(9,0),
“USER_ID” DECIMAL(9,0),
“SVC_NUM” VARCHAR(64),
“AREA_ID” VARCHAR(3),
…
“ETL_TIME” TIMESTAMP,
“ETL_DATA_CYCLE” DATE)
DISTRIBUTE BY HASH(“USER_ID”)
INDEX IN “TBS_INDEX”
)
“BILLING_CYCLE_ID” VARCHAR(6),
“BILL_DTL_ID” DECIMAL(15,0),
“DEFAULT_ACCT_ID”DECIMAL(9,0),
“ACCT_ID” DECIMAL(9,0),
“USER_ID” DECIMAL(9,0),
“SVC_NUM” VARCHAR(64),
“AREA_ID” VARCHAR(3),
…
“ETL_TIME” TIMESTAMP,
“ETL_DATA_CYCLE” DATE)
DISTRIBUTE BY HASH(“USER_ID”)
INDEX IN “TBS_INDEX”
)
这里的USER_ID作为Hash Key。
6、原来是Hash Key搞错了
1) 怎么找到原因的?
首先要和表设计人员沟通,通过元数据库调查表之间的血缘关系,然后追踪了数据流(ETL工具使用Datastage),发现很多记录的user_id值为0,而user_id为hash key。这使得数据被hash到有限的几个分区中。
2) 怎么解决的?
使用该表另外字段ACCT_ID作为Hash key,数据在分区间做重平衡操作。
7、Oracle和DB2在这个案例上有什么不同?
1)Oracle和DB2导致的不同结果
Oracle:倾斜的大数据分区位于共享磁盘上。
DB2:倾斜的大数据分区位于DPF节点上。
2)DB2数据库分区有什么特点?
多个数据库分区在一起并行工作来处理工作负载,提供了强大的线性扩展能力,通常被广泛应用在数据仓库中。
8、Oracle和DB2支持的分区特性一览表
概念上相似,用法略有不同。另外也可以组合使用: