oracle数据库建表分区

devices 按天的分析数据的数据比较大,所以在数据库存贮中,需要做到几点优化。

1. 为节省存贮,事实表中所有字段存取的是number类型。

2. kettle 的转化过程中,因为转化的维度比较多,转化过程比较慢,每秒才转换150条左右。所以采取了先将数据导入数据库中然后能过存储过程的方式,在数据库中内部转换。

3.   事实表的建表中,采取了按月数据分区。由于每天的数据一般在12-13万条左右,一个月数据在 370万左右。分区可增强可用性,维护方便,均衡I/O,改善查询性能.

由于在数据库存取中并无日期字段,而是采用yyyyMMdd 的数字字段的方式存取。在自动分区中 感觉并不太好按月来进行自动分区, 以下是我采用的分区代码按月进行分区。

 create table DEVICE_USEAGE_FACT     (
    date_id    number,
    pn_id    date,

    ......
   )
    partition by range (date_id)
    INTERVAL (100)    
    (
    partition p090101 values less than (20120201)
  );

-- 以100作为一个段,当转换一个月时,数据级就换一个百位级,形成按月分区的形式创建分区。

4. 为每一个维度字段建设立索引,由于建设立了分区,只能使用 普通索引, 不能使用位图索引.

猜你喜欢

转载自zhzhiqun2005.iteye.com/blog/1642375