• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 數據庫進階:超大型Oracle數據庫應用系統的設計方法

    發表于:2008-05-05來源:作者:點擊數: 標簽:數據庫oracleOracleORACLE系統
    一、概論 超大型系統的特點為: 1.處理的用戶數一般都超過百萬,有的還超過千萬,數據庫的數據量一般超過1TB; 2.系統必須提供實時響應功能,系統需不停機運行,要求系統有很高的可用性及可擴展性。 為了能達到以上要求,除了需要 性能 優越的計算機和海量存儲
    一、概論

      超大型系統的特點為:

      1.處理的用戶數一般都超過百萬,有的還超過千萬,數據庫的數據量一般超過1TB;

      2.系統必須提供實時響應功能,系統需不停機運行,要求系統有很高的可用性及可擴展性。

      為了能達到以上要求,除了需要性能優越的計算機和海量存儲設備外,還需要先進的數據庫結構設計和優化的應用系統。

      一般的超大型系統采用雙機或多機集群系統。下面以數據庫采用Oracle 8.0.6并行服務器為例來談談超大型數據庫設計方法:

      ·確定系統的ORACLE并行服務器應用劃分策略

      ·數據庫物理結構的設計

      ·系統硬盤的劃分及分配

      ·備份及恢復策略的考慮

      二、Oracle并行服務器應用劃分策略

      Oracle并行服務器允許不同節點上的多個INSTANCE實例同時訪問一個數據庫,以提高系統的可用性、可擴展性及性能。Oracle并行服務器中的每個INSTANCE實例都可將共享數據庫中的表或索引的數據塊讀入本地的緩沖區中,這就意味著一個數據塊可存在于多個INSTANCE實例的SGA區中。那么保持這些緩沖區的數據的一致性就很重要。Oracle使用 PCM( Parallel Cache Management) 鎖維護緩沖區的一致性,Oracle同時通過I DLM( 集成的分布式鎖管理器)實現PCM 鎖,并通過專門的LCK進程實現INSTANCE實例間的數據一致。

      考慮這種情況:INSTANCE1對BLOCK X塊修改,這時INSTANCE2對BLOCK X塊也需要修改。Oracle并行服務器利用PCM鎖機制,使BLOCK X從INSTANCE 1的SGA區寫入數據庫數據文件中,又從數據文件中把BLOCK X塊讀入INSTANCE2的SGA區中。發生這種情況即為一個PING。PING使原來1個MEMORY IO可以完成的工作,變成2個DISK IO和1個 MEMORY IO才能夠完成,如果系統中有過多的PING,將大大降低系統的性能。

      Oracle并行服務器中的每個PCM鎖可管理多個數據塊。PCM鎖管理的數據塊的個數與分配給一個數據文件的PCM鎖的個數及該數據文件的大小有關。當INSTANCE 1和INSTANCE 2要操作不同的BLOCK,如果這些BLOCK 是由同一個PCM 鎖管理的,仍然會發生PING。這些PING稱為FALSE PING。當多個INSTANCE訪問相同的BLOCK而產生的PING是TRUE PING。

      合理的應用劃分使不同的應用訪問不同的數據,可避免或減少TRUE PING;通過給FALSE PING較多的數據文件分配更多的PCM鎖可減少 FALSE PING的次數,增加PCM鎖不能減少TRUE PING。

      所以, Oracle并行服務器設計的目的是使系統交易處理合理的分布在INSTANCE實例間,以最小化PING,同時合理的分配PCM鎖,減少FALSE PING。設計的關鍵是找出可能產生的沖突,從而決定應用劃分的策略。應用劃分有如下四種方法:

      1.根據功能模塊劃分,不同的節點運行不同的應用

      2.根據用戶劃分,不同類型的用戶運行在不同的節點上

      3.根據數據劃分,不同的節點訪問不同的數據或索引

      4.根據時間劃分,不同的應用在不同的時間段運行

      應用劃分的兩個重要原則是使PING最小化及使各節點的負載大致均衡。

      三、數據庫物理結構的設計

      數據庫物理結構設計包括確定表及索引的物理存儲參數,確定及分配數據庫表空間,確定初始的回滾段,臨時表空間,redo log files等,并確定主要的初始化參數。物理設計的目的是提高系統的性能。整個物理設計的參數可以根據實際運行情況作調整。

      表及索引數據量估算及物理存儲參數的設置

      表及索引的存儲容量估算是根據其記錄長度及估算的最大記錄數確定的。在容量計算中考慮了數據塊的頭開銷及記錄和字段的頭開銷等等。表及索引的initial和next存儲參數一般設為相等,pctincrease設為0。

      表空間的設計

      Oracle數據庫的表和索引是透過表空間tablespace存儲在數據庫中的。在tablespace設計時一般作以下考慮:

      1、一般較大的表或索引單獨分配一個tablespace。

      2、Read only對象或Read mostly對象分成一組,存在對應的tablespace中。

      3、若tablespace中的對象皆是read only對象,可將tablespace設置成read only模式,在備份時,read only tablespace只需備份一次。

      4、高頻率insert的對象分成一組,存在對應的tablespace中。

      5、增、刪、改的對象分成一組,存在對應的tablespace中。

      6、表和索引分別存于不同的tablespace。

      7、存于同一個 tablespace中的表(或索引)的extent 大小最好成倍數關系,有利于空間的重利用和減少碎片。

      DB BLOCK SIZE

      超大型數據庫DB BLOCK SIZE一般在4KB 至 64KB,而最常用的是8KB、 16KB或32KB。選用較大的DB BLOCK SIZE可使INDEX的高度降低,也會提高IO效率。

      Redo Log Files

      Oracle進程redo log writer (LGWR)將日志寫入日志文件。一般日志文件最好建在專用的鏡像盤上。日志文件組的個數及文件的大小的設定與系統交易量的大小有關。ORACLE并行服務器中每個INSTANCE使用各自的一組rego log files。一般的每組日志文件的個數為3-7個,每個的大小為200MB-500MB。

      數據文件大小

      建議用標準的文件大小,如200M、1GB、2GB、4GB、8GB等,可簡化空間的維護工作。

      回滾段

      回滾段一般建在專用的表空間中。每一個INSTANCE實例擁有各自的回滾段。設置回滾段的一般原則是: initial 及 next 存儲參數的值是相等的,同時還是DB BLOCK SIZE的倍數。每個回滾段的minextents設為20,optimal參數的值保證回滾段縮小時不低于20個extents。

      臨時表空間

      臨時表空間一般建在專用的表空間中。每一個INSTANCE實例擁有各自的臨時表空間。這樣使用臨時表空間時不會有PING。設置臨時表空間的initial=next。

      四、系統硬盤的劃分及分配

      在多機集群環境下,Oracle并行服務器通過操作系統提供的DRD服務來共享同一個數據庫。每一個INSTANCE對數據庫的數據文件的訪問都是通過該數據文件所在的DRD服務進行的。

      考慮以下情況:主機1上有DRD服務1,該服務對應的數據文件有1、2、13、35、67等,這時如果主機2上的INSTANCE2需要讀取數據文件13,通過DRD服務調度,主機1通過DRD服務訪問磁盤陣列上的數據文件13,把INSTANCE2需要的數據讀到內存,然后通過MEMORY IO把數據傳到主機2的INSTANCE2。寫操作是讀操作的逆過程。

      通過以上分析可知,系統硬盤的劃分及分配的原則是盡量減少MEMORY IO。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>