技术开发 频道

从Oracle向DB2迁移的策略以及非常好的实践

  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_IDDECIMAL(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支持的分区特性一览表

  概念上相似,用法略有不同。另外也可以组合使用:

0
相关文章