Oracle Partitioning(轉)

zhouwf0726發表於2019-03-19
Oracle 分割槽是 Oracle9i 企業版的一個選項,可以增強各種應用程式的可管理性、效能和可用性。分割槽允許將表、索引以及索引編排表細分為更小的段,從而能在更細的粒度級管理和訪問這些資料庫物件。Oracle 提供豐富的分割槽模式來滿足每一種商務需求。而且,由於它在 SQL 語句中是完全透明的,分割槽幾乎可應用於任何應用程式。


分割槽的優點
分割槽能改善各種應用程式的可管理性、效能和可用性,具有非常多的優點。分割槽往往根據數量級提高某些查詢或維護操作的效能。另外,分割槽可以極大地簡化常見的管理任務。

分割槽還可以使資料庫設計人員和管理人員能夠處理一些最前沿的應用程式而引發的最棘手的難題。分割槽在構建 TB 級的系統或對可用性要求極高的系統時非常關鍵。

分割槽的基本知識
分割槽允許將表、索引或索引編排表細分為更小的段。資料庫物件的每個段就叫一個區。每個區有自己的名稱,也可以具備自己的儲存特徵。從資料庫管理員的角度看,分割槽的物件有多個段,既可以一起管理也可單獨管理。這就賦予管理人員相當大的靈活性來管理分割槽的物件。然而,從應用的角度看,分割槽的表與不分割槽的表是一致的;在通過 SQL DML 命令訪問分割槽表時不需要做任何的修改。

表通過使用‘分割槽鍵’分割槽;分割槽鍵是確定某個行所在區的一組列。Oracle9i 提供四種表的分割槽技術:

  • 範圍分割槽:每個區由一系列分割槽鍵的值來指定(對於將日期列作為分割槽鍵的表,‘1 月-2001年’區包含分割槽鍵值為‘01-1 月-2001’至‘31-1 月-2001’的所有行)
  • 列表分割槽:每個區由一列分割槽鍵值指定(對於將區域列作為分割槽鍵值的表,‘北美州’區可能包含的值有‘加拿大’、‘美國’以及‘墨西哥’)
  • 雜湊分割槽:雜湊演算法應用於分割槽鍵值,來確定某個行的區
  • 範圍-雜湊組合分割槽:即範圍和雜湊分割槽技術的結合。表首先進行範圍分割槽,然後每個範圍區再單獨通過雜湊分割槽技術進行分割槽。
索引編排表既可做範圍分割槽也可做雜湊分割槽。

Oracle9i 還提供三種型別的分割槽索引:

  • 本地索引:本地索引是分割槽表中的一種索引,分割槽方法與基本分割槽表的完全一樣。本地索引的每個區只對應於基表的一個區。
  • 全域性分割槽索引:全域性分割槽索引是分割槽或非分割槽表中的索引,通過該表中的不同分割槽鍵分割槽。全域性分割槽索引只能採用範圍分割槽法。例如,表可根據月份進行範圍分割槽,這樣就有 12 個區,而該表的索引使用不同的分割槽鍵進行範圍分割槽,就會有不同數量的區。
  • 全域性非分割槽索引:全域性非分割槽索引基本上與非分割槽表的索引一致。索引結構未被分割槽。
Oracle 提供一套強健的技術用於表、索引和索引編排表的分割槽,因此分割槽功能可最優地應用於任何商務環境中的任何應用程式。

Oracle 還另外提供了一組完整的 SQL 命令用於管理分割槽表。其中的命令包括新增新區、刪除區、拆分分割槽以及合併分割槽。

分割槽可改善可管理性
Oracle 分割槽選項允許將表和索引劃分為更小、更易於管理的段,從而使資料庫管理員能夠在管理資料時追求“劃分並控制”的措施。

通過分割槽,維護操作可集中於表的特殊部分。例如,資料庫管理員可能只備份表的一個區而不是整個表。對於整個資料庫物件的維護操作,在每個區的基礎上加以執行是可能的,這樣就將維護過程分成更易於管理的塊。

在管理性方面,分割槽的典型用法就是支援資料倉儲中‘滾動視窗’載入程式。假定 DBA 在每週的基礎上將新的資料載入到表中。該表可進行範圍分割槽,以便每個區中包含一週的資料。載入程式只是簡單新增一個新區。新增一個區比修改整個表要有效得多,因為 DBA 不需要修改任何其它區。

