程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫分區表操作方法

Oracle數據庫分區表操作方法

編輯:Oracle數據庫基礎

摘要:在大量業務數據處理的項目中,可以考慮使用分區表來提高應用系統的性能並方便數據管理,本文詳細介紹了分區表的使用。

   在大型的企業應用或企業級的數據庫應用中,要處理的數據量通常可以達到幾十到幾百GB,有的甚至可以到TB級。雖然存儲介質和數據處理技術的發展也很快,但是仍然不能滿足用戶的需求,為了使用戶的大量的數據在讀寫操作和查詢中速度更快,Oracle提供了對表和索引進行分區的技術,以改善大型應用系統的性能。

   使用分區的優點:

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

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

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

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

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

   ·范圍分區

   ·Hash分區(散列分區)

   ·復合分區

   下面將以實例的方式分別對這三種分區方法來說明分區表的使用。為了測試方便,我們先建三個表空間。
以下為引用的內容:
create tablespace dinya_space01
datafile ’/test/demo/Oracle/demodata/dinya01.dnf’ size 50M
create tablespace dinya_space01
datafile ’/test/demo/Oracle/demodata/dinya02.dnf’ size 50M
create tablespace dinya_space01
datafile ’/test/demo/Oracle/demodata/dinya03.dnf’ size 50M

  1.1. 分區表的創建

   1.1.1. 范圍分區

   范圍分區就是對數據表中的某個值的范圍進行分區,根據某個值的范圍,決定將該數據存儲在哪個分區上。如根據序號分區,根據業務記錄的創建日期進行分區等。

   需求描述:有一個物料交易表,表名:material_transactions。該表將來可能有千萬級的數據記錄數。要求在建該表的時候使用分區表。這時候我們可以使用序號分區三個區,每個區中預計存儲三千萬的數據,也可以使用日期分區,如每五年的數據存儲在一個分區上。

   根據交易記錄的序號分區建表: 以下為引用的內容:
SQL> create table dinya_test
2 (
3 transaction_id number primary key,
4 item_id number(8) not null,
5 item_description varchar2(300),
6 transaction_date date not null
7 )
8 partition by range (transaction_id)
9 (
10 partition part_01 values less than(30000000) tablespace dinya_space01,
11 partition part_02 values less than(60000000) tablespace dinya_space02,
12 partition part_03 values less than(maxvalue) tablespace dinya_space03
13 );
Table created.
    建表成功,根據交易的序號,交易ID在三千萬以下的記錄將存儲在第一個表空間dinya_space01中,分區名為:par_01,在三千萬到六千萬之間的記錄存儲在第二個表空間:

   dinya_space02中,分區名為:par_02,而交易ID在六千萬以上的記錄存儲在第三個表空間dinya_space03中,分區名為par_03.

   根據交易日期分區建表:
以下為引用的內容:
SQL> create table dinya_test
2 (
3 transaction_id number primary key,
4 item_id number(8) not null,

5 item_description varchar2(300),
6 transaction_date date not null
7 )
8 partition by range (transaction_date)
9 (
10 partition part_01 values less than(to_date(’2006-01-01’,’yyyy-mm-dd’))
tablespace dinya_space01,
11 partition part_02 values less than(to_date(’2010-01-01’,’yyyy-mm-dd’))
tablespace dinya_space02,
12 partition part_03 values less than(maxvalue) tablespace dinya_space03
13 );
Table created.


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved