【ORACLE新特性】11G 分割槽新特性

renjixinchina發表於2014-03-12

Oracle各個版本分割槽的變化


11g新特性

1.      引用分割槽

現在,可以根據表的引用約束條件中引用的此表的分割槽方法對

表進行分割槽。

分割槽鍵是透過現有的父/子關係解析的。

分割槽鍵是由活動的主鍵和外來鍵約束條件強制實施的。

包含父/子關係的表可以透過從父表繼承分割槽鍵進行均勻分割槽,

而無需複製鍵列。

分割槽是自動維護的。

 

create table customers

(

   cust_id   number primary key,

   cust_name varchar2(200),

   rating    varchar2(1) not null

)

partition by list (rating)

(

   partition pA values ('A'),

   partition pB values ('B')

);

sales 表的建立如下所示。它是 customers 表的一個子表。

 

create table sales

(

   sales_id    number primary key,

   cust_id     number not null,

   sales_amt   number,

   constraint  fk_sales_01

    foreign key (cust_id)

    references customers

);

create table sales

(

   sales_id    number primary key,

   cust_id     number not null,

   sales_amt   number,

   constraint  fk_sales_01

    foreign key (cust_id)

    references customers

)

partition by reference (fk_sales_01);

2.      間隔分割槽

間隔分割槽是範圍分割槽的一種擴充套件

 當插入的資料超過了所有範圍分割槽時,將建立指定間隔的分割槽。

 必須至少建立一個範圍分割槽。

間隔分割槽可以自動建立範圍分割槽。

CREATE TABLE sales (order_date DATE, ...) PARTITON BY RANGE (order_date) INTERVAL(NUMTOYMINTERVAL(1,'month') (PARTITION p_first VALUES LESS THAN ('01-JAN-2006' store in (TS1,TS2,TS3)

);

3.      虛擬列分割槽

虛擬列值是透過計算函式或表示式得到的。

可以在 CREATE ALTER 表操作中定義虛擬列。

虛擬列值實際上並未儲存在磁碟上的錶行中,而是根據需要

進行計算。

像其它表列型別一樣,可以對虛擬列進行索引,可以在查詢、

DML DDL 語句中使用它們。

可在虛擬列上對錶和索引進行分割槽,甚至可以收集它們的統

計資訊。

create table sales

(

   sales_id      number,

   cust_id       number,

   sales_amt     number,

   sale_category varchar2(6)

   generated always as

   (

      case

         when sales_amt <= 10000

            then 'LOW'

         when sales_amt > 10000

            and sales_amt <= 100000

            then case

               when

 

cust_id < 101 then 'LOW'

               when

 

cust_id between 101 and 200 then 'MEDIUM'

               else

 

'MEDIUM'

            end

         when sales_amt > 100000

            and sales_amt <= 1000000

            then case

               when

 

cust_id < 101 then 'MEDIUM'

               when

 

cust_id between 101 and 200 then 'HIGH'

               else

 

'ULTRA'

            end

         else 'ULTRA'

      end

    ) virtual

)

partition by list (sale_category)

(

   partition p_low values ('LOW'),

   partition p_medium values ('MEDIUM'),

   partition p_high values ('HIGH'),

   partition p_ultra values ('ULTRA')

)

4.      系統分割槽

在資料表上允許應用來控制分割槽的使用

提供分割槽的優點,但分割槽策略以及資料的放置,由應用程式來控制

不使用分割槽關鍵字(與傳統的表分割槽不同)

 不提供傳統意義上的分割槽裁剪功能

create table sales3

(

    sales_id   number,

    product_code number,

    state_code   number

)

partition by system

 

   partition p1 tablespace users,

   partition p2 tablespace users

);

5.      完全組合分割槽

二維分割槽模式,支援更多方式


範圍-範圍

範圍-雜湊

範圍-列表

列表-範圍

列表-雜湊

列表-列表

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15747463/viewspace-1108322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章