• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >DB2 > 提高商业智能环境中DB2查询的性能(1)

提高商业智能环境中DB2查询的性能(1)

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了db2数据库下载,db2数据库,graco db2,db2,db2客户端工具等相关知识,希望本文的分享对您有所帮助
</div>

高效地运行大型查询,是商业智能环境中的顶级性能挑战。学习在这种环境中提高 IBM® DB2® 数据服务器查询性能的技巧。逐步了解各种不同的方法,然后在自己的系统上进行试验。将每种方法应用于一条 SQL 语句,并使用 db2batch 工具评测性能。

简介

本文主要讨论可以使决策支持系统(DSS)中的大型查询高效地执行的一些方法。这些查询通常都是访问较多数据的单纯 select 查询。下面是我们要讨论的一些方法:

1、建立适当的参照完整性约束

2、使用物化查询表(MQT)将表复制到其它数据库分区,以允许非分区键列上的合并连接

3、使用多维集群(MDC)

4、使用表分区(DB2® 9 的新功能)

5、结合使用表分区和多维集群

6、使用 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 家商店的销售信息。

清单 2. 主查询 [Query1.sql]WITH TMP1 (MONTH_1,STORE,REGION,DISTRICT,AMOUNT_1) AS
( SELECT
   D.MONTH AS MONTH,
   S.STORE_ID AS STORE_ID,
   S.DISTRICT AS DISTRICT,
   S.REGION AS REGION,
   SUM(F1.QUANTITY * F1.PRICE) AS AMOUNT
 FROM
   SKAPOOR.SALES_FACT F1,
   SKAPOOR.DATE_DIM D,
   SKAPOOR.PRODUCT_DIM P,
   SKAPOOR.STORE_DIM S
  
 WHERE
   P.MODEL LIKE '%model%' AND
   F1.DATE_ID=D.DATE_ID AND
   F1.PRODUCT_ID=P.PRODUCT_ID AND
   F1.STORE_ID=S.STORE_ID AND
   F1.DATE_ID BETWEEN '2006-01-01' AND '2006-01-31' AND
   F1.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND    
   D.MONTH = 1
 GROUP BY
   S.STORE_ID,S.DISTRICT,S.REGION,D.MONTH) ,
  
TMP2 (MONTH_11,STORE,REGION,DISTRICT,AMOUNT_11) AS
( SELECT
   D1.MONTH AS MONTH,
   S1.STORE_ID AS STORE_ID,
   S1.DISTRICT AS DISTRICT,
   S1.REGION AS REGION,
   SUM(F2.QUANTITY * F2.PRICE) AS AMOUNT
 FROM
   SKAPOOR.SALES_FACT F2,
   SKAPOOR.DATE_DIM D1,
   SKAPOOR.PRODUCT_DIM P1,
   SKAPOOR.STORE_DIM S1
 WHERE
   P1.MODEL LIKE '%model%' AND
   F2.DATE_ID=D1.DATE_ID AND
   F2.PRODUCT_ID=P1.PRODUCT_ID AND
   F2.STORE_ID=S1.STORE_ID AND
   F2.DATE_ID BETWEEN '2006-11-01' AND '2006-11-30' AND
   F2.STORE_ID IN (29, 30, 42, 55, 67, 72, 82, 99, 123, 199) AND    
   D1.MONTH=11
 GROUP BY
   S1.STORE_ID,S1.DISTRICT,S1.REGION,D1.MONTH)
SELECT
   A.*,
   B.*
FROM
   TMP1 A LEFT OUTER JOIN TMP2 B ON
    (A.STORE=B.STORE AND A.REGION=B.REGION AND A.DISTRICT=B.DISTRICT)
ORDER BY A.AMOUNT_1 DESC, B.AMOUNT_11 DESC;

环境设置

本文的测试是使用以下环境执行的:

清单 3. db2levelDB2 9 Enterprise Edition:
DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL09010" with
level identifier "02010107".
Informational tokens are "DB2 9.1.0.356", "s060629", "NT32", and Fix Pack "0".
Product is installed at "C:PROGRA~1IBMSQLLIB" with DB2 Copy Name "DB2COPY1".

清单 4. 操作系统System: WIN32_NT SKAPOOR Service Pack 2 5.1 x86 Family 15, model 4, stepping 3

清单 5. 硬件CPU: total:2 online:2 Cores per socket:1 Threading degree per core:2
Physical Memory(MB): total:2551 free:1988 available:1949
Virtual Memory(MB): total:4950 free:6575
Swap   Memory(MB): total:2399 free:4587
1 Physical disk Size 100GB

空间需求

为了重新创建本文中描述的

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 创建一个空的IBM DB2 ECO数据库的方法
  • 常见数据库系统比较 DB2数据库
  • DB2数据库的安装
  • 常见数据库系统比较 DB2数据库
  • 在数据库应用项目的生命周期中充分利用 DB2 目录视图的最佳实践
  • 配置 DB2 pureScale 利用 DS8700 Metro Mirror 进行灾难恢复
  • 基于DB2及PHP的应用系统跨平台迁移详细步骤(一)
  • 基于DB2及PHP的应用系统跨平台迁移详细步骤(二)
  • DB2 最佳实践: DB2 数据库存储机制
  • DB2信息追凶

相关文章

  • 2017-06-28超级数据库:最大和最快
  • 2017-06-28使用 pureXML 构建通用组件库
  • 2017-06-28DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第2部分
  • 2017-06-28DB2的数据类型
  • 2017-06-28利用表空间的备份快速恢复IBM DB2数据库
  • 2017-06-28IBM DB2前世今生之DB2的诞生
  • 2017-06-28抛砖引玉,实例讲解DB2中的表空间
  • 2017-05-11DB2 自动递增字段实现方法
  • 2017-05-11DB2编程序技巧 (十)
  • 2017-06-28信息议程与“信息随需应变”

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • DB2 数据库创建、表的ixf文件导出导入示例
    • DB2常见问题1000问(之二)
    • 使用DB2look实用程序重新创建优化器访问计划
    • DB2信息追凶
    • 利用表空间的备份快速恢复IBM DB2数据库
    • DB2 UDB V8.1管理学习笔记(一)
    • IBM DB2 日常维护汇总(九)
    • 如何访问大型机、小型机上的DB2 9数据服务器
    • DB2性能监控 1——快照
    • IBM DB2 Express-C 9.5.2中激动人心的新特性

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有