教你設計大型Oracle資料庫
來源:互聯網
上載者:User
一、概論
超大型系統的特點為:
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。