Oracle 分區功能可以提高許多應用程序的可管理性性能與可用性通過分區功能可以將表索引和索引組織表進一步細分為段從而能夠更精確地管理和訪問這些數據庫對象Oracle 提供了種類繁多的分區方案以滿足每種業務要求而且因為在 SQL 語句中分區是完全透明的所以該功能幾乎可應用於任何應用程序
分區功能的優勢
分區功能通過改善可管理性性能和可用性從而為各式應用程序帶來了極大的好處通常分區可以使某些查詢以及維護操作的性能大大提高此外分區還可以極大簡化常見的管理任務通過分區數據庫設計人員和管理員能夠解決前沿應用程序帶來的一些難題分區是構建千兆字節數據系統或超高可用性系統的關鍵工具
分區功能的基本知識
分區功能能夠將表索引或索引組織表進一步細分為段這些數據庫對象的段叫做分區每個分區有自己的名稱還可以選擇自己的存儲特性從數據庫管理員的角度來看一個分區後的對象具有多個段這些段既可進行集體管理也可單獨管理這就使數據庫管理員在管理分區後的對象時有相當大的靈活性但是從應用程序的角度來看分區後的表與非分區表完全相同使用 SQL DML 命令訪問分區後的表時無需任何修改
表的分區是通過分區鍵來實現的分區鍵指的是一些列這些列決定了某一行所在的分區Oracle 數據庫 g 提供了六項技術用於對表進行分區
范圍分區
每個分區都由一個分區鍵值范圍指定(對於一個以日期列作為分區鍵的表 年 月分區包含分區鍵值為從 年 月 日到 年 月 日的行)
列表分區
每個分區都由一個分區鍵值列表指定(對於一個地區列作為分區鍵的表北美分區可能包含值加拿大美國和墨西哥)
散列分區
將散列算法用於分區鍵來確定指定行所在的分區
組合范圍散列分區
范圍和散列分區技術的組合通過該組合首先對表進行范圍分區然後針對每個單獨的范圍分區再使用散列分區技術進一步細分索引組織表只能進行范圍分區
組合范圍列表分區
范圍和列表分區技術的組合通過該組合首先對表進行范圍分區然後針對每個單獨的范圍分區再使用列表分區技術進一步細分索引組織表可以按范圍列表或散列進行分區
Oracle 數據庫 g 還提供了三種類型的分區索引
本地索引
本地索引是其分區方式與其所在基礎表的分區方式一模一樣的索引本地索引的每個分區僅對應於其所在基礎表的一個分區
全局分區索引
全局分區索引是使用不同於其所在表的分區鍵進行分區的索引其所在表可以是分區表或非分區表全局分區的索引可以使用范圍或散列分區進行分區例如某個表可以按月份進行范圍分區因此具有十二個分區而該表上的索引則可以使用不同的分區鍵進行范圍分區從而具有不同的分區數量
全局非分區索引
全局非分區索引基本上和非分區表的索引一樣索引結構是不分區的
Oracle 提供了一系列豐富的技術可用於對表索引和索引組織表進行分區因此可以針對任何業務環境中的任何應用程序進行最佳的分區 Oracle 還提供一套完整的 SQL 命令用於管理分區表其中包括添加新分區刪除分區分拆分區以及合並分區的命令
用分區功能提高可管理性
通過 Oracle 分區功能可將表和索引分成更多更小的可管理單元從而使數據庫管理員能以化整為零個個擊破的方式管理數據
使用分區功能維護操作可集中於表的特定部分例如數據庫管理員可以只對表的一部分做備份而不必對整個表做備份對整個數據庫對象的維護操作可以在每個分區的基礎上進行從而將維護工作分解成更容易管理的小塊
利用分區功能提高可管理性的一個典型用法是支持數據倉庫中的滾動視窗加載進程假設數據庫管理員每周向表中加載新數據可以對該表進行范圍分區使每個分區包含一周的數據這樣加載進程只是簡單地添加新的分區添加一個分區的操作比修改整個表效率高很多因為 DBA 不需要修改任何其他分區
用分區功能提高性能
由於限制了所檢查或操作的數據數量同時支持並行任務執行Oracle 分區功能實現了性能上增益這些特性包括
分區修整
分區修整是用分區功能提高性能的最簡單最有價值的手段分區修整常常能夠將查詢性能提高幾個數量級例如假設某個應用程序包含一個存儲訂單歷史記錄的 Orders 表並且此表已按周分區查詢一周的訂單只需訪問該訂單表的一個分區如果該訂單表包含兩年的歷史記錄這個查詢只需要訪問一個分區而不是一百零四個該查詢的執行速度因為分區修整而有可能快一百倍分區修整能與所有其他 Oracle 性能特性協作Oracle 能將分區修整功能與任何索引技術聯接技術或並行訪問方法結合使用
分區智能聯接
分區功能可以通過稱為分區智能聯接的技術提高多表聯接的性能當兩個表要聯接在一起而且每個表都用聯接鍵來分區時就可以使用分區智能聯接分區智能聯接將大型聯接分解成較小的發生在各個分區間的聯接從而用較少的時間完成全部聯接這就給串行和並行的執行都能帶來顯著的性能改善
用分區功能提高可用性
分區的數據庫對象具有分區獨立性該分區獨立性特點可能是高可用性戰略的一個重要部分例如如果分區表的一個分區不能用但該表的所有其他分區仍然保持在線並可用那麼這個應用可以繼續針對該分區表執行查詢和事務處理只要不是訪問不可用的分區數據庫操作仍然能夠成功運行
數據庫管理員可以指定各分區存放在不同的表空間裡從而讓管理員隔離其它表分區針對單個分區進行備份與恢復操作還有分區功能可以減少計劃停機時間由於分區功能改善了性能使數據庫管理員能用相對較少的時間完成大型數據庫對象的維護工作
未來發展方向
自從引入分區技術以來Oracle 公司在每次推出重要版本時都會增加新的分區方法Oracle 引入了范圍分區功能Oraclei 引入了散列和組合范圍散列分區功能Oraclei 引入了列表分區功能在最新版本 Oracle 數據庫 g 中則增強了用於索引組織表和全局分區索引的分區策略並且擴展了其用於所有分區維護操作的並發索引維護功能Oracle 公司致力於不斷完善分區技術確保滿足所有的業務需求
結論
具有 Oracle 分區功能的 Oracle 數據庫 g 可以顯著增強幾乎任何數據庫應用程序的可管理性性能和可用性分區功能可用於前沿應用程序分區功能確實能夠成為保障這些應用程序成功的關鍵技術成分同時分區功能也可用於較為普通的數據庫應用來簡化這些應用的管理工作降低管理成本
From:http://tw.wingwit.com/Article/program/Oracle/201311/16823.html