提高商业智能环境中 DB2 查询性能

  作者:Vincent …
2007/5/18 15:59:19
本文关键字: BI 商业智能
本文主要讨论可以使决策支持系统(DSS)中的大型查询高效地执行的一些方法。这些查询通常都是访问较多数据的单纯 select 查询。下面是我们要讨论的一些方法:
  •   建立适当的参照完整性约束
  •   使用物化查询表(MQT)将表复制到其它数据库分区,以允许非分区键列上的合并连接
  •   使用多维集群(MDC)
  •   使用表分区(DB2® 9 的新功能)
  •   结合使用表分区和多维集群
  •   使用 MQT 预先计算聚合结果

  本文中的例子针对 Windows 平台上运行的 DB2 9。但是,其中的概念和信息对于任何平台都是有用的。由于大多数商业智能(BI)环境都使用 DB2 Database Partitioning Feature(DPF,DB2 数据库分区特性),我们的例子也使用 DPF 将数据划分到多个物理和逻辑分区之中。

  数据库布局和设置

  本节描述用于在我们的系统上执行测试的数据库的物理和逻辑布局。

  星型模式布局

  本文使用如下所示的星型模式:

  清单 1. 星型模式

                      PRODUCT_DIM             DATE_DIM
                                            \            /
                                             \          /
                                              SALES_FACT
                                                  |
                                                  |
                                          STORE_DIM

  其中的表的定义如下:

表名 类型 列名 数据类型 列描述
SALES_FACT FACT TABLE DATE_ID DATE 产品售出日期
PRODUCT_ID INT 所购买产品的标识符
STORE_ID INT 出售产品的商店的标识符
QUANTITY INT 这次交易中售出产品的数量
PRICE INT 产品购买价格。[为了简单起见,该字段为整型,但是使用小数型更符合实际]
TRANSACTION_DETAILS CHAR(100) 关于此次交易的描述/详细信息
DATE_DIM DIMENSION TABLE DATE_ID NOT NULL DATE 惟一标识符
MONTH INT 日期记录所属的月份
QUARTER INT 日期记录所属的季度(第 1、第 2、第 3 或第 4 季度)
YEAR INT 日期记录所属的年份
PRODUCT_DIM DIMENSION TABLE PRODUCT_ID NOT NULL INT 产品惟一标识符
PRODUCT_DESC CHAR(20) 对产品的描述
MODEL CHAR(200) 产品型号
MAKE CHAR(50) 产品的质地
STORE_DIM DIMENSION TABLE STORE_ID NOT NULL INT 商店惟一标识符
LOCATION CHAR(15) 商店位置
DISTRICT CHAR(15) 商店所属街区
REGION CHAR(15) 商店所属区域

  事实表 SALES_FACT 包含 2006 年的总体销售信息。它包括产品售出日期、产品 ID、销售该产品的商店的 ID、售出的特定产品的数量,以及产品的价格。事实表中还添加了 TRANSACTION_DETAILS 列,以便在从事实表中访问数据时生成更多的 I/O。

  •   维度表 DATE_DIM 包含商店开放期间的惟一的日期和相应的月份、季度和年份信息。
  •   维度表 PRODUCT_DIM 包含公司所销售的不同产品。每种产品有一个惟一的产品 ID 和一个产品描述、型号以及质地。

  维度表 STORE_DIM 包含不同的商店 ID 和商店的位置、所属街区以及所属区域等信息。

数据库分区信息

数据库分区组名 数据库分区数
FACT_GROUP 0,1,2,3
DATE_GROUP 1
PRODUCT_GROUP 2
STORE_GROUP 3

  各表都位于它自己的分区组中。3 个维度表都比较小,所以它们位于一个数据库分区上。而事实表则跨 4 个分区。

  表空间信息

表空间名 数据库分区组
FACT_SMS FACT_GROUP SALES_FACT
DATE_SMS DATE_GROUP DATE_DIM
PRODUCT_SMS PRODUCT_GROUP PRODUCT_DIM
STORE_SMS STORE_GROUP STORE_DIM

  各表都位于自己的表空间中。还有一种常见的方法是将这 3 个维度表放在同一个表空间中。

  缓冲池信息

  本文中的测试所使用的默认缓冲池是 IBMDEFAULTBP,该缓冲池由 1,000 个 4K 的页面组成。在本文的测试中,所有表空间共享这个缓冲池。在通常的 BI 环境中,会创建不同的缓冲池。

  主查询

  下面的查询用于测试本文中讨论的各种不同的方法。该查询执行一个向外连接,比较二月份和十一月份 10 家商店的销售信息。

……

 

责编:
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918