1、建立适当的参照完整性约束;
2、使用物化查询表(MQT)将表复制到其它数据库分区,以允许非分区键列上的合并连接;
3、使用多维集群(MDC);
4、使用表分区(DB2® 9 的新功能);
5、结合使用表分区和多维集群;
6、使用 MQT 预先计算聚合结果。
本文中的例子针对 Windows 平台上运行的 DB2 9。但是,其中的概念和信息对于任何平台都是有用的。由于大多数商业智能(BI)环境都使用 DB2 Database Partitioning Feature(DPF,DB2 数据库分区特性),我们的例子也使用 DPF 将数据划分到多个物理和逻辑分区之中。
数据库布局和设置
星型模式布局
本文使用如下所示的星型模式:
其中的表的定义如下:
事实表 SALES_FACT 包含 2006 年的总体销售信息。它包括产品售出日期、产品 ID、销售该产品的商店的 ID、售出的特定产品的数量,以及产品的价格。事实表中还添加了 TRANSACTION_DETAILS 列,以便在从事实表中访问数据时生成更多的 I/O。
1、维度表 DATE_DIM 包含商店开放期间的惟一的日期和相应的月份、季度和年份信息。
2、维度表 PRODUCT_DIM 包含公司所销售的不同产品。每种产品有一个惟一的产品 ID 和一个产品描述、型号以及质地。
3、维度表 STORE_DIM 包含不同的商店 ID 和商店的位置、所属街区以及所属区域等信息。
数据库分区信息
各表都位于它自己的分区组中。3 个维度表都比较小,所以它们位于一个数据库分区上。而事实表则跨 4 个分区。
表空间信息
缓冲池信息
本文中的测试所使用的默认缓冲池是 IBMDEFAULTBP,该缓冲池由 1,000 个 4K 的页面组成。在本文的测试中,所有表空间共享这个缓冲池。在通常的 BI 环境中,会创建不同的缓冲池。
主查询
下面的查询用于测试本文中讨论的各种不同的方法。该查询执行一个向外连接,比较二月份和十一月份 10 家商店的销售信息。
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交