Partitions
Partitioning(分区)允许你把很大的Table和Index分解成小一点的,易于管理的块,曾为Partitions。每一个Partition都是一个拥有自己名字的独立的对象。
使用Partition的几个好处:
1。增加可用性
2。更容易管理Schema
3。减少在OLAP系统中的共享资源
4。提升在数据仓库中的查询性能
例子:
Example 4-1 Sample Row Set for Partitioned Table
PROD_ID CUST_ID TIME_ID CHANNEL_ID PROMO_ID QUANTITY_SOLD AMOUNT_SOLD ---------- ---------- --------- ---------- ---------- ------------- ----------- 116 11393 05-JUN-99 2 999 1 12.18 40 100530 30-NOV-98 9 33 1 44.99 118 133 06-JUN-01 2 999 1 17.12 133 9450 01-DEC-00 2 999 1 31.28 36 4523 27-JAN-99 3 999 1 53.89 125 9417 04-FEB-98 3 999 1 16.86 30 170 23-FEB-01 2 999 1 8.8 24 11899 26-JUN-99 4 999 1 43.04 35 2606 17-FEB-00 3 999 1 54.94 45 9491 28-AUG-98 4 350 1 47.45
You create time_range_sales
as a partitioned table using the statement in Example 4-2. The time_id
column is the partition key.
Example 4-2 Range-Partitioned Table
CREATE TABLE time_range_sales ( prod_id NUMBER(6) , cust_id NUMBER , time_id DATE , channel_id CHAR(1) , promo_id NUMBER(6) , quantity_sold NUMBER(3) , amount_sold NUMBER(10,2) ) PARTITION BY RANGE (time_id) (PARTITION SALES_1998 VALUES LESS THAN (TO_DATE('01-JAN-1999','DD-MON-YYYY')), PARTITION SALES_1999 VALUES LESS THAN (TO_DATE('01-JAN-2000','DD-MON-YYYY')), PARTITION SALES_2000 VALUES LESS THAN (TO_DATE('01-JAN-2001','DD-MON-YYYY')), PARTITION SALES_2001 VALUES LESS THAN (MAXVALUE) );
----
或者根据一下条件来分区,当channel_id 的值为2或者4时一个分区,为3或者9时为另一个分区。
PARTITION BY LIST (channel_id) (PARTITION even_channels VALUES (2,4), PARTITION odd_channels VALUES (3,9) );
http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/schemaob.htm#i18190
以上是关于Partition的一些解释。