全面剖析Oracle資料庫中的分割槽功能

zyb200發表於2007-05-21
Oracle 分割槽功能可以提高許多應用程式的可管理性、效能與可用性。透過分割槽功能,可以將表、索引和索引組織表進一步細分為段,從而能夠更精確地管理和訪問這些資料庫物件。Oracle 提供了種類繁多的分割槽方案以滿足每種業務要求。而且,因為在 SQL 語句中分割槽是完全透明的,所以該功能幾乎可應用於任何應用程式[@more@]

分割槽功能的優勢

分割槽功能透過改善可管理性、效能和可用性,從而為各式應用程式帶來了極大的好處。通常,分割槽可以使某些查詢以及維護操作的效能大大提高。此外,分割槽還可以極大簡化常見的管理任務。透過分割槽,資料庫設計人員和管理員能夠解決前沿應用程式帶來的一些難題。分割槽是構建千兆位元組資料系統或超高可用性系統的關鍵工具。

分割槽功能的基本知識

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

表的分割槽是透過“分割槽鍵”來實現的,分割槽鍵指的是一些列,這些列決定了某一行所在的分割槽。Oracle 資料庫 10g 提供了六項技術用於對錶進行分割槽:

範圍分割槽

每個分割槽都由一個分割槽鍵值範圍指定(對於一個以日期列作為分割槽鍵的表,“2005 年 1 月”分割槽包含分割槽鍵值為從“2005 年 1 月 1 日”到“2005 年 1 月 31 日”的行)。

列表分割槽

每個分割槽都由一個分割槽鍵值列表指定(對於一個地區列作為分割槽鍵的表,“北美”分割槽可能包含值“加拿大”“美國”和“墨西哥”)。

雜湊分割槽

將雜湊演算法用於分割槽鍵來確定指定行所在的分割槽。

組合範圍雜湊分割槽

範圍和雜湊分割槽技術的組合,透過該組合,首先對錶進行範圍分割槽,然後針對每個單獨的範圍分割槽再使用雜湊分割槽技術進一步細分。索引組織表只能進行範圍分割槽。

組合範圍列表分割槽

範圍和列表分割槽技術的組合,透過該組合,首先對錶進行範圍分割槽,然後針對每個單獨的範圍分割槽再使用列表分割槽技術進一步細分。索引組織表可以按範圍、列表或雜湊進行分割槽。

Oracle 資料庫 10g 還提供了三種型別的分割槽索引:

本地索引

本地索引是其分割槽方式與其所在基礎表的分割槽方式一模一樣的索引。本地索引的每個分割槽僅對應於其所在基礎表的一個分割槽。

全域性分割槽索引

全域性分割槽索引是使用不同於其所在表的分割槽鍵進行分割槽的索引,其所在表可以是分割槽表或非分割槽表。全域性分割槽的索引可以使用範圍或雜湊分割槽進行分割槽。例如,某個表可以按月份進行範圍分割槽,因此具有十二個分割槽,而該表上的索引則可以使用不同的分割槽鍵進行範圍分割槽,從而具有不同的分割槽數量。

全域性非分割槽索引

全域性非分割槽索引基本上和非分割槽表的索引一樣。索引結構是不分割槽的。

Oracle 提供了一系列豐富的技術,可用於對錶、索引和索引組織表進行分割槽,因此可以針對任何業務環境中的任何應用程式進行最佳的分割槽 Oracle 還提供一套完整的 SQL 命令,用於管理分割槽表。其中包括新增新分割槽、刪除分割槽、分拆分割槽以及合併分割槽的命令。

用分割槽功能提高可管理性

透過 Oracle 分割槽功能,可將表和索引分成更多、更小的可管理單元,從而使資料庫管理員能以“化整為零,個個擊破”的方式管理資料。

使用分割槽功能,維護操作可集中於表的特定部分。例如,資料庫管理員可以只對表的一部分做備份,而不必對整個表做備份。對整個資料庫物件的維護操作,可以在每個分割槽的基礎上進行,從而將維護工作分解成更容易管理的小塊。

利用分割槽功能提高可管理性的一個典型用法是支援資料倉儲中的‘滾動視窗’載入程式。假設資料庫管理員每週向表中載入新資料。可以對該表進行範圍分割槽,使每個分割槽包含一週的資料。這樣載入程式只是簡單地新增新的分割槽。新增一個分割槽的操作比修改整個表效率高很多,因為 DBA 不需要修改任何其他分割槽。

用分割槽功能提高效能

由於限制了所檢查或操作的資料數量,同時支援並行任務執行,Oracle 分割槽功能實現了效能上增益。這些特性包括:

分割槽修整

分割槽修整是用分割槽功能提高效能的最簡單最有價值的手段。分割槽修整常常能夠將查詢效能提高几個數量級。例如,假設某個應用程式包含一個儲存訂單歷史記錄的 Orders 表,並且此表已按周分割槽。查詢一週的訂單隻需訪問該訂單表的一個分割槽。如果該訂單表包含兩年的歷史記錄,這個查詢只需要訪問一個分割槽而不是一百零四個。該查詢的執行速度因為分割槽修整而有可能快一百倍。分割槽修整能與所有其他 Oracle 效能特性協作。Oracle 能將分割槽修整功能與任何索引技術、聯接技術或並行訪問方法結合使用。

分割槽智慧聯接

分割槽功能可以透過稱為分割槽智慧聯接的技術提高多表聯接的效能。當兩個表要聯接在一起,而且每個表都用聯接鍵來分割槽時,就可以使用分割槽智慧聯接。分割槽智慧聯接將大型聯接分解成較小的發生在各個分割槽間的聯接,從而用較少的時間完成全部聯接。這就給序列和並行的執行都能帶來顯著的效能改善。

用分割槽功能提高可用性

分割槽的資料庫物件具有分割槽獨立性。該分割槽獨立性特點可能是高可用性戰略的一個重要部分,例如,如果分割槽表的一個分割槽不能用,但該表的所有其他分割槽仍然保持線上並可用。那麼這個應用可以繼續針對該分割槽表執行查詢和事務處理,只要不是訪問不可用的分割槽,資料庫操作仍然能夠成功執行。

資料庫管理員可以指定各分割槽存放在不同的表空間裡,從而讓管理員隔離其它表分割槽針對單個分割槽進行備份與恢復操作。還有,分割槽功能可以減少計劃停機時間。由於分割槽功能改善了效能,使資料庫管理員能用相對較少的時間完成大型資料庫物件的維護工作。

未來發展方向

自從引入分割槽技術以來,Oracle 公司在每次推出重要版本時都會增加新的分割槽方法。Oracle8 引入了範圍分割槽功能,Oracle8i 引入了雜湊和組合範圍雜湊分割槽功能,Oracle9i 引入了列表分割槽功能。在最新版本 Oracle 資料庫 10g 中,則增強了用於索引組織表和全域性分割槽索引的分割槽策略,並且擴充套件了其用於所有分割槽維護操作的併發索引維護功能。Oracle 公司致力於不斷完善分割槽技術,確保滿足所有的業務需求。

結論

具有 Oracle 分割槽功能的 Oracle 資料庫 10g 可以顯著增強幾乎任何資料庫應用程式的可管理性、效能和可用性。分割槽功能可用於前沿應用程式,分割槽功能確實能夠成為保障這些應用程式成功的關鍵技術成分。同時,分割槽功能也可用於較為普通的資料庫應用,來簡化這些應用的管理工作,降低管理成本。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/64429/viewspace-915806/,如需轉載,請註明出處,否則將追究法律責任。

相關文章