熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

詳細講解Oracle表分區的相關概念及其優點

2013-11-13 22:23:25  來源: Oracle 

  Oracle i以後推出了分區選項分區將表分離在若於不同的表空間上用分而治之的方法來支撐元限膨脹的大表組大表在物理一級的可管理性將大表分割成較小的分區可以改善表的維護備份恢復事務及查詢性能

  分區的具體優點

   增強可用性如果表的一個分區由於系統故障而不能使用表的其余好的分區仍可以使用

   減少關閉時間如果系統故障只影響表的一部份分區那麼只有這部份分區需要修復可能比整個大表修復花的時間更少

   維護輕松如果需要得建表獨產管理每個公區比管理單個大表要輕松得多

   均衡I/O可以把表的不同分區分配到不同的磁盤來平衡I/O改善性能

   改善性能對大表的查詢增加修改等操作可以分解到表的不同分區來並行執行可使運行速度更快在數據倉庫的TP查詢特別有用

   分區對用戶透明最終用戶感覺不到分區的存在

  列表分區表create table BS_CDR_WLAN_LOC_

  (

  DAY_NUMBER NUMBER() not null

  ……

  TPREMARK VARCHAR

  )

  partition by list (DAY_NUMBER)

  (

  partition P_BS_CDR_OTH_LOC_ values (

  partition P_BS_CDR_OTH_LOC_ values (

  ……

  partition P_BS_CDR_OTH_LOC_ values (

  )

  按范圍分區

  注就是按一定range來分區

  SQL> create table niegc_part

  

   part_id integer primary key

   part_date date

   part_dec varchar

  

   partition by range(part_date)

  

   partition part_ values less than(to_date(yyyymmdd))

   partition part_ values less than(to_date(yyyymmdd))

   partition part_ values less than(maxvalue)

  

  Hash分區(散列分區)

  散列分區通過指定分區編號來均勻分布數據的一種分區類型因為通過在I/O設備上進行散列分區使行這些分區大小一致

  如將part_id的數據根據自身的情況散列地存放在指定的三個表空間中

  create table niegc_part

  (

  part_id integer primary key

  part_date date

  part_dec varchar

  )

  partition by hash(part_id)

  (

  partition part_ tablespace dw

  partition part_ tablespace dw

  )

  復合分區

  create table tab_students

  (c_id number

  c_name varchar

  c_age number

  c_birthday date

  c_nation varchar

  )

  partition by range(c_id)

  subpartition by list(c_nation)

  SUBPARTITION TEMPLATE

  (SUBPARTITION part_hanzu VALUES (漢族

  SUBPARTITION part_others VALUES (DEFAULT)

  )

  (

  PARTITION part_id VALUES LESS THAN (

  PARTITION part_id VALUES LESS THAN (

  PARTITION part_id VALUES LESS THAN (MAXVALUE)

  )

  索引分區

  注意 對某個字段已做了分區了是不允許再建立索引分區的這一點要非常注意

  全局索引建立時global子句允許指定索引的范圍值這個范圍值為索引字段的范圍值

  create index idx_part_id on niegc_part(part_dec)

  global partition by range(part_dec)

  (

  partition idx_ values less than() tablespace dw

  partition idx_ values less than(maxvalue) tablespace dw

  )

  局部索引分區的建立

  (注表必須存在分區此分區的個數必須和分區表的分區個數一樣不然是建立不起來的)

  create index idx_part_id on niegc_part(part_dec)

  local

  (

  partition idx_ tablespace dw

  partition idx_ tablespace dw

  )

  分區維護(只對范圍分區)

  (增加一個分區分區范圍只能往上增不能增加一個少於原有的分區

  alter table tablename add partition new_partitionname values less than(maxvalue)

  (合並/拆分分區(合並後的分區必須指下最後一個大value的分區)

  alter table tablename merge partitions partitionnamepartitionname into partition partitionname

  alter table tablename split partition partitionname at (xx) into (

  partition newpartition partition newpartition

  注意xx為分割點

  (刪除一個分區

  alter table niegc_part drop partition partitionname

  ()將分區改名

  alter table table_name rename Partition partition_name to partition_name

  ()將分區改表空間

  alter table table_name move partition_name

  tablespace tablespace_name nologging

  ()查詢特定分區

  select count(*) from table_name partition (partition_name)

  ()添加數據

  insert into table_name select * from table_name partition (partition_name)

  ()分區表的導出

  userid=USER/PWD

  buffer=

  tables=table_namepartition_name

  file=Eexp_paraxxxdmp

  log=Eexp_paraxxxlog

  ()技巧刪除表中一個字段

  alter table table_name set unused column column_name

  ()加一個字段

  alter table table_name add column_name number(

  六總結

  分區表是將大表的數據分成稱為分區的許多小的子集i提供四種分區方法列表分區范圍分區哈希分區和混合分區

   范圍分區是根椐分區鍵的不同取值范圍來劃分子集的關鍵字RANGE VALUES LESS THAN

   列表分區是根椐分區鍵的一些離散的取值來劃分子集的關鍵字LIST VALUES

   哈希分區是應用哈希算法將分區鍵對應到某個子集中去關鍵字HASH PARTITIONS

   混合分區只能有兩層第一層是范圍分區第二層可以是列表分區或者哈希分區

   范圍分區和列表分區中如果插入記錄的分區鍵沒有對應的容納分區會產生ORA

   update操作如果會使記錄從一個分區遷移到另一個分區且分區表的ROW MOVEMENT屬性是DISABLE會產ORA

   分區表上的索引有兩大類普通的二叉樹索引分區索引下面講到的都是分區索引

   按索引分區和表分區間的對應關系可以分為局部索引和全局索引

   局部索引的索引分區和表分區間是一一對應的全局索引則相反

   局部索引的分區方法可以用上面提到四種的任何一種全局索引的分區方法只有范圍分區(而且最高的分區必須用MAXVALUE來定義)

   ORACLE自動維護局部索引的分區當表分區被合並分裂或刪除時關聯的索引分區也會被合並分裂或刪除對分區表執行管理操作時會使其上的全局索引失效

   建在分區表的位圖索引必須是局部分區索引

   ORACLE推薦盡可能地使用局部索引

  按索引欄位和分區鍵間的關系分為前綴索引和非前綴索引

   前綴索引最前面的欄位是分區鍵欄位非前綴索引相反

   在這兩種分類方法的四種組合中只有三種有效(局部前綴索引局部非前綴索引全局前綴索引)不存在全局非前綴索引

   分區表給CBO帶來很多選項如分區排除並行分區連接等(責任編輯盧兆林)


From:http://tw.wingwit.com/Article/program/Oracle/201311/18966.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.