易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle数据仓库中三种优化


对于我们这个项目来说,数据库的存取的性能决定了数据提供的性能。优化的大致的原理只有两个:一是数据分块存放,便于数据的转储和管理;二是中间处理,提高数据提供的速度。
基于上面两个根本的原理,借助于数据仓库的概念,列举数据库的优化方式:
1. 分区
在数据仓库中,事实表,索引表,维度表分处于三个不同的表空间当中(在部署的时候,最好是部署到不同的磁盘上)。这样子做的原因就是便于并发操作,其实数据仓库和普通的数据库之间没有严格的界限,主要还是部署上,当然oracle本身会为数据仓库中的“事实表”生成“知识库”等操作,保证更快的数据提供效率,其实可以借助于job和外部程序来调度存储过程实现。基于这个思路,本项目数据库中的索引将和事实表分开维护,当然这称不上分区()。真正的分区是指下面的内容。
分区就是partition/subpartition,对于事实表本身来说,以月为单位作partition挂载到不同表空间上。具体的示例如下:
create table T_LOGNODE_RECORD
(
……
  CALLIN_HH      NUMBER(2) not null,
  CALLIN_DD      NUMBER(2) not null,
  CALLIN_MONTH  NUMBER(2) not null,
  CALLIN_YEAR    NUMBER(4) not null,
  MONTH_MOD     NUMBER(1) not null
)
PARTITION BY LIST (MONTH_MOD) 
(
PARTITION P0 VALUES (0) TABLESPACE TS0, 
PARTITION P1 VALUES (1)  TABLESPACE TS1, 
PARTITION P2 VALUES (DEFAULT) TABLESPACE TS2
);
上述的代码中以MONTH_MOD字段作为分区标准,将T_LOGNODE_RECORD分到三个不同的表空间(TS0,TS1,TS2)中,这里有一个技巧,MONTH_MOD = 月份mod3,这样子可以不需要人工的维护哪个月分入哪个分区。当然简单的以月作为分区之后,对于我们当前的数据库来说还是远远不够的,因为即使是一个月的数据依然是很巨大的,那么需要我们做SUBPARTITION,做法的示例为:
create table T_LOGNODE_RECORD
(
……
  CALLIN_DD   NUMBER(2) not null,
  MONTH_MOD NUMBER(1) not null
)
PARTITION BY RANGE(MONTH_MOD)
SUBPARTITION BY LIST(CALLIN_DD)
SUBPARTITION TEMPLATE
(
SUBPARTITION SUBP1 values (1),
SUBPARTITION SUBP2 values (2),
SUBPA


相关文档:

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

ORACLE物化视图 利用维对象来优化数据仓库的高级技巧


http://www.anysql.net/oracle/oracle_olap_dimension.html
在Oracle的数据仓库(OLAP)中, 实体化视图(MVIEW), 查询重写(Query Rewrite)和维(Dimension)是非常重要的优化手段, 对于前两者我不想在这儿重复讲了, 主要来体验一下维的作用. 要发挥维的作用, 还是需要用到前面两者, 下面是我设计的只有一个维表的最简单的例子 ......

oracle数据字典小结


下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。
   
    一、用户
    查看当前用户的缺省表空间
    SQL>select username,default_tablespace from user_users;
    查看当前用户的角色
    SQL ......

Oracle笔记 物化视图

http://www.wangchao.net.cn/bbsdetail_1776477.html
 第 13 章 物化视图
  8.1.5企业版/个人版开始支持
  需要权限:GRANT CREATE MATERIALIZED VIEW,还必须直接赋予GRANT QUERY REWRITE.为实现查询重写,必须使用CBO.
   
   
   
   
   
   
   
  ......

trunc()函数的学习 (oracle)

trunc()函数有两种用法 1:后面跟日期  2: 后面跟数字
A: SELECT a.times,to_date(a.times,'yyyymmdd'),trunc(to_date(a.times,'yyyymmdd'),'month') from dmf_loan_limit a
显示的结果为:
1 20080131     2008-1-31    2008-1-1
2 20080131  &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号