分割槽可改善效能
通過限制要檢查或操作的資料量和啟用並行執行,Oracle 分割槽選項提供許多效能的優點。這些特性包括:

  • 分割槽修剪 (Partitioning Pruning):分割槽修剪是最簡單也是最有效的通過分割槽改善效能的方法。分割槽修剪通常根據幾個數量級改善查詢效能。例如,假定一個應用程式中有一個包含訂單歷史記錄的訂單表,而且該表已經按周進行了分割槽。請求一週內定單的查詢只會訪問訂單表的一個區。如果訂單表有 2 年的歷史資料,該查詢將訪問一個區而不是 104 個區。僅僅由於分割槽修剪功能的作用,該查詢的執行速度實際上快了 100 倍。分割槽修剪與 Oracle 其它所有的效能特性一起發揮作用。Oracle 將分割槽修剪功能與任何的索引技術、連線技術或並行訪問方法一起使用。
  • 智慧化分割槽連線 (Partition-wise Join):分割槽也可通過使用被稱為智慧化分割槽連線的技術改善多表連線的效能。智慧化分割槽連線可用於將兩個表連線在一起,而且這兩個表都在連線鍵上分割槽。智慧化分割槽連線將大型的連線拆分為小的連線,在每個區間執行,減少了整個連線的時間。這顯著地提高了序列和並行執行的效能。
  • 更新和刪除的並行執行:分割槽能夠並行執行 UPDATE、DELETE 和 MERGE 語句。當訪問分割槽和非分割槽的資料庫物件時,Oracle 會並行化 SELECT 語句和 INSERT 語句。不過,為了並行化 UPDATE、DELETE 和 MERGE 語句,目標表必須進行分割槽。並行執行這些 SQL 操作可極大地改善效能,尤其是對涉及大量資料的 UPDATE、DELETE 或 MERGE 操作。
分割槽可改善可用性
分割槽的資料庫物件提供區的獨立性。區獨立性這個特徵可以是高可用性策略的一個重要組成部分。例如,如果分割槽表的一個區不可用,該表中的所有其它區仍然保持線上和可用,應用程式可以繼續對該表執行查詢和事務。而且,如果這些資料庫操作不需要訪問不可用的那個區,它們就會成功地執行。

資料庫管理員可以指定每個區單獨儲存在表空間中;這會使管理員分別進行每個區的備份和恢復操作,獨立於表中的其它區。

此外,分割槽可減少計劃中的當機時間。分割槽產生的效能增益可使資料庫管理員在相對小批量的視窗中完成大型資料庫物件的維護操作。

發展方向
在 Oracle 分割槽選項推出後的每一個重要版本中,Oracle 都新增了新的分割槽方法。Oracle8 引入了範圍分割槽,Oracle8i 引入了雜湊和範圍-雜湊組合分割槽,而 Oracle9i 引入了列表分割槽。Oracle 計劃繼續新增新的分割槽技術,確保以最好的分割槽技術滿足所有的商務需求。

結束語
Oracle9i 分割槽能夠極大地增強幾乎所有應用程式的可管理性、效能和可用性。分割槽可應用於最前沿的應用程式,並且是保證這些應用程式成功的關鍵技術成分。不過,分割槽也可更多地應用於常見的資料庫應用程式,以簡化管理和減少管理此類應用程式的成本。

關鍵特性
核心功能
  • 通過 4 種可能的技術用於表分割槽:
    • 範圍分割槽
    • 新!列表分割槽
    • 雜湊分割槽
    • 範圍-雜湊組合分割槽
  • 索引編排表可通過兩種可能的技術進行分割槽:
    • 範圍分割槽
    • 新!雜湊分割槽
  • 索引的可能性:
    • 本地索引:分割槽的索引與基表一樣
    • 全域性非分割槽索引:索引不分割槽
    • 全域性分割槽索引:索引根據不同於基表的標準進行分割槽
關鍵效能特性
  • 分割槽修剪(Partition Pruning)
  • 智慧化分割槽連線(Partition-wise Joins)
  • 並行更新和刪除
可管理特性
  • 對新增、刪除、拆分以及合併分割槽的完全並行化支援
  • 更新過程中行的自動行移植
  • 新!在 DDL 中全域性索引的自動維護
  • 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242368/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章