首頁 > 資料庫 > Oracle > 主體

什麼是oracle表分區

WBOY
發布: 2022-05-25 16:30:25
原創
4156 人瀏覽過

在oracle中,表分區指的是當表中的資料不斷增大時,將表中的資料在物理上存放到多個表空間,也即將表進行分區;表分區能夠將表、索引或索引組織表進一步細分為段,這些資料庫物件的段叫做分區,能夠改善可管理性、效能和可用性。

什麼是oracle表分區

本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

什麼是oracle表分區

分區表:當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分區。

表進行分區後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理文件上),這樣查詢資料時,不至於每次都掃描整張表。

表格分區的具體作用

    oracle的表格分區功能透過改善可管理性、效能和可用性,從而為各式應用程式帶來了極大的好處。通常,分區可以使某些查詢以及維護操作的效能大大提高。此外,分割區還可以大幅簡化常見的管理任務,分割區是建構千兆位元組資料系統或超高可用性系統的關鍵工具。

    分區功能能夠將資料表、索引或索引組織表進一步細分為段,這些資料庫物件的段稱為分區。每個分割區有自己的名稱,也可以選擇自己的儲存特性。從資料庫管理員的角度來看,一個分區後的物件具有多個段,這些段既可進行集體管理,也可單獨管理,這就使資料庫管理員在管理分區後的對象時有相當大的靈活性。但 是,從應用程式的角度來看,分區後的表與非分區表完全相同,使用 SQL DML 命令存取分區後的表時,無需任何修改。

何時使用分區表,官方給的建議是:

  • a. 表的大小超過2GB。

  • b. 表中包含歷史數據,新的數據被增加到新的分割區。

表格分割區的優缺點

優點:

  • ##a.改善查詢效能:對分區物件的查詢可以只搜尋自己關心的分區,提高檢索速度。

  • b.增強可用性:如果表的某個分割區發生故障,表在其他分割區的資料仍然可用。

  • c.維護方便:如果表的某個分割區發生故障,需要修復數據,只修復該分割區即可。

  • d.均衡I/O:可以把不同的分割區對應到磁碟以平衡I/O,改善整個系統效能。

缺點:

分區表相關,已經存在的表沒有方法可以直接轉換成分區表。不過oracle提供了線上重定義表的功能。

表格分割區的幾種型別及運算方法

1 範圍分割區(range)  maxvalue

    範圍分割區將資料基於範圍對應到每一個分區,這個範圍是你在建立分區時指定的分區鍵決定的。這種分區方式是最常用的,並且分區鍵經常採用日期。舉個例子:你可能會將銷售資料依照月份進行分區。

    當使用範圍分區時,請考慮以下幾個規則:

a.每個分區都必須有一個VALUES LESS THEN子句,它指定了一個不包括在該分區中的上限值。分區鍵的任何值等於或大於這個上限值的記錄都會被加入到下一個高一些的分區。

b.所有分割區,除了第一個,都會有一個隱式的下限值,這個值就是此分割區的前一個分割區的上限值。

c.如果某些記錄暫無法預測範圍,可以建立maxvalue分割區,所有不在指定範圍內的記錄都會儲存到maxvalue所在分割區。

例1:假設有一個test表,表中有資料200000行,我們將此表透過id進行分區,每個分區儲存100000行,我們將每個分區保存到單獨的表空間中,這樣資料檔案就可以跨越多個實體磁碟。以下是建立表格和分割區的程式碼,如下:

----先建立多個測試表空間

sys@ORCL>create tablespace test_ts01 datafile '/home/oracle/test_01.dbf' size 32m extent management local autoallocate;
Tablespace created.
sys@ORCL>create tablespace test_ts02 datafile '/home/oracle/test_02.dbf' size 32m extent management local autoallocate;
Tablespace created.
sys@ORCL>create tablespace test_ts03 datafile '/home/oracle/test_03.dbf' size 32m extent management local autoallocate;
Tablespace created.
登入後複製

----建立test分割表

create table test
(        id number not null,
         first_name varchar2(30) not null,
         last_name varchar2(30) not null,
         phone varchar2(30) not null,
         email varchar2(80),
         status char(1),
         constraint test_id primary key (id)
)
partition by range (id)
(        partition test_part1 values less than (100000) tablespace test_ts01,
         partition test_part2 values less than (200000) tablespace test_ts02,
         partition test_part3 values less than (maxvalue) tablespace test_ts03
);
登入後複製

推薦教學:《

Oracle影片教學
#

以上是什麼是oracle表分區的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板