Oracle数据仓库查询优化技术

http://tech.ddvip.com   2007年05月06日    社区交流

本文详细介绍Oracle数据仓库查询优化技术

  一、运行环境

SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE  10.2.0.1.0   Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> show parameter query
NAME                 TYPE    VALUE
------------------------------------ ----------- ------------------------------
query_rewrite_enabled           string   TRUE
query_rewrite_integrity           string    TRUSTED
SQL> conn / as sysdba
已连接。
SQL> create user ning identified by ning;
用户已创建。
SQL> grant dba to ning;
授权成功。
SQL> conn ning/ning
已连接。

  本文采用一个简单的星型模型的示例数据,只包含一个事实表fact_sales和一个时间维度表time_dim,具体的生成脚本请见附录。

  二、物化视图

  通常,在数据仓库中可以通过创建摘要信息(summary)来提升性能。这里的摘要指的是预先对一些连接(join)和聚合(aggregation)进行计算并将结果保存下来,后续查询的时候可以直接利用保存的摘要信息来生成报表。在oracle中,可以利用物化视图(materialized view)来创建数据仓库中的摘要。结合oracle优化器的查询重写(query rewrite)功能,可以在不改写应用的情况下,利用物化视图提升查询性能。显然,物化视图需要一种刷新机制来保证和基表的数据同步,Oracle提供了两种刷新方式:增量刷新(fast refresh)和完全刷新(complete refresh)。增量刷新方式需要满足一系列的条件(具体的限制条件请参考Metalink:Doc ID: Note:222843.1),简单起见,本文例子中的物化视图采用了完全刷新方式。

来源:IT168    作者:宁海元    责编:豆豆技术应用

正在加载评论...