<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-86  評論-33  文章-0  trackbacks-0

    Oracle提供了分區技術以支持VLDB(Very Large DataBase)。分區表通過對分區列的判斷,把分區列不同的記錄,放到不同的分區中。分區完全對應用透明。


    Oracle的分區表可以包括多個分區,每個分區都是一個獨立的段(SEGMENT),可以存放到不同的表空間中。查詢時可以通過查詢表來訪問各個分區中的數據,也可以通過在查詢時直接指定分區的方法來進行查詢。


    分區提供以下優點:


    由于將數據分散到各個分區中,減少了數據損壞的可能性;


    可以對單獨的分區進行備份和恢復;


    可以將分區映射到不同的物理磁盤上,來分散IO;


    提高可管理性、可用性和性能。


    Oracle提供了以下幾種分區類型:


    范圍分區(range);


    哈希分區(hash);


    列表分區(list);


    范圍-哈希復合分區(range-hash);


    范圍-列表復合分區(range-list)。

     

    索引也可以進行分區,分區索引有兩種類型:global和local。對于local索引,每一個表分區對應一個索引分區,當表的分區發生變化時,索引的維護由Oracle自動進行。對于global索引,可以選擇是否分區,而且索引的分區可以不與表分區相對應。當對分區進行維護操作時,通常會導致全局索引的INVALDED,必須在執行完操作后REBUILD。Oracle9i提供了UPDATE GLOBAL INDEXES語句,可以使在進行分區維護的同時重建全局索引。

    全局索引可以包含多個分區的值 局部索引比全局索引容易管理,而全局索引比較快
    注意:不能為散列分區 或者 子分區創建全局索引

    如果表中預期的數據量較大,通常都需要考慮使用分區表,確定使用分區表后,還要確定什么類型的分區(range partition、hash partition、list partition等)、分區區間大小等。分區的創建最好與程序有某種默契,偶曾經創建分區表,按自然月份定義分區的,但程序卻在查詢時默認的開始時間與結束時間是:當前日期-30至當前日期,比如當天是9.18號,那查詢條件被產生為8.18-9.18,結果分區后并不沒有大幅提高性能,后來對程序的查詢日期做了調整,按自然月查詢,系統的負載小了很多。

    從Oracle8.0開始支持表分區(MSSQL2005開始支持表分區)。

    Oracle9i 分區能夠提高許多應用程序的可管理性、性能與可用性。分區可以將表、索引及索引編排表進一步劃分,從而可以更精細地對這些數據庫對象進行管理和訪問。Oracle 提供了種類繁多的分區方案以滿足所有的業務需要。另外,由于在 SQL 語句中是完全透明的,所以分區可以用于幾乎所有的應用程序。

    分區表允許將數據分成被稱為分區甚至子分區的更小的更好管理的塊。索引也可以這么分區。每個分區可以被單獨管理,可以不依賴于其他分區而單獨發揮作用,因此提供了一個更有利于可用性和性能的結構。

    分區可以提高可管理性、性能與可用性,從而給各種各樣的應用程序帶來極大的好處。通常,分區可以使某些查詢以及維護操作的性能大大提高。此外,分區還能夠在很大程度上簡化日常管理任務。分區還使數據庫設計人員和管理員能夠解決尖端應用程序帶來的最難的問題。分區是建立上億萬字節數據系統或需要極高可用性系統的關鍵工具。

    在多CPU配置環境下,如果打算使用并行執行,則分區提供了另一種并行的方法。通過給表或索引的不同分區分配不同的并行執行服務器,就可以并行執行對分區表和分區索引的操作。

    表或索引的分區和子分區都共享相同的邏輯屬性。例如表的所有分區或子分區共享相同的列和約束定義,一個索引的分區或子分區共享相同的索引選項。然而它們可以具有不同的物理屬性如表空間。

    盡管不需要將表或索引的每個分區或子分區放在不同的表空間,但這樣做更好。將分區存儲到不同的表空間能夠

    l 減少數據在多個分區中沖突的可能性

    l 可以單獨備份和恢復每個分區

    l 控制分區與磁盤驅動器之間的映射對平衡I/O 負載是重要的

    l 改善可管理性可用性和性能

    分區操作對現存的應用和運行在分區表上的標準DML 語句來說是透明的。但是可以通過在DML 中使用分區擴展表或索引的名字來對應用編程,使其利用分區的優點。

    可以使用SQL*Loader、Import 和Export 工具來裝載或卸載分區表中的數據。這些工具都是支持分區和子分區的。

    分區的方法Oracle9i 提供了如下5種分區方法:

     

    l 范圍分區Range

    l 散列分區Hash

    l 列表分區List

    l 組合范圍-散列分區Range-Hash

    l 組合范圍-列表分區Range-List

    可對索引和表分區。全局索引只能按范圍分區,但可以將其定義在任何類型的分區或非分區表上。通常全局索引比局部索引需要更多的維護。

    一般組建局部索引,以便反映其基礎表的結構。它與基礎表是等同分區的,即它與基礎

    表在同樣的列上分區,創建同樣數量的分區或子分區,設置與基礎表相對應的同樣的分區邊界。對局部索引而言,當維護活動影響分區時,會自動維護索引分區。這保證了索引與基礎表之間的等同分區。

    關于范圍分區Range:

    要想將行映射到基于列值范圍的分區,就使用范圍分區方法。當數據可以被劃分成邏輯范圍時如年度中的月份,這種類型的分區就有用了。當數據在整個范圍中能被均等地劃分時性能最好。如果靠范圍的分區會由于不均等的劃分而導致分區在大小上明顯不同時,就需要考慮其他的分區方法。

    關于散列分區Hash:

    如果數據不那么容易進行范圍分區,但為了性能和管理的原因又想分區時,就使用散列分區方法。散列分區提供了一種在指定數量的分區中均等地劃分數據的方法。基于分區鍵的散列值將行映射到分區中。創建和使用散列分區會給你提供了一種很靈活的放置數據的方法,因為你可以通過在I/O 驅動器之間播撒(摘掉)這些均等定量的分區,來影響可用性和性能。

    關于列表分區List:

    當你需要明確地控制如何將行映射到分區時,就使用列表分區方法。可以在每個分區的描述中為該分區列指定一列離散值,這不同于范圍分區,在那里一個范圍與一個分區相關,這也不同于散列分區,在那里用戶不能控制如何將行映射到分區。列表分區方法是特意為遵從離散值的模塊化數據劃分而設計的。范圍分區或散列分區不那么容易做到這一點。進一步說列表分區可以非常自然地將無序的和不相關的數據集進行分組和組織到一起。

    與范圍分區和散列分區所不同,列表分區不支持多列分區。如果要將表按列分區,那么分區鍵就只能由表的一個單獨的列組成,然而可以用范圍分區或散列分區方法進行分區的所有的列,都可以用列表分區方法進行分區。

    關于組合范圍-散列分區:

    范圍和散列技術的組合,首先對表進行范圍分區,然后用散列技術對每個范圍分區再次分區。給定的范圍分區的所有子分區加在一起表示數據的邏輯子集。

    關于組合范圍-列表分區:

    范圍和列表技術的組合,首先對表進行范圍分區,然后用列表技術對每個范圍分區再次分區。與組合范圍-散列分區不同的是,每個子分區的所有內容表示數據的邏輯子集,由適當的范圍和列表分區設置來描述。

    創建或更改分區表時可以指定行移動子句,即ENABLE ROW MOVEMENT 或者DISABLE ROW MOVEMENT ,當其鍵被更改時,該子句啟用或停用將行遷移到一個新的分區。默認值為DISABLE ROW MOVEMENT。本產品(項目)使用ENABLE ROW MOVEMENT子句。


    分區技術能夠提高數據庫的可管理性:

    使用分區技術,維護操作可集中于表的特定部分。例如,數據庫管理員可以只對表的一部分做備份,而不必對整個表做備份。對整個數據庫對象的維護操作,可以在每個分區的基礎上進行,從而將維護工作分解成更容易管理的小塊。

    分區技術提高可管理性的一個典型用法是支持數據倉庫中的‘滾動視窗’加載進程。假設數據庫管理員每周向表中加載新數據。該表可以是范圍分區,以便每個分區包含一周的數據。加載進程只是簡單地添加新的分區。添加一個新分區的操作比修改整個表效率高很多,因為數據庫管理員不需要修改任何其他分區。從分區后的表中去除數據也是一樣。你只要用一個很簡便快捷的數據字典操作刪掉一個分區,而不必發出使用大量資源和調動所有要刪除的數據的 ‘DELETE’ 命令。

    分區技術能夠提高數據庫的性能:

    由于減少了所檢查或操作的數據數量,同時允許并行執行,Oracle9i 的分區功能提供了性能上的優勢。這些性能包括:

    l 分區修整:分區修整是用分區技術提高性能的最簡單最有價值的手段。分區修整常常能夠將查詢性能提高幾個數量級。例如,假定應用程序中有包含定單歷史記錄的定單表,該表用周進行了分區。查詢一周的定單只需訪問該定單表的一個分區。如果該定單表包含兩年的歷史記錄,這個查詢只需要訪問一個而不是一百零四個分區。該查詢的執行速度因為分區修整而有可能快一百倍。分區修整能與所有其他 Oracle 性能特性協作。Oracle 公司將把分區修整技術與索引技術、連結技術和并行訪問方法一起聯合使用。

    l 分區智能聯接:分區功能可以通過稱為分區智能聯接的技術提高多表聯接的性能。當兩個表要聯接在一起,而且每個表都用聯接關鍵字來分區時,就可以使用分區智能聯接。分區智能聯接將大型聯接分解成較小的發生在各個分區間的聯接,從而用較少的時間完成全部聯接。這就給串行和并行的執行都能帶來顯著的性能改善。

    l 更新和刪除的并行執行:分區功能能夠無限地并行執行 UPDATE、DELETE 與 MERGE 語句。當訪問分區或未分區的數據庫對象時Oracle 將并行處理 SELECT 與 INSERT 語句。當不使用位圖索引時,也可以對分區或未分區的數據庫對象并行處理 UPDATE、DELETE 和 MERGE 語句。為了對有位圖索引的對象并行處理那些操作,目標表必須先分區。這些 SQL 語句的并行執行可以大大提高性能,特別是提高 UPDATE 與 DELETE 或 MERGE 操作涉及大量數據時的性能。

    分區技術提高可用性:

    分區的數據庫對象具有分區獨立性。該分區獨立性特點可能是高可用性戰略的一個重要部分,例如,如果分區表的分區不能用,但該表的所有其他分區仍然保持在線并可用。那么這個應用程序可以繼續針對該分區表執行查詢和事務處理,只要不是訪問那個不可用的分區,數據庫操作仍然能夠成功運行。 數據庫管理員可以指定各分區存放在不同的表空間里,從而讓管理員獨立于其它表分區針對每個分區進行備份與恢復操作。 還有,分區功能可以減少計劃停機時間。性能由于分區功能得到了改善,使數據庫管理員在相對較小的批處理窗口完成大型數據庫對象的維護工作。

    Oracle最大允許存在多少個分區呢?

    我們可以從Oracle的Concepts手冊上找到這個信息,對于Oracle9iR2:

    Tables can be partitioned into up to 64,000 separate partitions.

    對于Oracle10gR2,Oracle增強了分區特性:

    Tables can be partitioned into up to 1024K-1 separate partitions.

    關于何時應該進行分區,Oracle有如下建議:

    ■ Tables greater than 2GB should always be considered for partitioning.
    ■ Tables containing historical data, in which new data is added into the newest partition. A typical example is a historical table where only the current month's data is updatable and the other 11 months are read only.

    posted on 2008-06-11 12:43 Derek.Guo 閱讀(1009) 評論(0)  編輯  收藏 所屬分類: Database
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 亚洲av午夜福利精品一区人妖| 免费大黄网站在线观看| 亚洲经典在线中文字幕| 久久亚洲免费视频| 亚洲bt加勒比一区二区| 国产成人一区二区三区视频免费| 亚洲欧洲精品无码AV| 中文字幕不卡免费视频| 亚洲成av人影院| 日韩免费无码一区二区三区| 亚洲国产成人久久综合一| 十九岁在线观看免费完整版电影| 中文字幕亚洲第一在线| 91九色精品国产免费| 亚洲日韩国产一区二区三区在线| 日本一区免费电影| 国产大片免费天天看| 亚洲AV成人片色在线观看高潮| 91福利免费视频| 亚洲欧洲日韩极速播放 | EEUSS影院WWW在线观看免费| 中文字幕亚洲电影| 99热这里只有精品6免费| 国产AV旡码专区亚洲AV苍井空 | 日本亚洲欧洲免费天堂午夜看片女人员 | 久久久无码精品亚洲日韩京东传媒 | 亚洲色图视频在线观看| 女人18毛片免费观看| 特级毛片爽www免费版| 亚洲AV无码专区国产乱码4SE| 国产香蕉免费精品视频| 亚洲AV无码国产剧情| a级亚洲片精品久久久久久久| 久久精品视频免费播放| 亚洲人成网站在线播放2019| 久久久无码精品亚洲日韩软件| 2021精品国产品免费观看| 亚洲精品色在线网站| 久久亚洲精品中文字幕无码| 毛片大全免费观看| 国产一二三四区乱码免费|