values less than oracle,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),

SUBPARTITION SUBP3 values (3)

)

(

PARTITION P0 VALUES less than (1),

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值