partition table(1)

tolilong發表於2012-07-04

l 增加可用性,一個分割槽有問題,不影響其他的分割槽

l 減少維護工作量

l 均衡I/O,減少爭用。

l 提高查詢速度

l 分割槽對user是透明

1).range partition

create table part1(

id number primary key,

name varchar2(10),

dt date

)

partition by range(dt)

(

partition p1 values less than (to_date('2012/01/01','yyyy/mm/dd')) tablespace users,

partition p2 values less than (to_date('2013/01/01','yyyy/mm/dd')) tablespace test,

partition p3 values less than (maxvalue) tablespace users

)

SQL> insert into part1 values(4,'a',sysdate);

已建立 1 個資料列.

SQL> insert into part1 values(5,'b',sysdate-200);

已建立 1 個資料列.

SQL> insert into part1 values(6,'c',sysdate+200);

已建立 1 個資料列.

SQL> commit;

確認完成.

SQL> select * from part1 partition(p2);

ID NAME DT

---------- -------------------- --------------

4 a 01-7 -12

1 a 01-7 -12

Range partition可以是兩個欄位或多個欄位

create table part2(

id number primary key,

dt date,

des varchar2(20)

)

partition by range(id,dt)

(

partition p1 values less than (1,to_date('2012/01/01','yyyy/mm/dd')) tablespace users,

partition p2 values less than (10,to_date('2013/01/01','yyyy/mm/dd')) tablespace test,

partition p3 values less than (maxvalue,maxvalue) tablespace users

)

2).hash 分割槽 à雜湊分割槽

主要用去取值不確定的情況下采用的方法

create table part_hash(

id number primary key,

name varchar2(20),

dt date)

partition by hash(id)

(

partition p1 tablespace users,

partition p2 tablespace test

)

SQL> select * from part_hash partition (p1);

ID NAME DT

---------- ---------------------------------------- --------------

2 b 30-6 -12

SQL> select * from part_hash partition (p2);

ID NAME DT

---------- ---------------------------------------- --------------

1 a 01-7 -12

3 c 28-6 -12

或者採用如下方法:

create table part_hash1(

id number primary key,

name varchar2(20),

dt date)

storage(initial 1024k) --表空間的初始分配1024k

partition by hash(id)

partitions 3

store in (users,test,system);

3).list partition à列表分割槽

主要是用於某個列的值是可以列舉的

create table part4

(id number(1),

name varchar2(10)

)

partition by list(id)

(partition p1 values (1) tablespace users,

partition p2 values (2) tablespace test,

partition p3 values (default) tablespace users

)

insert into part4 values(1,'A')

insert into part4 values(2,'B')

insert into part4 values(3,'B')

select * from part4 partition (p3)

Normal 0 0 2 false false false MicrosoftInternetExplorer4

4).組合分割槽

a.Range-hash partition

b.range-list partition

c.range-range partition

d.list-range partition

e.list-list partition

f.list-hash partition

eg:

create table part5

(id int,

name varchar2(10)

)

partition by range(id)

subpartition by hash(name)

subpartitions 2 store in (users,test)

(partition p1 values less than (10) tablespace users,

partition p2 values less than (20) tablespace test,

partition p3 values less than (maxvalue) tablespace users

)

先進行range partition,然後子分割槽按照hash進行。

[@more@]

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

相關文章