一级女人毛片人一女人-一级女性大黄生活片免费-一级女性全黄久久生活片-一级女性全黄生活片免费-国产美女在线一区二区三区-国产美女在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

談談怎么實現Oracle數據庫分區表

發布時間:  2012/8/21 16:57:15

Oracle數據庫分區是作為Oracle數據庫性能優化的一種重要的手段和方法,做手頭的項目以前,只聆聽過分區的大名,感覺特神秘,看見某某高手在討論會上夸夸其談時,真是罵自己學藝不精,最近作GPS方面的項目,處理的數據量達到了幾十GB,為了滿足系統的實時性要求,必須提高數據的查詢效率,這樣就必須通過分區,以解燃眉之急!

先說說分區的好處吧!

1) 增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用;
-
 

2) 維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可;

3) 均衡I/O:可以把不同的分區映射到磁盤以平衡I/O,改善整個系統性能;

4) 改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高檢索速度。

Oracle數據庫提供對表或索引的分區方法有三種:

ü 范圍分區

ü Hash分區(散列分區)

ü 復合分區

一、范圍分區詳細說明

范圍分區就是對數據表中的某個值的范圍進行分區,根據某個值的范圍,決定將該數據存儲在哪個分區上。如根據序號分區,根據時間等來進行分區。根據序號,比如小于2000000的放在part01, 2000000~4000000的放在part02。。。

create table AAA
(
 id number primary key,
 indate date not null
)
partition by range(indate)
(
 partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace space01,
 partition part_02 values less than(to_date('2010-01-01','yyyy-mm-dd')) tablespace space02,
 partition part_03 values less than(maxvalue) tablespace space03
);

space01\ space02\ space03為建立的三個表空間,相當于把建立的一個大的表分在了3個不同的表空間的分區上了。

二、Hash分區(散列分區)詳細說明

   散列分區為通過指定分區編號來均勻分布數據的一種分區類型,因為通過在I/O設備上進行散列分區,使得這些分區大小一致。也就是只命名分區名稱,這樣均勻進行數據分布。

三、復合分區詳細說明

   有時候我們需要根據范圍分區后,每個分區內的數據再散列地分布在幾個表空間中,這樣我們就要使用復合分區。復合分區是先使用范圍分區,然后在每個分區內再使用散列分區的一種分區方法。

partition by range(indate)subpartition by hash(id)
subpartitions 3 store in (space01, space02, space03)
(
partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’)),
partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’)),
partition part_03 values less than(maxvalue)
 );

四、分區表操作

1、插入記錄:insert into AAA values(1 ,sysdate);

2、查詢分區表記錄:select * from AAA partition(part_01);

3、更新分區表的記錄:update AAA partition(part_01) t set indate=’’where id=1; 但是當更新的時候指定了分區,而根據查詢的記錄不在該分區中時,將不會更新數據

4、刪除分區表記錄:delete from AAA partition(part_02) t where id=4; 如果指定了分區,而條件中的數據又不在該分區中時,將不會刪除任何數據。

5、增加一個分區:alter table AAA add partition part_04 values less than(to_date(’2012-01-01’,’yyyy-mm-dd’)) tablespace dinya_spa ce03; 增加一個分區的時候,增加的分區的條件必須大于現有分區的最大值,否則系統將提示ORA-14074 partition bound must collate higher than that of the last partition 錯誤。

6、合并一個分區:alter table AAA merge partitions part_01,part_02 into partition part_02; ,如果在合并的時候把合并后的分區定為part_01的時候,系統將提示ORA-14275 cannot reuse lower-bound partition as resulting partition 錯誤。

7、刪除分區:alter table AAA drop partition part_01; 刪除分區表的一個分區后,查詢該表的數據時顯示,該分區中的數據已全部丟失,所以執行刪除分區動作時要慎重,確保先備份數據后再執行,或將分區合并。

五、建立索引

    分區表和一般表一樣可以建立索引,分區表可以創建局部索引和全局索引。當分區中出現許多事務并且要保證所有分區中的數據記錄的唯一性時采用全局索引。

1.       局部索引分區的建立:create index idx_t on AAA(id)
 local
(
partition idx_1 tablespace space01,
partition idx_2 tablespace space02,
partition idx_3 tablespace space03
);

2.       全局索引建立時global 子句允許指定索引的范圍值,這個范圍值為索引字段的范圍值:create index idx_t on AAA(id)
global partition by range(id)
(
partition idx_1 values less than (1000) tablespace space01,
partition idx_2 values less than (10000) tablespace space02,
partition idx_3 values less than (maxvalue) tablespace space03
);

當然也可以不指定索引分區名直接對整個表建立索引: create index idx_t on AAA(id);


本文出自:億恩科技【www.laynepeng.cn】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線