ORACLE各种PARTITION的分析(二)

2014-11-24 16:20:26 · 作者: · 浏览: 1
s7,
SUBPARTITION sp8 TABLESPACE tbs8)
(PARTITION sal99q1 VALUES LESS THAN (TO_DATE('01-APR-1999', 'DD-MON-YYYY')),
PARTITION sal99q2 VALUES LESS THAN (TO_DATE('01-JUL-1999', 'DD-MON-YYYY')),
PARTITION sal99q3 VALUES LESS THAN (TO_DATE('01-OCT-1999', 'DD-MON-YYYY')),
PARTITION sal99q4 VALUES LESS THAN (TO_DATE('01-JAN-2000', 'DD-MON-YYYY')));
这样,没有子分区通过的HASH分区将会统一到不同的表空间。
二:使用各种分区方法的场景
1:什么时候用Range Partition
Range Partition是一种方便的方法分区历史的数据,经常在DATE COLMUN通过时间间隔组织数据。比如说:你要查询2009年8月的数据,查询将直接找到2009年8月的分区,避免了大量不必要的数据扫描。
在处理周期性的load新数据和purge老数据的时候,Range Partition也是一个理想的选择。
应用场景:
a)有一个大表需要通过时间字段频繁的访问,通过这个时间字段做RANG PARTITION 有利于做分区裁剪。
b)如果你不能对一个大表在指定的时间内做备份或RESTORE,你可以通过RANGE把他们分成小的logic片来做。
2:什么时候用HASH Partition
HASH Partition不是一个很好的管理历史的方法。
应用场景
a)增加大表的可用性。
b)避免各个分区之间查找数据,并且各个分区可以放在不同的设备上,达到最大的I0吞吐量。也可以用STORE IN 子句分配每个分区到不同的表空间。
3:什么时候用LIST Partition
如果你想映射数据到离散的值的时候,LIST Partition是个比较好的选择。
4:什么时候用Composite Range-Hash Partitioning
这是Range和Hash的组合使用,先对表用RANGE分,然后对每个RANGE再做HASH分区。
由于做了RANGE后的子分区是没有规律的,如果在数据仓库设计时候,通过查询需求觉得有必要再细分,可以考虑使用。ORACLE会把子分区又分成不同的SEGMENT